Assembly Diffs
linux arm64
Diffs are based on 2,259,470 contexts (1,008,044 MinOpts, 1,251,426 FullOpts).
MISSED contexts: 159 (0.01%)
Overall (-42,568 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm64.checked.mch |
14,972,964 |
-444 |
| benchmarks.run_pgo.linux.arm64.checked.mch |
79,903,244 |
-3,824 |
| benchmarks.run_tiered.linux.arm64.checked.mch |
22,276,872 |
-168 |
| coreclr_tests.run.linux.arm64.checked.mch |
509,740,232 |
-5,976 |
| libraries.pmi.linux.arm64.checked.mch |
76,281,012 |
-3,560 |
| libraries_tests.run.linux.arm64.Release.mch |
400,018,960 |
-23,420 |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
165,110,104 |
-3,836 |
| realworld.run.linux.arm64.checked.mch |
15,918,288 |
-1,340 |
FullOpts (-42,568 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm64.checked.mch |
14,713,212 |
-444 |
| benchmarks.run_pgo.linux.arm64.checked.mch |
54,354,872 |
-3,824 |
| benchmarks.run_tiered.linux.arm64.checked.mch |
4,937,908 |
-168 |
| coreclr_tests.run.linux.arm64.checked.mch |
160,832,376 |
-5,976 |
| libraries.pmi.linux.arm64.checked.mch |
76,161,028 |
-3,560 |
| libraries_tests.run.linux.arm64.Release.mch |
183,280,056 |
-23,420 |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
151,612,828 |
-3,836 |
| realworld.run.linux.arm64.checked.mch |
15,336,748 |
-1,340 |
Example diffs
benchmarks.run.linux.arm64.checked.mch
-24 (-12.50%) : 24304.dasm - System.Collections.IterateForEach`1[System.Canon]:ImmutableStack():System.Canon:this (FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
; V01 loc0 [V01,T04] ( 3, 4 ) ref -> x20 ld-addr-op class-hnd <System.__Canon>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Collections.Immutable.ImmutableStack`1[System.__Canon]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def <System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]>
@@ -23,22 +23,21 @@
; V12 tmp7 [V12,T06] ( 2, 3 ) ref -> x21 "field V03._originalStack (fldOffset=0x0)" P-INDEP
; V13 tmp8 [V13,T00] ( 8, 27 ) ref -> x22 "field V03._remainingStack (fldOffset=0x8)" P-INDEP
;* V14 cse0 [V14,T07] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V15 rat0 [V15,T03] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
+;* V15 rat0 [V15,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V16 rat1 [V16,T05] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V17 rat2 [V17,T02] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V17 rat2 [V17,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M64146_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
mov fp, sp
- str x0, [fp, #0x18]
mov x19, x0
; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M64146_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=1 PerfScore 4.00
+G_M64146_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x20, xzr
; gcrRegs +[x20]
ldr x0, [x19, #0xA0]
@@ -54,16 +53,10 @@ G_M64146_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x21]
mov x22, x1
; gcrRegs +[x22]
- ldr x0, [x19]
- ; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x20]
- cbnz x0, G_M64146_IG04
b G_M64146_IG04
- ;; size=64 bbWeight=1 PerfScore 27.00
+ ;; size=44 bbWeight=1 PerfScore 14.00
G_M64146_IG03: ; bbWeight=2, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x0-x1 x20]
mov x0, x22
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableStack`1[System.__Canon]:Peek():System.__Canon:this
@@ -110,13 +103,13 @@ G_M64146_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 0.50
G_M64146_IG09: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-Total bytes of code 192, prolog size 20, PerfScore 113.50, instruction count 48, allocated bytes for code 192 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
+Total bytes of code 168, prolog size 16, PerfScore 99.50, instruction count 42, allocated bytes for code 168 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -127,7 +120,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -136,8 +129,8 @@ Unwind Info:
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
E6 save_next
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
E4 end
-28 (-7.61%) : 4135.dasm - System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
@@ -38,8 +38,8 @@ G_M29540_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1]
ldr w14, [x19, #0x60]
- cbnz w14, G_M29540_IG08
- cbz x1, G_M29540_IG09
+ cbnz w14, G_M29540_IG07
+ cbz x1, G_M29540_IG08
add x14, x1, #172
; byrRegs +[x14]
mov w15, #1
@@ -47,7 +47,7 @@ G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180
mov w0, w12
casal w0, w15, [x14]
str w0, [fp, #0x24] // [V07 tmp3]
- cbnz w0, G_M29540_IG10
+ cbnz w0, G_M29540_IG09
mov w14, #7
; byrRegs -[x14]
str w14, [x1, #0x94]
@@ -59,21 +59,10 @@ G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180
; gcrRegs -[x15]
; byrRegs -[x14]
ldrb w0, [x1, #0xBA]
- cbnz w0, G_M29540_IG04
+ cbz w0, G_M29540_IG04
;; size=68 bbWeight=1 PerfScore 19.50
-G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x0, [x0]
- ; gcrRegs +[x0]
- ldrb w0, [x0, #0x9D]
- ; gcrRegs -[x0]
- cbz w0, G_M29540_IG05
- b G_M29540_IG05
- ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -91,7 +80,7 @@ G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x0-x1 x15]
; byrRegs -[x14]
;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M29540_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M29540_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
ldr x0, [fp, #0x18] // [V01 arg1]
@@ -106,17 +95,17 @@ G_M29540_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x0-x2 x19-x20]
; gcr arg pop 0
;; size=32 bbWeight=1 PerfScore 11.00
-G_M29540_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
cmp w0, #0xD1FFAB1E
cset x0, eq
;; size=8 bbWeight=1 PerfScore 1.00
-G_M29540_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M29540_IG06: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x40
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M29540_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
@@ -129,7 +118,7 @@ G_M29540_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M29540_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29540_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -146,7 +135,7 @@ G_M29540_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG09: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1]
; GC ptr vars +{V00 V01}
mov x0, x1
@@ -163,14 +152,14 @@ G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
; gcr arg pop 0
brk_unix #0
;; size=32 bbWeight=0 PerfScore 0.00
-G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
add x3, fp, #64
str x3, [sp, #0x18]
;; size=16 bbWeight=0 PerfScore 0.00
-G_M29540_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -186,7 +175,7 @@ G_M29540_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
brk_unix #0
;; size=32 bbWeight=0 PerfScore 0.00
-Total bytes of code 368, prolog size 32, PerfScore 50.00, instruction count 92, allocated bytes for code 368 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
+Total bytes of code 340, prolog size 32, PerfScore 45.25, instruction count 85, allocated bytes for code 340 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -197,7 +186,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -230,4 +219,4 @@ Unwind Info:
*************** EH table for System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M29540_IG05..G_M29540_IG06) handled by [G_M29540_IG11..END) (class: 1000001)
+EH#0: try [G_M29540_IG04..G_M29540_IG05) handled by [G_M29540_IG10..END) (class: 1000001)
-28 (-7.61%) : 4167.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
@@ -38,8 +38,8 @@ G_M23091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1]
ldr w14, [x19, #0x60]
- cbnz w14, G_M23091_IG08
- cbz x1, G_M23091_IG09
+ cbnz w14, G_M23091_IG07
+ cbz x1, G_M23091_IG08
add x14, x1, #172
; byrRegs +[x14]
mov w15, #1
@@ -47,7 +47,7 @@ G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180
mov w0, w12
casal w0, w15, [x14]
str w0, [fp, #0x24] // [V07 tmp3]
- cbnz w0, G_M23091_IG10
+ cbnz w0, G_M23091_IG09
mov w14, #4
; byrRegs -[x14]
str w14, [x1, #0x94]
@@ -59,21 +59,10 @@ G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180
; gcrRegs -[x15]
; byrRegs -[x14]
ldrb w0, [x1, #0xBA]
- cbnz w0, G_M23091_IG04
+ cbz w0, G_M23091_IG04
;; size=68 bbWeight=1 PerfScore 19.50
-G_M23091_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M23091_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x0, [x0]
- ; gcrRegs +[x0]
- ldrb w0, [x0, #0x9D]
- ; gcrRegs -[x0]
- cbz w0, G_M23091_IG05
- b G_M23091_IG05
- ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M23091_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -91,7 +80,7 @@ G_M23091_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x0-x1 x15]
; byrRegs -[x14]
;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M23091_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M23091_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
ldr x0, [fp, #0x18] // [V01 arg1]
@@ -106,17 +95,17 @@ G_M23091_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x0-x2 x19-x20]
; gcr arg pop 0
;; size=32 bbWeight=1 PerfScore 11.00
-G_M23091_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
cmp w0, #0xD1FFAB1E
cset x0, eq
;; size=8 bbWeight=1 PerfScore 1.00
-G_M23091_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M23091_IG06: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x40
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M23091_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
@@ -129,7 +118,7 @@ G_M23091_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M23091_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23091_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -146,7 +135,7 @@ G_M23091_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG09: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1]
; GC ptr vars +{V00 V01}
mov x0, x1
@@ -163,14 +152,14 @@ G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
; gcr arg pop 0
brk_unix #0
;; size=32 bbWeight=0 PerfScore 0.00
-G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
add x3, fp, #64
str x3, [sp, #0x18]
;; size=16 bbWeight=0 PerfScore 0.00
-G_M23091_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -186,7 +175,7 @@ G_M23091_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
brk_unix #0
;; size=32 bbWeight=0 PerfScore 0.00
-Total bytes of code 368, prolog size 32, PerfScore 50.00, instruction count 92, allocated bytes for code 368 (MethodHash=03bba5cc) for method System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
+Total bytes of code 340, prolog size 32, PerfScore 45.25, instruction count 85, allocated bytes for code 340 (MethodHash=03bba5cc) for method System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -197,7 +186,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -230,4 +219,4 @@ Unwind Info:
*************** EH table for System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M23091_IG05..G_M23091_IG06) handled by [G_M23091_IG11..END) (class: 1000001)
+EH#0: try [G_M23091_IG04..G_M23091_IG05) handled by [G_M23091_IG10..END) (class: 1000001)
-24 (-0.36%) : 20012.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 149 single block inlinees; 52 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 20, 11 ) ref -> x22 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Binder>
+; V00 this [V00,T06] ( 20, 11 ) ref -> x22 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Binder>
; V01 arg1 [V01,T01] ( 33, 17.50) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
; V02 arg2 [V02,T00] ( 53, 18 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
; V03 arg3 [V03,T14] ( 5, 3.50) ushort -> x24 single-def
; V04 arg4 [V04,T09] ( 10, 6 ) ubyte -> x23 single-def
; V05 arg5 [V05,T02] ( 32, 17 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag>
-; V06 loc0 [V06,T06] ( 26, 13 ) ubyte -> x25
+; V06 loc0 [V06,T08] ( 23, 11.50) ubyte -> x25
;* V07 loc1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.BoundNamespaceExpression>
;* V08 loc2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
;* V09 loc3 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.BoundUnconvertedAddressOfOperator>
@@ -574,7 +574,7 @@
; V563 cse0 [V563,T186] ( 3, 1.50) ref -> x2 "CSE - conservative"
; V564 cse1 [V564,T187] ( 3, 1.50) ref -> x2 "CSE - conservative"
; V565 cse2 [V565,T04] ( 31, 15.50) int -> x26 multi-def "CSE - aggressive"
-; V566 cse3 [V566,T08] ( 24, 12 ) long -> x27 multi-def "CSE - aggressive"
+; V566 cse3 [V566,T07] ( 24, 12 ) long -> x27 multi-def "CSE - aggressive"
; V567 rat0 [V567,T56] ( 3, 3 ) int -> x25 "ReplaceWithLclVar is creating a new local variable"
; V568 rat1 [V568,T57] ( 3, 3 ) int -> x28 "ReplaceWithLclVar is creating a new local variable"
; V569 rat2 [V569,T58] ( 3, 3 ) int -> x7 "ReplaceWithLclVar is creating a new local variable"
@@ -624,7 +624,7 @@ G_M42189_IG02: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg
ldr wzr, [x0]
blr x1
; gcrRegs -[x0]
- cbnz w0, G_M42189_IG168
+ cbnz w0, G_M42189_IG167
;; size=32 bbWeight=1 PerfScore 10.00
G_M42189_IG03: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x12]
@@ -644,7 +644,7 @@ G_M42189_IG04: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x27, x0
- bne G_M42189_IG170
+ bne G_M42189_IG169
ldr x4, [x19, #0x40]
; gcrRegs +[x4]
ldrb w4, [x4, #0x12]
@@ -670,7 +670,7 @@ G_M42189_IG05: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
ldr x6, [x6]
blr x6
; gcrRegs -[x0-x2 x5 x19-x22]
- b G_M42189_IG150
+ b G_M42189_IG149
;; size=52 bbWeight=0.50 PerfScore 5.00
G_M42189_IG06: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x21-x22]
@@ -679,7 +679,7 @@ G_M42189_IG06: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x27, x0
- bne G_M42189_IG171
+ bne G_M42189_IG170
mov x1, x19
; gcrRegs +[x1]
uxth w26, w24
@@ -694,7 +694,7 @@ G_M42189_IG06: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
ldr x4, [x4]
blr x4
; gcrRegs -[x0-x1 x3 x19 x21-x22]
- b G_M42189_IG150
+ b G_M42189_IG149
;; size=68 bbWeight=0.50 PerfScore 7.50
G_M42189_IG07: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x22]
@@ -712,7 +712,7 @@ G_M42189_IG07: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x0-x1 x19-x22]
- b G_M42189_IG150
+ b G_M42189_IG149
;; size=48 bbWeight=0.50 PerfScore 5.00
G_M42189_IG08: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x22]
@@ -860,37 +860,27 @@ G_M42189_IG21: ; bbWeight=0.50, gcrefRegs=200004 {x2 x21}, byrefRegs=0000
ldr x3, [x3]
blr x3
; gcrRegs -[x0 x2 x21]
- b G_M42189_IG168
+ b G_M42189_IG167
;; size=32 bbWeight=0.50 PerfScore 3.75
G_M42189_IG22: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x22]
ldrb w25, [x19, #0x12]
cmp w25, #48
- bhi G_M42189_IG27
- cmp w25, #12
- bhi G_M42189_IG24
- cmp w25, #6
- bhi G_M42189_IG23
- cmp w25, #4
- ccmp w25, #6, z, ne
- beq G_M42189_IG165
- b G_M42189_IG165
- ;; size=44 bbWeight=0.50 PerfScore 5.25
-G_M42189_IG23: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19 x22]
- cmp w25, #10
- beq G_M42189_IG161
- cmp w25, #12
- beq G_M42189_IG165
- b G_M42189_IG165
- ;; size=20 bbWeight=0.50 PerfScore 2.00
-G_M42189_IG24: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19 x22]
- cmp w25, #35
bhi G_M42189_IG26
+ cmp w25, #12
+ bhi G_M42189_IG23
+ cmp w25, #6
+ bls G_M42189_IG164
+ cmp w25, #10
+ beq G_M42189_IG160
+ b G_M42189_IG164
+ ;; size=40 bbWeight=0.50 PerfScore 5.00
+G_M42189_IG23: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+ cmp w25, #35
+ bhi G_M42189_IG25
sub w28, w25, #22
cmp w28, #10
- bhi G_M42189_IG25
+ bhi G_M42189_IG24
mov w0, w28
adr x1, [@RWD16]
ldr w1, [x1, x0, LSL #2]
@@ -898,25 +888,25 @@ G_M42189_IG24: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
add x1, x1, x2
br x1
;; size=44 bbWeight=0.50 PerfScore 4.75
-G_M42189_IG25: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG24: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19 x22]
cmp w25, #35
- beq G_M42189_IG128
- b G_M42189_IG165
+ beq G_M42189_IG127
+ b G_M42189_IG164
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M42189_IG26: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG25: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x22]
cmp w25, #42
- beq G_M42189_IG164
+ beq G_M42189_IG163
cmp w25, #47
- beq G_M42189_IG160
+ beq G_M42189_IG159
cmp w25, #48
- bne G_M42189_IG165
+ bne G_M42189_IG164
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x27, x0
- bne G_M42189_IG172
+ bne G_M42189_IG171
ldr x3, [x19, #0x28]
; gcrRegs +[x3]
mov w2, w26
@@ -932,25 +922,25 @@ G_M42189_IG26: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
ldr x5, [x5]
blr x5
; gcrRegs -[x0-x1 x3-x4 x19-x22]
- b G_M42189_IG150
+ b G_M42189_IG149
;; size=88 bbWeight=0.50 PerfScore 9.50
-G_M42189_IG27: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG26: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x22]
cmp w25, #151
- bhi G_M42189_IG30
+ bhi G_M42189_IG29
cmp w25, #110
- bhi G_M42189_IG28
+ bhi G_M42189_IG27
cmp w25, #70
- beq G_M42189_IG116
+ beq G_M42189_IG115
cmp w25, #110
- bne G_M42189_IG165
- tbz w26, #5, G_M42189_IG142
- b G_M42189_IG139
+ bne G_M42189_IG164
+ tbz w26, #5, G_M42189_IG141
+ b G_M42189_IG138
;; size=40 bbWeight=0.50 PerfScore 4.00
-G_M42189_IG28: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG27: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
sub w7, w25, #114
cmp w7, #3
- bhi G_M42189_IG29
+ bhi G_M42189_IG28
mov w0, w7
adr x1, [@RWD60]
ldr w1, [x1, x0, LSL #2]
@@ -958,25 +948,25 @@ G_M42189_IG28: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
add x1, x1, x2
br x1
;; size=36 bbWeight=0.50 PerfScore 4.00
-G_M42189_IG29: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG28: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19 x22]
cmp w25, #151
- beq G_M42189_IG128
- b G_M42189_IG165
+ beq G_M42189_IG127
+ b G_M42189_IG164
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M42189_IG30: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG29: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x22]
cmp w25, #159
- bhi G_M42189_IG31
+ bhi G_M42189_IG30
cmp w25, #157
- beq G_M42189_IG80
+ beq G_M42189_IG79
cmp w25, #159
- bne G_M42189_IG165
+ bne G_M42189_IG164
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x27, x0
- bne G_M42189_IG173
+ bne G_M42189_IG172
mov x2, x19
; gcrRegs +[x2]
ldr x1, [x2, #0x28]
@@ -996,17 +986,17 @@ G_M42189_IG30: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
ldr x7, [x7]
blr x7
; gcrRegs -[x0-x3 x6 x19-x22]
- b G_M42189_IG150
+ b G_M42189_IG149
;; size=100 bbWeight=0.50 PerfScore 11.50
-G_M42189_IG31: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG30: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x22]
cmp w25, #173
- beq G_M42189_IG128
+ beq G_M42189_IG127
cmp w25, #177
- beq G_M42189_IG161
+ beq G_M42189_IG160
...
-32 (-0.24%) : 11566.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
@@ -60,7 +60,7 @@
; V49 tmp36 [V49,T151] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
; V50 tmp37 [V50,T152] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
; V51 tmp38 [V51,T153] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
-; V52 tmp39 [V52,T326] ( 3, 1.50) long -> x0 single-def "Inline stloc first use temp"
+; V52 tmp39 [V52,T326] ( 2, 1 ) long -> x0 single-def "Inline stloc first use temp"
;* V53 tmp40 [V53,T327] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V54 tmp41 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V55 tmp42 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
@@ -108,7 +108,7 @@
;* V97 tmp84 [V97 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V98 tmp85 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V99 tmp86 [V99 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V100 tmp87 [V100,T114] ( 3, 10 ) long -> x0 "Inline stloc first use temp"
+; V100 tmp87 [V100,T114] ( 2, 8 ) long -> x0 "Inline stloc first use temp"
;* V101 tmp88 [V101,T121] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V102 tmp89 [V102 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V103 tmp90 [V103 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
@@ -513,7 +513,7 @@ G_M11467_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x2, [x23, #0x10]
blr x2
; gcrRegs -[x0-x1 x19]
- b G_M11467_IG260
+ b G_M11467_IG258
;; size=40 bbWeight=0.50 PerfScore 8.00
G_M11467_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x21]
@@ -568,13 +568,13 @@ G_M11467_IG05: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
; gcrRegs -[x0-x1]
ldr w0, [x24, #0x08]
cmp w0, #0
- blt G_M11467_IG262
+ blt G_M11467_IG260
sxtw w25, w0
cmp w0, #0
ble G_M11467_IG44
ldr w0, [x24, #0x08]
cmp w0, #0
- bls G_M11467_IG261
+ bls G_M11467_IG259
ldrb w26, [x24, #0x10]
mov w0, #0xD1FFAB1E
cmp w26, w0
@@ -754,7 +754,7 @@ G_M11467_IG17: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
ldr x4, [x4]
; gcrRegs +[x4]
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x26, x4, #16
; byrRegs +[x26]
ldrh w4, [x26, w2, UXTW #2]
@@ -770,7 +770,7 @@ G_M11467_IG18: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
; gcrRegs +[x4]
add w5, w2, #1
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x26, x4, #16
; byrRegs +[x26]
add w4, w2, #1
@@ -787,7 +787,7 @@ G_M11467_IG19: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
; gcrRegs +[x4]
add w5, w2, #2
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x26, x4, #16
; byrRegs +[x26]
add w2, w2, #2
@@ -803,7 +803,7 @@ G_M11467_IG20: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
ldr x4, [x2]
; gcrRegs +[x4]
cmp w1, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x26, x4, #16
; byrRegs +[x26]
ldrh w2, [x26, w1, UXTW #2]
@@ -819,7 +819,7 @@ G_M11467_IG21: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
; gcrRegs +[x4]
add w2, w1, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x26, x4, #16
; byrRegs +[x26]
add w2, w1, #1
@@ -839,7 +839,7 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
add w4, w1, #2
; gcrRegs -[x4]
cmp w4, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x26, x2, #16
; byrRegs +[x26]
add w2, w1, #2
@@ -847,18 +847,18 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
ldrh w2, [x26, w2, UXTW #2]
strh w2, [x21, #0x1C]
cmp w0, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
ldrh w2, [x26, w0, UXTW #2]
strh w2, [x21, #0x1E]
add w2, w0, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add w2, w0, #1
ldrh w2, [x26, w2, UXTW #2]
strh w2, [x21, #0x20]
add w2, w0, #2
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add w2, w0, #2
ldrh w2, [x26, w2, UXTW #2]
strh w2, [x21, #0x22]
@@ -882,7 +882,7 @@ G_M11467_IG24: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
beq G_M11467_IG44
ldr w1, [x24, #0x08]
cmp w26, w1
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x1, x24, #16
; byrRegs +[x1]
ldrb w28, [x1, w26, UXTW #2]
@@ -1088,7 +1088,7 @@ G_M11467_IG37: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
ldr x4, [x4]
; gcrRegs +[x4]
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1104,7 +1104,7 @@ G_M11467_IG38: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
; gcrRegs +[x4]
add w5, w2, #1
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1121,7 +1121,7 @@ G_M11467_IG39: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
; gcrRegs +[x4]
add w5, w2, #2
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1137,7 +1137,7 @@ G_M11467_IG40: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
ldr x4, [x2]
; gcrRegs +[x4]
cmp w1, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1153,7 +1153,7 @@ G_M11467_IG41: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
; gcrRegs +[x4]
add w2, w1, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1173,7 +1173,7 @@ G_M11467_IG42: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
add w4, w1, #2
; gcrRegs -[x4]
cmp w4, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x4, x2, #16
; byrRegs +[x4]
add w2, w1, #2
@@ -1181,18 +1181,18 @@ G_M11467_IG42: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
ldrh w2, [x4, w2, UXTW #2]
strh w2, [x21, #0x1C]
cmp w0, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
ldrh w2, [x4, w0, UXTW #2]
strh w2, [x21, #0x1E]
add w2, w0, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add w2, w0, #1
ldrh w2, [x4, w2, UXTW #2]
strh w2, [x21, #0x20]
add w2, w0, #2
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add w2, w0, #2
ldrh w2, [x4, w2, UXTW #2]
strh w2, [x21, #0x22]
@@ -1249,7 +1249,7 @@ G_M11467_IG45: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
ldr x2, [x23, #0x10]
blr x2
; gcrRegs -[x0-x1 x27]
- b G_M11467_IG91
+ b G_M11467_IG89
;; size=68 bbWeight=0.50 PerfScore 11.50
G_M11467_IG46: ; bbWeight=0.50, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x27]
@@ -1265,34 +1265,28 @@ G_M11467_IG46: ; bbWeight=0.50, gcrefRegs=8380000 {x19 x20 x21 x27}, byre
; gcrRegs -[x0-x1]
ldr w0, [x27, #0x08]
cmp w0, #0
- blt G_M11467_IG262
+ blt G_M11467_IG260
sxtw w26, w0
cmp w0, #0
- ble G_M11467_IG90
+ ble G_M11467_IG88
ldr w0, [x27, #0x08]
cmp w0, #0
- bls G_M11467_IG261
+ bls G_M11467_IG259
ldr x24, [x27, #0x10]
and x0, x24, #0xD1FFAB1E
- cbz x0, G_M11467_IG47
- mov x1, #0xD1FFAB1E
- cmp x0, x1
- beq G_M11467_IG48
- b G_M11467_IG48
- ;; size=92 bbWeight=0.50 PerfScore 13.75
-G_M11467_IG47: ; bbWeight=0.50, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=0000 {}, byref
+ cbnz x0, G_M11467_IG47
and x0, x24, #0xD1FFAB1E
orr x24, x0, #0xD1FFAB1E
- ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M11467_IG48: ; bbWeight=0.50, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=0000 {}, byref, isz
+ ;; size=84 bbWeight=0.50 PerfScore 12.75
+G_M11467_IG47: ; bbWeight=0.50, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=0000 {}, byref, isz
and x0, x24, #0xD1FFAB1E
- cbz x0, G_M11467_IG49
+ cbz x0, G_M11467_IG48
mov x1, #0xD1FFAB1E
cmp x0, x1
- bne G_M11467_IG49
- b G_M11467_IG51
...
-8 (-0.20%) : 16294.dasm - System.IO.Strategies.BufferedFileStreamStrategy+d__37:MoveNext():this (FullOpts)
@@ -30,15 +30,15 @@
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V20 tmp1 [V20 ] ( 0, 0 ) int -> zero-ref "dup spill"
; V21 tmp2 [V21 ] ( 8, 16 ) struct (16) [fp+0x38] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
-; V22 tmp3 [V22,T36] ( 3, 6 ) ref -> x4 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V22 tmp3 [V22,T35] ( 3, 6 ) ref -> x4 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V23 tmp4 [V23 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask`1[int]>
-; V24 tmp5 [V24,T44] ( 3, 6 ) int -> x1 "impAppendStmt"
+; V24 tmp5 [V24,T43] ( 3, 6 ) int -> x1 "impAppendStmt"
;* V25 tmp6 [V25 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V26 tmp7 [V26 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V27 tmp8 [V27 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask`1[int]>
;* V28 tmp9 [V28 ] ( 0, 0 ) int -> zero-ref "dup spill"
; V29 tmp10 [V29 ] ( 5, 10 ) struct (16) [fp+0x28] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
-; V30 tmp11 [V30,T37] ( 3, 6 ) ref -> x5 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V30 tmp11 [V30,T36] ( 3, 6 ) ref -> x5 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V31 tmp12 [V31 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask>
;* V32 tmp13 [V32 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V33 tmp14 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
@@ -48,7 +48,7 @@
; V37 tmp18 [V37,T128] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V38 tmp19 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp20 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V40 tmp21 [V40,T38] ( 3, 6 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V40 tmp21 [V40,T37] ( 3, 6 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V41 tmp22 [V41 ] ( 0, 0 ) ref -> zero-ref
; V42 tmp23 [V42,T96] ( 2, 2 ) ref -> x14 single-def
;* V43 tmp24 [V43,T117] ( 0, 0 ) int -> zero-ref
@@ -66,14 +66,14 @@
;* V55 tmp36 [V55 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V56 tmp37 [V56 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V57 tmp38 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
-; V58 tmp39 [V58,T39] ( 3, 6 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V58 tmp39 [V58,T38] ( 3, 6 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
; V59 tmp40 [V59,T68] ( 2, 4 ) int -> x2 "Inlining Arg"
;* V60 tmp41 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V61 tmp42 [V61,T04] ( 12, 12 ) int -> x20 "Inline return value spill temp"
-; V62 tmp43 [V62,T45] ( 3, 6 ) int -> x3 "Inlining Arg"
-; V63 tmp44 [V63,T46] ( 3, 6 ) int -> x1 "Inlining Arg"
+; V62 tmp43 [V62,T44] ( 3, 6 ) int -> x3 "Inlining Arg"
+; V63 tmp44 [V63,T45] ( 3, 6 ) int -> x1 "Inlining Arg"
; V64 tmp45 [V64,T11] ( 4, 8 ) ref -> x1 class-hnd single-def "Inlining Arg" <ubyte[]>
-; V65 tmp46 [V65,T33] ( 4, 6 ) int -> x2 "Inlining Arg"
+; V65 tmp46 [V65,T46] ( 3, 6 ) int -> x2 "Inlining Arg"
;* V66 tmp47 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V67 tmp48 [V67 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
; V68 tmp49 [V68,T27] ( 6, 6 ) byref -> x24 "Inline stloc first use temp"
@@ -196,8 +196,8 @@
; V185 tmp166 [V185,T75] ( 2, 4 ) long -> x2 "Inlining Arg"
; V186 tmp167 [V186,T05] ( 6, 12 ) ref -> x0 class-hnd "Inlining Arg" <System.Threading.SemaphoreSlim>
; V187 tmp168 [V187,T08] ( 5, 10 ) byref -> x19 single-def "Inlining Arg"
-; V188 tmp169 [V188,T40] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox[int]>
-; V189 tmp170 [V189,T41] ( 3, 6 ) byref -> x0 single-def "Inlining Arg"
+; V188 tmp169 [V188,T39] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox[int]>
+; V189 tmp170 [V189,T40] ( 3, 6 ) byref -> x0 single-def "Inlining Arg"
; V190 tmp171 [V190 ] ( 6, 6 ) ref -> [fp+0x98] do-not-enreg[X] addr-exposed "field V04.m_task (fldOffset=0x0)" P-DEP
; V191 tmp172 [V191 ] ( 6, 6 ) int -> [fp+0xA0] do-not-enreg[X] addr-exposed "field V04.m_options (fldOffset=0x8)" P-DEP
;* V192 tmp173 [V192 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
@@ -210,8 +210,8 @@
; V199 tmp180 [V199,T59] ( 4, 4 ) short -> [fp+0x64] do-not-enreg[] "field V14._token (fldOffset=0xc)" P-DEP
; V200 tmp181 [V200,T107] ( 2, 2 ) ubyte -> [fp+0x66] do-not-enreg[] "field V14._continueOnCapturedContext (fldOffset=0xe)" P-DEP
; V201 tmp182 [V201,T32] ( 4, 6 ) ref -> [fp+0x38] do-not-enreg[] "field V21._object (fldOffset=0x0)" P-DEP
-; V202 tmp183 [V202,T34] ( 4, 6 ) int -> [fp+0x40] do-not-enreg[] "field V21._index (fldOffset=0x8)" P-DEP
-; V203 tmp184 [V203,T35] ( 4, 6 ) int -> [fp+0x44] do-not-enreg[] "field V21._length (fldOffset=0xc)" P-DEP
+; V202 tmp183 [V202,T33] ( 4, 6 ) int -> [fp+0x40] do-not-enreg[] "field V21._index (fldOffset=0x8)" P-DEP
+; V203 tmp184 [V203,T34] ( 4, 6 ) int -> [fp+0x44] do-not-enreg[] "field V21._length (fldOffset=0xc)" P-DEP
;* V204 tmp185 [V204 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
;* V205 tmp186 [V205 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
; V206 tmp187 [V206,T51] ( 3, 5 ) ref -> [fp+0x28] do-not-enreg[] "field V29._object (fldOffset=0x0)" P-DEP
@@ -269,10 +269,10 @@
;* V258 tmp239 [V258 ] ( 0, 0 ) int -> zero-ref "field V181._length (fldOffset=0x8)" P-INDEP
;* V259 tmp240 [V259 ] ( 0, 0 ) byref -> zero-ref single-def "field V182._reference (fldOffset=0x0)" P-INDEP
;* V260 tmp241 [V260 ] ( 0, 0 ) int -> zero-ref "field V182._length (fldOffset=0x8)" P-INDEP
-; V261 tmp242 [V261,T42] ( 3, 6 ) ref -> x1 single-def "argument with side effect"
+; V261 tmp242 [V261,T41] ( 3, 6 ) ref -> x1 single-def "argument with side effect"
; V262 tmp243 [V262,T64] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V263 tmp244 [V263,T65] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V264 tmp245 [V264,T43] ( 3, 6 ) ref -> x4 single-def "argument with side effect"
+; V264 tmp245 [V264,T42] ( 3, 6 ) ref -> x4 single-def "argument with side effect"
; V265 tmp246 [V265,T66] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V266 tmp247 [V266,T67] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V267 PSPSym [V267,T127] ( 1, 1 ) long -> [fp+0xB0] do-not-enreg[V] "PSPSym"
@@ -421,7 +421,7 @@ G_M33324_IG06: ; bbWeight=1, gcVars=0000000000000000000000000000000000000
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M33324_IG92
+ b G_M33324_IG91
;; size=80 bbWeight=1 PerfScore 21.00
G_M33324_IG07: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000003 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, nogc
; gcrRegs +[x19]
@@ -491,7 +491,7 @@ G_M33324_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ble G_M33324_IG15
ldr x1, [x19, #0x20]
; gcrRegs +[x1]
- cbz x1, G_M33324_IG75
+ cbz x1, G_M33324_IG74
mov w3, w2
add x3, x3, w20, UXTW
ldr w4, [x1, #0x08]
@@ -596,7 +596,7 @@ G_M33324_IG14: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=1200000 {x2
blr x1
; gcr arg pop 0
cmp w22, w25
- bhi G_M33324_IG76
+ bhi G_M33324_IG75
mov w2, w22
mov x0, x24
; byrRegs +[x0]
@@ -620,7 +620,7 @@ G_M33324_IG15: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0},
cmp w20, w1
bne G_M33324_IG16
str w20, [fp, #0xA8] // [V03 loc2]
- b G_M33324_IG80
+ b G_M33324_IG79
;; size=20 bbWeight=1 PerfScore 6.50
G_M33324_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
cmp w20, #0
@@ -629,7 +629,7 @@ G_M33324_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0},
; byrRegs +[x1]
ldr w2, [x1, #0x0C]
cmp w20, w2
- bhi G_M33324_IG77
+ bhi G_M33324_IG76
ldr x21, [x1]
; gcrRegs +[x21]
ldr w1, [x1, #0x08]
@@ -949,7 +949,7 @@ G_M33324_IG28: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
ldr w0, [x21, #0x14]
add w0, w20, w0
str w0, [fp, #0xA8] // [V03 loc2]
- b G_M33324_IG86
+ b G_M33324_IG85
;; size=16 bbWeight=1 PerfScore 5.50
G_M33324_IG29: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x21]
@@ -1032,7 +1032,7 @@ G_M33324_IG33: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M33324_IG82
+ b G_M33324_IG81
;; size=96 bbWeight=1 PerfScore 24.50
G_M33324_IG34: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, nogc
; byrRegs -[x21]
@@ -1140,7 +1140,7 @@ G_M33324_IG41: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M33324_IG84
+ b G_M33324_IG83
;; size=92 bbWeight=1 PerfScore 22.50
G_M33324_IG42: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x21]
@@ -1411,7 +1411,7 @@ G_M33324_IG57: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M33324_IG88
+ b G_M33324_IG87
;; size=96 bbWeight=1 PerfScore 24.50
G_M33324_IG58: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x21]
@@ -1666,7 +1666,7 @@ G_M33324_IG73: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=2600000 {x2
blr x1
; gcr arg pop 0
cmp w23, w26
- bhi G_M33324_IG76
+ bhi G_M33324_IG75
mov w2, w23
mov x0, x25
; byrRegs +[x0]
@@ -1679,7 +1679,7 @@ G_M33324_IG73: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=2600000 {x2
blr x3
; byrRegs -[x0-x1 x22 x25]
; gcr arg pop 0
- b G_M33324_IG78
+ b G_M33324_IG77
;; size=72 bbWeight=1 PerfScore 16.00
G_M33324_IG74: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x21]
@@ -1691,13 +1691,7 @@ G_M33324_IG74: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M33324_IG75: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
- ; byrRegs +[x0]
- cbnz w2, G_M33324_IG74
- b G_M33324_IG74
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M33324_IG76: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; byrRegs -[x0]
+G_M33324_IG75: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -1706,7 +1700,7 @@ G_M33324_IG76: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M33324_IG77: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M33324_IG76: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov w0, #33
movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
movk x1, #0xD1FFAB1E LSL #16
@@ -1716,7 +1710,7 @@ G_M33324_IG77: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M33324_IG78: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
+G_M33324_IG77: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
; byrRegs +[x21]
ldr w0, [x19, #0x30]
add w0, w0, w20
@@ -1725,9 +1719,9 @@ G_M33324_IG78: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
add w0, w0, w20
str w0, [fp, #0xA8] // [V03 loc2]
;; size=24 bbWeight=1 PerfScore 9.00
-G_M33324_IG79: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+G_M33324_IG78: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
ldr w0, [fp, #0xAC] // [V01 loc0]
- tbz w0, #31, G_M33324_IG90
+ tbz w0, #31, G_M33324_IG89
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldrsb wzr, [x0]
@@ -1740,51 +1734,51 @@ G_M33324_IG79: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
blr x2
; gcrRegs -[x0 x19]
; gcr arg pop 0
- b G_M33324_IG90
+ b G_M33324_IG89
;; size=44 bbWeight=1 PerfScore 16.00
-G_M33324_IG80: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000003 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, gcvars, byref
+G_M33324_IG79: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000003 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs +[x19]
; byrRegs -[x21] +[x0]
; GC ptr vars +{V01 V02}
ldr x0, [fp, #0xB0] // [V267 PSPSym]
; byrRegs -[x0]
- bl G_M33324_IG93
+ bl G_M33324_IG92
;; size=8 bbWeight=1 PerfScore 3.00
-G_M33324_IG81: ; bbWeight=1, nogc, extend
- b G_M33324_IG90
+G_M33324_IG80: ; bbWeight=1, nogc, extend
+ b G_M33324_IG89
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG82: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
+G_M33324_IG81: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
...
benchmarks.run_pgo.linux.arm64.checked.mch
-24 (-14.63%) : 143729.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 7.68) ref -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V00 this [V00,T00] ( 7, 6.76) ref -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
; V01 arg1 [V01,T03] ( 4, 3 ) byref -> x1 single-def
; V02 loc0 [V02,T01] ( 6, 5.68) int -> x2
; V03 loc1 [V03,T05] ( 4, 3.84) ref -> x3 class-hnd single-def <<unknown class>>
@@ -17,9 +17,9 @@
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V07 cse0 [V07,T06] ( 3, 2.92) int -> x4 "CSE - aggressive"
-; V08 rat0 [V08,T04] ( 2, 3.68) long -> x0 "Spilling to split statement for tree"
+;* V08 rat0 [V08,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V10 rat2 [V10,T02] ( 2, 3.68) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V10 rat2 [V10,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -27,10 +27,9 @@ G_M49890_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
ldr w0, [x19, #0x10]
@@ -39,9 +38,9 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1},
; gcrRegs +[x3]
ldr w4, [x3, #0x08]
cmp w4, w2
- bls G_M49890_IG05
+ bls G_M49890_IG04
;; size=24 bbWeight=1 PerfScore 11.00
-G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, byref, isz
+G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, byref
ldr w14, [x19, #0x14]
add w14, w14, #1
stp w2, w14, [x19, #0x10]
@@ -53,51 +52,44 @@ G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=80008 {x3 x19}, byrefRegs=0002
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x1 x14]
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x18]
- cbnz x0, G_M49890_IG07
- ;; size=48 bbWeight=0.92 PerfScore 20.72
-G_M49890_IG04: ; bbWeight=0.18, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, byref
- b G_M49890_IG07
- ;; size=4 bbWeight=0.18 PerfScore 0.18
-G_M49890_IG05: ; bbWeight=0.08, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
+ b G_M49890_IG06
+ ;; size=32 bbWeight=0.92 PerfScore 9.67
+G_M49890_IG04: ; bbWeight=0.08, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
; gcrRegs -[x3]
; byrRegs +[x1]
str xzr, [x1]
mov w0, wzr
;; size=8 bbWeight=0.08 PerfScore 0.12
-G_M49890_IG06: ; bbWeight=0.08, epilog, nogc, extend
+G_M49890_IG05: ; bbWeight=0.08, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.08 PerfScore 0.32
-G_M49890_IG07: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M49890_IG06: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x3]
; byrRegs -[x1]
sxtw x0, w2
mov w1, w4
cmp x0, x1
- bhs G_M49890_IG09
+ bhs G_M49890_IG08
add x0, x3, #16
; byrRegs +[x0]
str xzr, [x0, w2, SXTW #3]
mov w0, #1
; byrRegs -[x0]
;; size=28 bbWeight=0.92 PerfScore 4.14
-G_M49890_IG08: ; bbWeight=0.92, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.92, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.92 PerfScore 3.68
-G_M49890_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M49890_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x3]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 164, prolog size 16, PerfScore 44.16, instruction count 41, allocated bytes for code 164 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 140, prolog size 12, PerfScore 31.93, instruction count 35, allocated bytes for code 140 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -108,7 +100,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-14.63%) : 145484.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 7.68) ref -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V00 this [V00,T00] ( 7, 6.76) ref -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
; V01 arg1 [V01,T03] ( 4, 3 ) byref -> x1 single-def
; V02 loc0 [V02,T01] ( 6, 5.68) int -> x2
; V03 loc1 [V03,T05] ( 4, 3.84) ref -> x3 class-hnd single-def <<unknown class>>
@@ -17,9 +17,9 @@
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V07 cse0 [V07,T06] ( 3, 2.92) int -> x4 "CSE - aggressive"
-; V08 rat0 [V08,T04] ( 2, 3.68) long -> x0 "Spilling to split statement for tree"
+;* V08 rat0 [V08,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V10 rat2 [V10,T02] ( 2, 3.68) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V10 rat2 [V10,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -27,10 +27,9 @@ G_M49890_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
ldr w0, [x19, #0x10]
@@ -39,9 +38,9 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1},
; gcrRegs +[x3]
ldr w4, [x3, #0x08]
cmp w4, w2
- bls G_M49890_IG05
+ bls G_M49890_IG04
;; size=24 bbWeight=1 PerfScore 11.00
-G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, byref, isz
+G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, byref
ldr w14, [x19, #0x14]
add w14, w14, #1
stp w2, w14, [x19, #0x10]
@@ -53,51 +52,44 @@ G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=80008 {x3 x19}, byrefRegs=0002
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x1 x14]
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x18]
- cbnz x0, G_M49890_IG07
- ;; size=48 bbWeight=0.92 PerfScore 20.70
-G_M49890_IG04: ; bbWeight=0.18, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, byref
- b G_M49890_IG07
- ;; size=4 bbWeight=0.18 PerfScore 0.18
-G_M49890_IG05: ; bbWeight=0.08, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
+ b G_M49890_IG06
+ ;; size=32 bbWeight=0.92 PerfScore 9.66
+G_M49890_IG04: ; bbWeight=0.08, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
; gcrRegs -[x3]
; byrRegs +[x1]
str xzr, [x1]
mov w0, wzr
;; size=8 bbWeight=0.08 PerfScore 0.12
-G_M49890_IG06: ; bbWeight=0.08, epilog, nogc, extend
+G_M49890_IG05: ; bbWeight=0.08, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.08 PerfScore 0.32
-G_M49890_IG07: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M49890_IG06: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x3]
; byrRegs -[x1]
sxtw x0, w2
mov w1, w4
cmp x0, x1
- bhs G_M49890_IG09
+ bhs G_M49890_IG08
add x0, x3, #16
; byrRegs +[x0]
str xzr, [x0, w2, SXTW #3]
mov w0, #1
; byrRegs -[x0]
;; size=28 bbWeight=0.92 PerfScore 4.14
-G_M49890_IG08: ; bbWeight=0.92, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.92, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.92 PerfScore 3.68
-G_M49890_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M49890_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x3]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 164, prolog size 16, PerfScore 44.14, instruction count 41, allocated bytes for code 164 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 140, prolog size 12, PerfScore 31.92, instruction count 35, allocated bytes for code 140 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -108,7 +100,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-12.50%) : 143705.dasm - System.Collections.Generic.Stack1[System.ValueTuple3[System.Canon,System.Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 7 ) ref -> [fp+0x10] this class-hnd single-def <System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]>
+; V00 this [V00,T00] ( 7, 6.25) ref -> [fp+0x18] this class-hnd single-def <System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]>
; V01 arg1 [V01,T01] ( 4, 3 ) byref -> x1 single-def
; V02 loc0 [V02,T03] ( 4, 3.50) int -> x13
; V03 loc1 [V03,T05] ( 3, 2.75) ref -> x14 class-hnd exact single-def <<unknown class>>
@@ -20,37 +20,38 @@
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.Item2 (fldOffset=0x8)" P-INDEP
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.Item3 (fldOffset=0x10)" P-INDEP
; V10 cse0 [V10,T06] ( 3, 2.25) byref -> x2 "CSE - aggressive"
-; V11 rat0 [V11,T04] ( 2, 3 ) long -> x1 "Spilling to split statement for tree"
+;* V11 rat0 [V11,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V12 rat1 [V12,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V13 rat2 [V13,T02] ( 2, 3 ) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V13 rat2 [V13,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
G_M60687_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
- str x0, [fp, #0x18]
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M60687_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref, isz
; gcrRegs +[x0]
; byrRegs +[x1]
ldr w13, [x0, #0x10]
sub w13, w13, #1
- str x0, [fp, #0x10] // [V00 this]
+ str x0, [fp, #0x18] // [V00 this]
; GC ptr vars +{V00}
ldr x14, [x0, #0x08]
; gcrRegs +[x14]
ldr w12, [x14, #0x08]
cmp w12, w13
- bls G_M60687_IG05
+ bls G_M60687_IG04
;; size=28 bbWeight=1 PerfScore 12.00
-G_M60687_IG03: ; bbWeight=0.75, gcVars=0000000000000001 {V00}, gcrefRegs=4000 {x14}, byrefRegs=0002 {x1}, gcvars, byref, isz
+G_M60687_IG03: ; bbWeight=0.75, gcVars=0000000000000001 {V00}, gcrefRegs=4000 {x14}, byrefRegs=0002 {x1}, gcvars, byref
; gcrRegs -[x0]
- ldr x0, [fp, #0x10] // [V00 this]
+ ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
ldr w12, [x0, #0x14]
add w12, w12, #1
- stp w13, w12, [x0, #0x10]
+ str w12, [x0, #0x14]
+ str x0, [fp, #0x18] // [V00 this]
+ str w13, [x0, #0x10]
mov w12, #24
mov x15, #16
umaddl x13, w13, w12, x15
@@ -61,46 +62,35 @@ G_M60687_IG03: ; bbWeight=0.75, gcVars=0000000000000001 {V00}, gcrefRegs=
; byrRegs +[x14]
mov x13, x2
; byrRegs +[x13]
- ; GC ptr vars -{V00}
bl CORINFO_HELP_ASSIGN_BYREF
+ ; gcrRegs -[x0]
; byrRegs -[x1]
bl CORINFO_HELP_ASSIGN_BYREF
bl CORINFO_HELP_ASSIGN_BYREF
- str x0, [fp, #0x10] // [V00 this]
- ; GC ptr vars +{V00}
- ldr x1, [x0]
- ldr x1, [x1, #0x38]
- ldr x1, [x1]
- ldr x1, [x1, #0x20]
- cbnz x1, G_M60687_IG07
- ;; size=76 bbWeight=0.75 PerfScore 23.25
-G_M60687_IG04: ; bbWeight=0.15, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, gcvars, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x13-x14]
- b G_M60687_IG07
- ;; size=4 bbWeight=0.15 PerfScore 0.15
-G_M60687_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
- ; byrRegs -[x2] +[x1]
+ b G_M60687_IG06
+ ;; size=64 bbWeight=0.75 PerfScore 15.00
+G_M60687_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+ ; byrRegs -[x2 x13-x14] +[x1]
stp xzr, xzr, [x1]
str xzr, [x1, #0x10]
mov w0, wzr
;; size=12 bbWeight=0.25 PerfScore 0.62
-G_M60687_IG06: ; bbWeight=0.25, epilog, nogc, extend
+G_M60687_IG05: ; bbWeight=0.25, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=0.25 PerfScore 0.50
-G_M60687_IG07: ; bbWeight=0.75, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, gcvars, byref
+G_M60687_IG06: ; bbWeight=0.75, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, gcvars, byref
; byrRegs -[x1] +[x2]
stp xzr, xzr, [x2]
str xzr, [x2, #0x10]
mov w0, #1
;; size=12 bbWeight=0.75 PerfScore 1.88
-G_M60687_IG08: ; bbWeight=0.75, epilog, nogc, extend
+G_M60687_IG07: ; bbWeight=0.75, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=0.75 PerfScore 1.50
-Total bytes of code 160, prolog size 12, PerfScore 42.40, instruction count 40, allocated bytes for code 160 (MethodHash=056e12f0) for method System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 140, prolog size 8, PerfScore 33.00, instruction count 35, allocated bytes for code 140 (MethodHash=056e12f0) for method System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -111,7 +101,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+0.22%) : 106259.dasm - LinqBenchmarks:Where00LinqMethodX():ubyte:this (Tier1-OSR)
@@ -11,59 +11,61 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <LinqBenchmarks>
-; V01 loc0 [V01,T18] ( 5, 283.45) ref -> x19 class-hnd <System.Collections.Generic.List`1[Product]>
-; V02 loc1 [V02,T26] ( 5, 166.65) int -> x20
-; V03 loc2 [V03,T31] ( 3, 50.02) int -> x21
+; V01 loc0 [V01,T20] ( 5, 283.45) ref -> x19 class-hnd <System.Collections.Generic.List`1[Product]>
+; V02 loc1 [V02,T28] ( 5, 166.65) int -> x20
+; V03 loc2 [V03,T32] ( 3, 50.02) int -> x21
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Generic.IEnumerable`1[Product]>
-; V05 loc4 [V05,T16] ( 32, 395.48) ref -> [fp+0x100] do-not-enreg[Z] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[Product]>
+; V05 loc4 [V05,T17] ( 32, 401.90) ref -> [fp+0x100] do-not-enreg[Z] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[Product]>
;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <Product>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T29] ( 2, 66.69) ref -> x22 class-hnd "dup spill" <<unknown class>>
+; V08 tmp1 [V08,T30] ( 2, 66.69) ref -> x23 class-hnd "dup spill" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref
-; V10 tmp3 [V10,T17] ( 8, 366.83) ref -> x22
-; V11 tmp4 [V11,T38] ( 5, 0.11) ref -> x22 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V12 tmp5 [V12,T34] ( 3, 33.35) ref -> x22 "guarded devirt return temp"
+; V10 tmp3 [V10,T18] ( 8, 366.83) ref -> x23
+; V11 tmp4 [V11,T39] ( 5, 0.11) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V12 tmp5 [V12,T35] ( 3, 33.35) ref -> x22 "guarded devirt return temp"
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-; V16 tmp9 [V16,T10] ( 5, 200.00) int -> x2 "guarded devirt return temp"
-; V17 tmp10 [V17,T02] ( 14, 7780.92) ref -> x22 class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
+; V16 tmp9 [V16,T10] ( 5, 200.00) int -> x3 "guarded devirt return temp"
+; V17 tmp10 [V17,T04] ( 14, 6509.48) ref -> x23 class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-;* V19 tmp12 [V19,T27] ( 0, 0 ) int -> zero-ref "OSR entry state var"
-; V20 tmp13 [V20,T39] ( 2, 0.04) ref -> x15 class-hnd exact "Inlining Arg" <LinqBenchmarks+<>c>
-; V21 tmp14 [V21,T15] ( 12, 633.60) ref -> x23 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Product]>
-; V22 tmp15 [V22,T20] ( 4, 266.78) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V23 tmp16 [V23,T21] ( 4, 266.78) ref -> x28 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V24 tmp17 [V24,T24] ( 3, 200.08) ref -> x23 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
-; V25 tmp18 [V25,T11] ( 5, 666.95) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V26 tmp19 [V26,T12] ( 5, 666.95) ref -> x24 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-; V27 tmp20 [V27,T13] ( 5, 666.95) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V28 tmp21 [V28,T25] ( 4, 166.74) ref -> x22
+;* V19 tmp12 [V19 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+; V20 tmp13 [V20,T40] ( 2, 0.04) ref -> x15 class-hnd exact "Inlining Arg" <LinqBenchmarks+<>c>
+; V21 tmp14 [V21,T16] ( 12, 633.60) ref -> x24 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Product]>
+; V22 tmp15 [V22,T22] ( 4, 266.78) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V23 tmp16 [V23,T23] ( 4, 266.78) ref -> x22 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V24 tmp17 [V24,T26] ( 3, 200.08) ref -> x24 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
+; V25 tmp18 [V25,T12] ( 5, 666.95) ref -> x24 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T13] ( 5, 666.95) ref -> x28 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
+; V27 tmp20 [V27,T14] ( 5, 666.95) ref -> x24 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V28 tmp21 [V28,T27] ( 4, 166.74) ref -> x22
;* V29 tmp22 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V30 tmp23 [V30 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V31 tmp24 [V31,T14] ( 5, 666.95) ref -> x22 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-; V32 tmp25 [V32,T22] ( 2, 266.78) ref -> x24 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-; V33 tmp26 [V33,T23] ( 2, 266.78) ref -> x23 class-hnd "Inlining Arg" <System.Func`2[System.__Canon,ubyte]>
-; V34 tmp27 [V34,T19] ( 6, 283.32) int -> x23 "Inline stloc first use temp"
+; V31 tmp24 [V31,T15] ( 5, 666.95) ref -> x22 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
+; V32 tmp25 [V32,T24] ( 2, 266.78) ref -> x23 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+; V33 tmp26 [V33,T25] ( 2, 266.78) ref -> x24 class-hnd "Inlining Arg" <System.Func`2[System.__Canon,ubyte]>
+; V34 tmp27 [V34,T21] ( 6, 283.32) int -> x24 "Inline stloc first use temp"
; V35 tmp28 [V35,T06] ( 8, 5087.22) ref -> x28 class-hnd "Inline stloc first use temp" <Product>
; V36 tmp29 [V36,T09] ( 4, 2543.50) int -> x0 "guarded devirt return temp"
-; V37 tmp30 [V37,T01] ( 8,10174.85) ref -> x3 "guarded devirt arg temp"
+; V37 tmp30 [V37,T01] ( 8,10174.85) ref -> x4 "guarded devirt arg temp"
;* V38 tmp31 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <LinqBenchmarks+<>c>
-; V39 tmp32 [V39,T28] ( 4, 67.88) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+; V39 tmp32 [V39,T29] ( 4, 66.70) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
;* V40 tmp33 [V40 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Product]>
;* V41 tmp34 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V42 tmp35 [V42,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V43 tmp36 [V43,T00] ( 24,25735.42) byref -> x25 "Inlining Arg"
-; V44 tmp37 [V44,T05] ( 8, 5137.21) ref -> x26 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
-; V45 tmp38 [V45,T30] ( 6, 50.91) ref -> x15 "field V40._list (fldOffset=0x0)" P-INDEP
-;* V46 tmp39 [V46,T35] ( 0, 0 ) ref -> zero-ref "field V40._current (fldOffset=0x8)" P-INDEP
-;* V47 tmp40 [V47,T36] ( 0, 0 ) int -> zero-ref "field V40._index (fldOffset=0x10)" P-INDEP
-; V48 tmp41 [V48,T33] ( 4, 33.94) int -> x24 "field V40._version (fldOffset=0x14)" P-INDEP
-; V49 tmp42 [V49,T03] ( 6, 7631.77) ref -> x27 "arr expr"
-; V50 tmp43 [V50,T04] ( 6, 7631.77) int -> x2 "index expr"
-; V51 PSPSym [V51,T37] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V52 cse0 [V52,T07] ( 3, 3810.31) int -> x2 "CSE - aggressive"
-; V53 cse1 [V53,T32] ( 3, 38.49) int -> x2 "CSE - moderate"
+; V43 tmp36 [V43,T00] ( 24,25735.42) byref -> x2 "Inlining Arg"
+; V44 tmp37 [V44,T05] ( 8, 5137.21) ref -> x27 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
+; V45 tmp38 [V45,T31] ( 6, 50.03) ref -> x15 "field V40._list (fldOffset=0x0)" P-INDEP
+;* V46 tmp39 [V46,T36] ( 0, 0 ) ref -> zero-ref "field V40._current (fldOffset=0x8)" P-INDEP
+;* V47 tmp40 [V47,T37] ( 0, 0 ) int -> zero-ref "field V40._index (fldOffset=0x10)" P-INDEP
+; V48 tmp41 [V48,T34] ( 4, 33.35) int -> x25 "field V40._version (fldOffset=0x14)" P-INDEP
+; V49 tmp42 [V49,T02] ( 6, 7631.77) ref -> x28 "arr expr"
+; V50 tmp43 [V50,T03] ( 6, 7631.77) int -> x3 "index expr"
+; V51 PSPSym [V51,T38] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V52 cse0 [V52,T07] ( 3, 3810.31) int -> x3 "CSE - aggressive"
+; V53 cse1 [V53,T33] ( 3, 38.49) int -> x3 "CSE - moderate"
+; V54 cse2 [V54,T11] ( 4, 1305.39) byref -> x26 hoist multi-def "CSE - aggressive"
+; V55 cse3 [V55,T19] ( 15, 303.77) long -> x22 multi-def "CSE - aggressive"
;
; Lcl frame size = 16
@@ -82,24 +84,24 @@ G_M64534_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr w20, [fp, #0xD1FFAB1E]
ldr w21, [fp, #0xD1FFAB1E]
;; size=48 bbWeight=1 PerfScore 14.00
-G_M64534_IG02: ; bbWeight=1, gcVars=0000000000010000 {V05}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars +{V05 V16}
+G_M64534_IG02: ; bbWeight=1, gcVars=0000000000020000 {V05}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars +{V05 V17}
b G_M64534_IG17
;; size=4 bbWeight=1 PerfScore 1.00
G_M64534_IG03: ; bbWeight=16.67, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V05 V16}
+ ; GC ptr vars -{V05 V17}
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- ldr x22, [x0]
- ; gcrRegs +[x22]
- cbz x22, G_M64534_IG06
+ ldr x23, [x0]
+ ; gcrRegs +[x23]
+ cbz x23, G_M64534_IG06
;; size=20 bbWeight=16.67 PerfScore 91.71
-G_M64534_IG04: ; bbWeight=16.67, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M64534_IG54
+G_M64534_IG04: ; bbWeight=16.67, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+ cbz x19, G_M64534_IG55
;; size=4 bbWeight=16.67 PerfScore 16.67
-G_M64534_IG05: ; bbWeight=66.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- cbz x22, G_M64534_IG55
+G_M64534_IG05: ; bbWeight=66.69, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+ cbz x23, G_M64534_IG56
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -109,34 +111,34 @@ G_M64534_IG05: ; bbWeight=66.69, gcrefRegs=480000 {x19 x22}, byrefRegs=00
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
cbz x0, G_M64534_IG07
- mov x1, x22
+ mov x1, x23
; gcrRegs +[x1]
ldr x2, [x0]
ldr x2, [x2, #0x50]
ldr x2, [x2, #0x10]
blr x2
- ; gcrRegs -[x1 x22]
+ ; gcrRegs -[x1 x23]
; gcr arg pop 0
- mov x23, x0
- ; gcrRegs +[x23]
+ mov x24, x0
+ ; gcrRegs +[x24]
b G_M64534_IG11
;; size=56 bbWeight=66.69 PerfScore 1133.81
G_M64534_IG06: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x23]
+ ; gcrRegs -[x0 x24]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
- mov x22, x0
- ; gcrRegs +[x22]
+ mov x23, x0
+ ; gcrRegs +[x23]
movz x14, #0xD1FFAB1E
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
ldr x15, [x14]
; gcrRegs +[x15]
- add x14, x22, #8
+ add x14, x23, #8
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
@@ -144,17 +146,17 @@ G_M64534_IG06: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movz x14, #0xD1FFAB1E // code for LinqBenchmarks+<>c:<Where00LinqMethodX>b__8_0(Product):ubyte:this
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
- str x14, [x22, #0x18]
+ str x14, [x23, #0x18]
movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
- mov x15, x22
+ mov x15, x23
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
b G_M64534_IG04
;; size=84 bbWeight=0.01 PerfScore 0.16
-G_M64534_IG07: ; bbWeight=66.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M64534_IG07: ; bbWeight=66.69, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -167,10 +169,10 @@ G_M64534_IG07: ; bbWeight=66.69, gcrefRegs=480000 {x19 x22}, byrefRegs=00
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- mov x28, x0
- ; gcrRegs +[x28]
- cbz x28, G_M64534_IG09
- ldr w0, [x28, #0x08]
+ mov x22, x0
+ ; gcrRegs +[x22]
+ cbz x22, G_M64534_IG09
+ ldr w0, [x22, #0x08]
; gcrRegs -[x0]
cbnz w0, G_M64534_IG08
movz x0, #0xD1FFAB1E
@@ -178,65 +180,23 @@ G_M64534_IG07: ; bbWeight=66.69, gcrefRegs=480000 {x19 x22}, byrefRegs=00
movk x0, #0xD1FFAB1E LSL #32
mov w1, #44
bl CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
- ; gcrRegs -[x22 x28]
+ ; gcrRegs -[x22-x23]
; gcr arg pop 0
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- ldr x23, [x0]
- ; gcrRegs +[x23]
+ ldr x24, [x0]
+ ; gcrRegs +[x24]
b G_M64534_IG11
;; size=92 bbWeight=66.69 PerfScore 1433.94
-G_M64534_IG08: ; bbWeight=66.69, gcrefRegs=10480000 {x19 x22 x28}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x23] +[x22 x28]
+G_M64534_IG08: ; bbWeight=66.69, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x24] +[x22-x23]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
- mov x23, x0
- ; gcrRegs +[x23]
- bl <unknown method>
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- str w0, [x23, #0x10]
- add x14, x23, #24
- ; byrRegs +[x14]
- mov x15, x28
- ; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
...
+36 (+1.95%) : 104708.dasm - LinqBenchmarks:Where00LinqQueryX():ubyte:this (Tier1-OSR)
@@ -11,59 +11,61 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <LinqBenchmarks>
-; V01 loc0 [V01,T18] ( 5, 283.45) ref -> x19 class-hnd <System.Collections.Generic.List`1[Product]>
-; V02 loc1 [V02,T26] ( 5, 166.65) int -> x20
-; V03 loc2 [V03,T31] ( 3, 50.02) int -> x21
+; V01 loc0 [V01,T20] ( 5, 283.45) ref -> x19 class-hnd <System.Collections.Generic.List`1[Product]>
+; V02 loc1 [V02,T28] ( 5, 166.65) int -> x20
+; V03 loc2 [V03,T32] ( 3, 50.02) int -> x21
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Generic.IEnumerable`1[Product]>
-; V05 loc4 [V05,T16] ( 32, 395.48) ref -> [fp+0x100] do-not-enreg[Z] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[Product]>
+; V05 loc4 [V05,T17] ( 32, 401.90) ref -> [fp+0x100] do-not-enreg[Z] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[Product]>
;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <Product>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T29] ( 2, 66.69) ref -> x22 class-hnd "dup spill" <<unknown class>>
+; V08 tmp1 [V08,T30] ( 2, 66.69) ref -> x23 class-hnd "dup spill" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref
-; V10 tmp3 [V10,T17] ( 8, 366.83) ref -> x22
-; V11 tmp4 [V11,T38] ( 5, 0.11) ref -> x22 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V12 tmp5 [V12,T34] ( 3, 33.35) ref -> x22 "guarded devirt return temp"
+; V10 tmp3 [V10,T18] ( 8, 366.83) ref -> x23
+; V11 tmp4 [V11,T39] ( 5, 0.11) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V12 tmp5 [V12,T35] ( 3, 33.35) ref -> x22 "guarded devirt return temp"
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-; V16 tmp9 [V16,T10] ( 5, 200.00) int -> x2 "guarded devirt return temp"
-; V17 tmp10 [V17,T02] ( 14, 7876.23) ref -> x22 class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
+; V16 tmp9 [V16,T10] ( 5, 200.00) int -> x3 "guarded devirt return temp"
+; V17 tmp10 [V17,T04] ( 14, 6588.83) ref -> x23 class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-;* V19 tmp12 [V19,T27] ( 0, 0 ) int -> zero-ref "OSR entry state var"
-; V20 tmp13 [V20,T39] ( 2, 0.04) ref -> x15 class-hnd exact "Inlining Arg" <LinqBenchmarks+<>c>
-; V21 tmp14 [V21,T15] ( 12, 633.60) ref -> x23 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Product]>
-; V22 tmp15 [V22,T20] ( 4, 266.78) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V23 tmp16 [V23,T21] ( 4, 266.78) ref -> x28 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V24 tmp17 [V24,T24] ( 3, 200.08) ref -> x23 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
-; V25 tmp18 [V25,T11] ( 5, 666.95) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V26 tmp19 [V26,T12] ( 5, 666.95) ref -> x24 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-; V27 tmp20 [V27,T13] ( 5, 666.95) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V28 tmp21 [V28,T25] ( 4, 166.74) ref -> x22
+;* V19 tmp12 [V19 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+; V20 tmp13 [V20,T40] ( 2, 0.04) ref -> x15 class-hnd exact "Inlining Arg" <LinqBenchmarks+<>c>
+; V21 tmp14 [V21,T16] ( 12, 633.60) ref -> x22 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Product]>
+; V22 tmp15 [V22,T22] ( 4, 266.78) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V23 tmp16 [V23,T23] ( 4, 266.78) ref -> x28 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V24 tmp17 [V24,T26] ( 3, 200.08) ref -> x22 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
+; V25 tmp18 [V25,T12] ( 5, 666.95) ref -> x22 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T13] ( 5, 666.95) ref -> x24 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
+; V27 tmp20 [V27,T14] ( 5, 666.95) ref -> x22 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V28 tmp21 [V28,T27] ( 4, 166.74) ref -> x22
;* V29 tmp22 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V30 tmp23 [V30 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V31 tmp24 [V31,T14] ( 5, 666.95) ref -> x22 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-; V32 tmp25 [V32,T22] ( 2, 266.78) ref -> x24 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-; V33 tmp26 [V33,T23] ( 2, 266.78) ref -> x23 class-hnd "Inlining Arg" <System.Func`2[System.__Canon,ubyte]>
-; V34 tmp27 [V34,T19] ( 6, 283.32) int -> x23 "Inline stloc first use temp"
+; V31 tmp24 [V31,T15] ( 5, 666.95) ref -> x24 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
+; V32 tmp25 [V32,T24] ( 2, 266.78) ref -> x23 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+; V33 tmp26 [V33,T25] ( 2, 266.78) ref -> x22 class-hnd "Inlining Arg" <System.Func`2[System.__Canon,ubyte]>
+; V34 tmp27 [V34,T21] ( 6, 283.32) int -> x24 "Inline stloc first use temp"
; V35 tmp28 [V35,T06] ( 8, 5150.82) ref -> x28 class-hnd "Inline stloc first use temp" <Product>
; V36 tmp29 [V36,T09] ( 4, 2575.41) int -> x0 "guarded devirt return temp"
-; V37 tmp30 [V37,T01] ( 8,10301.64) ref -> x3 "guarded devirt arg temp"
+; V37 tmp30 [V37,T01] ( 8,10301.64) ref -> x4 "guarded devirt arg temp"
;* V38 tmp31 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <LinqBenchmarks+<>c>
-; V39 tmp32 [V39,T28] ( 4, 67.88) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+; V39 tmp32 [V39,T29] ( 4, 66.70) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
;* V40 tmp33 [V40 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Product]>
;* V41 tmp34 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V42 tmp35 [V42,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V43 tmp36 [V43,T00] ( 24,26055.06) byref -> x25 "Inlining Arg"
-; V44 tmp37 [V44,T05] ( 8, 5200.82) ref -> x26 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
-; V45 tmp38 [V45,T30] ( 6, 50.91) ref -> x15 "field V40._list (fldOffset=0x0)" P-INDEP
-;* V46 tmp39 [V46,T35] ( 0, 0 ) ref -> zero-ref "field V40._current (fldOffset=0x8)" P-INDEP
-;* V47 tmp40 [V47,T36] ( 0, 0 ) int -> zero-ref "field V40._index (fldOffset=0x10)" P-INDEP
-; V48 tmp41 [V48,T33] ( 4, 33.94) int -> x24 "field V40._version (fldOffset=0x14)" P-INDEP
-; V49 tmp42 [V49,T03] ( 6, 7726.23) ref -> x27 "arr expr"
-; V50 tmp43 [V50,T04] ( 6, 7726.23) int -> x2 "index expr"
-; V51 PSPSym [V51,T37] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V52 cse0 [V52,T07] ( 3, 3857.48) int -> x2 "CSE - aggressive"
-; V53 cse1 [V53,T32] ( 3, 38.96) int -> x2 "CSE - moderate"
+; V43 tmp36 [V43,T00] ( 24,26055.06) byref -> x2 "Inlining Arg"
+; V44 tmp37 [V44,T05] ( 8, 5200.82) ref -> x27 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
+; V45 tmp38 [V45,T31] ( 6, 50.03) ref -> x15 "field V40._list (fldOffset=0x0)" P-INDEP
+;* V46 tmp39 [V46,T36] ( 0, 0 ) ref -> zero-ref "field V40._current (fldOffset=0x8)" P-INDEP
+;* V47 tmp40 [V47,T37] ( 0, 0 ) int -> zero-ref "field V40._index (fldOffset=0x10)" P-INDEP
+; V48 tmp41 [V48,T34] ( 4, 33.35) int -> x25 "field V40._version (fldOffset=0x14)" P-INDEP
+; V49 tmp42 [V49,T02] ( 6, 7726.23) ref -> x28 "arr expr"
+; V50 tmp43 [V50,T03] ( 6, 7726.23) int -> x3 "index expr"
+; V51 PSPSym [V51,T38] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V52 cse0 [V52,T07] ( 3, 3857.48) int -> x3 "CSE - aggressive"
+; V53 cse1 [V53,T33] ( 3, 38.96) int -> x3 "CSE - moderate"
+; V54 cse2 [V54,T11] ( 4, 1321.34) byref -> x26 hoist multi-def "CSE - aggressive"
+; V55 cse3 [V55,T19] ( 17, 303.79) long -> registers multi-def "CSE - aggressive"
;
; Lcl frame size = 16
@@ -82,24 +84,24 @@ G_M15171_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr w20, [fp, #0xD1FFAB1E]
ldr w21, [fp, #0xD1FFAB1E]
;; size=48 bbWeight=1 PerfScore 14.00
-G_M15171_IG02: ; bbWeight=1, gcVars=0000000000010000 {V05}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars +{V05 V16}
- b G_M15171_IG17
+G_M15171_IG02: ; bbWeight=1, gcVars=0000000000020000 {V05}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars +{V05 V17}
+ b G_M15171_IG16
;; size=4 bbWeight=1 PerfScore 1.00
G_M15171_IG03: ; bbWeight=16.67, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V05 V16}
+ ; GC ptr vars -{V05 V17}
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- ldr x22, [x0]
- ; gcrRegs +[x22]
- cbz x22, G_M15171_IG06
+ ldr x23, [x0]
+ ; gcrRegs +[x23]
+ cbz x23, G_M15171_IG06
;; size=20 bbWeight=16.67 PerfScore 91.71
-G_M15171_IG04: ; bbWeight=16.67, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M15171_IG04: ; bbWeight=16.67, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cbz x19, G_M15171_IG52
;; size=4 bbWeight=16.67 PerfScore 16.67
-G_M15171_IG05: ; bbWeight=66.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- cbz x22, G_M15171_IG53
+G_M15171_IG05: ; bbWeight=66.69, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+ cbz x23, G_M15171_IG53
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -109,34 +111,35 @@ G_M15171_IG05: ; bbWeight=66.69, gcrefRegs=480000 {x19 x22}, byrefRegs=00
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
cbz x0, G_M15171_IG07
- mov x1, x22
+ mov x1, x23
; gcrRegs +[x1]
ldr x2, [x0]
ldr x2, [x2, #0x50]
ldr x2, [x2, #0x10]
blr x2
- ; gcrRegs -[x1 x22]
- ; gcr arg pop 0
- mov x23, x0
- ; gcrRegs +[x23]
- b G_M15171_IG11
- ;; size=56 bbWeight=66.69 PerfScore 1133.81
-G_M15171_IG06: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x23]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
- ; gcrRegs +[x0]
+ ; gcrRegs -[x1 x23]
; gcr arg pop 0
mov x22, x0
; gcrRegs +[x22]
+ b G_M15171_IG11
+ ;; size=56 bbWeight=66.69 PerfScore 1133.81
+G_M15171_IG06: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x22]
+ movz x22, #0xD1FFAB1E
+ movk x22, #0xD1FFAB1E LSL #16
+ movk x22, #0xD1FFAB1E LSL #32
+ mov x0, x22
+ bl CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[x0]
+ ; gcr arg pop 0
+ mov x23, x0
+ ; gcrRegs +[x23]
movz x14, #0xD1FFAB1E
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
ldr x15, [x14]
; gcrRegs +[x15]
- add x14, x22, #8
+ add x14, x23, #8
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
@@ -144,17 +147,17 @@ G_M15171_IG06: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movz x14, #0xD1FFAB1E // code for LinqBenchmarks+<>c:<Where00LinqQueryX>b__7_0(Product):ubyte:this
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
- str x14, [x22, #0x18]
+ str x14, [x23, #0x18]
movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
- mov x15, x22
+ mov x15, x23
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
b G_M15171_IG04
- ;; size=84 bbWeight=0.01 PerfScore 0.16
-G_M15171_IG07: ; bbWeight=66.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ;; size=88 bbWeight=0.01 PerfScore 0.17
+G_M15171_IG07: ; bbWeight=66.69, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -178,47 +181,47 @@ G_M15171_IG07: ; bbWeight=66.69, gcrefRegs=480000 {x19 x22}, byrefRegs=00
movk x0, #0xD1FFAB1E LSL #32
mov w1, #45
bl CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
- ; gcrRegs -[x22 x28]
+ ; gcrRegs -[x23 x28]
; gcr arg pop 0
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- ldr x23, [x0]
- ; gcrRegs +[x23]
+ ldr x22, [x0]
+ ; gcrRegs +[x22]
b G_M15171_IG11
;; size=92 bbWeight=66.69 PerfScore 1433.94
-G_M15171_IG08: ; bbWeight=66.69, gcrefRegs=10480000 {x19 x22 x28}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x23] +[x22 x28]
+G_M15171_IG08: ; bbWeight=66.69, gcrefRegs=10880000 {x19 x23 x28}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x22] +[x23 x28]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
- mov x23, x0
- ; gcrRegs +[x23]
+ mov x22, x0
+ ; gcrRegs +[x22]
bl <unknown method>
; gcrRegs -[x0]
; gcr arg pop 0
- str w0, [x23, #0x10]
- add x14, x23, #24
+ str w0, [x22, #0x10]
+ add x14, x22, #24
; byrRegs +[x14]
mov x15, x28
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x28]
; byrRegs -[x14]
...
+16 (+7.27%) : 126364.dasm - LinqBenchmarks:Count00ForX():ubyte:this (Tier1-OSR)
@@ -6,113 +6,121 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 98.59
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 98.59
; 1 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <LinqBenchmarks>
-; V01 loc0 [V01,T11] ( 2, 2.58) ref -> x2 class-hnd <System.Collections.Generic.List`1[Product]>
-; V02 loc1 [V02,T08] ( 3, 12.86) int -> x0
-; V03 loc2 [V03,T10] ( 3, 3.86) int -> x1
-; V04 loc3 [V04,T09] ( 4, 4 ) struct (24) [fp+0x38] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
+; V01 loc0 [V01,T09] ( 2, 2.58) ref -> x19 class-hnd <System.Collections.Generic.List`1[Product]>
+; V02 loc1 [V02,T06] ( 3, 12.86) int -> x0
+; V03 loc2 [V03,T08] ( 3, 3.86) int -> x1
+; V04 loc3 [V04,T07] ( 4, 4 ) struct (24) [fp+0x58] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <Product>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V07 tmp1 [V07,T07] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Product]>
-; V09 tmp3 [V09,T03] ( 3,200 ) ubyte -> x8 "Inline return value spill temp"
+; V09 tmp3 [V09,T03] ( 3,200 ) ubyte -> x3 "Inline return value spill temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref "field V08._list (fldOffset=0x0)" P-INDEP
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref "field V08._current (fldOffset=0x8)" P-INDEP
;* V13 tmp7 [V13 ] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x10)" P-INDEP
-; V14 tmp8 [V14,T12] ( 2, 2.58) int -> x5 "field V08._version (fldOffset=0x14)" P-INDEP
-; V15 tmp9 [V15,T02] ( 6,210.40) ref -> x3 "V04.[000..008)"
-; V16 tmp10 [V16,T04] ( 3,198.71) ref -> x7 "V04.[008..016)"
-; V17 tmp11 [V17,T01] ( 8,498.45) int -> x4 "V04.[016..020)"
-; V18 tmp12 [V18,T06] ( 3,102.29) int -> x5 "V04.[020..024)"
-; V19 tmp13 [V19,T00] ( 3,592.33) ref -> x7 "arr expr"
-; V20 cse0 [V20,T05] ( 2,108.11) int -> x6 hoist "CSE - aggressive"
+; V14 tmp8 [V14,T10] ( 2, 2.58) int -> x22 "field V08._version (fldOffset=0x14)" P-INDEP
+; V15 tmp9 [V15,T02] ( 6,302.29) ref -> x20 "V04.[000..008)"
+; V16 tmp10 [V16,T04] ( 3,198.71) ref -> x2 "V04.[008..016)"
+; V17 tmp11 [V17,T01] ( 8,498.45) int -> x21 "V04.[016..020)"
+; V18 tmp12 [V18,T05] ( 3,102.29) int -> x22 "V04.[020..024)"
+; V19 tmp13 [V19,T00] ( 3,592.33) ref -> x2 "arr expr"
;
; Lcl frame size = 0
G_M51974_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
mov fp, sp
- ldr x2, [fp, #0x58]
- ; gcrRegs +[x2]
- ldp w1, w0, [fp, #0x50]
- ;; size=16 bbWeight=1 PerfScore 5.50
-G_M51974_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ldr x3, [fp, #0x38] // [V04 loc3]
- ; gcrRegs +[x3]
- ldp w4, w5, [fp, #0x48] // [V04 loc3+0x10], [V04 loc3+0x14]
- b G_M51974_IG04
+ ldr x19, [fp, #0x78]
+ ; gcrRegs +[x19]
+ ldp w1, w0, [fp, #0x70]
+ ;; size=24 bbWeight=1 PerfScore 7.50
+G_M51974_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr x20, [fp, #0x58] // [V04 loc3]
+ ; gcrRegs +[x20]
+ ldp w21, w22, [fp, #0x68] // [V04 loc3+0x10], [V04 loc3+0x14]
+ b G_M51974_IG05
;; size=12 bbWeight=1 PerfScore 5.00
-G_M51974_IG03: ; bbWeight=1.29, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x3]
- ldr w5, [x2, #0x14]
- mov x3, x2
- ; gcrRegs +[x3]
- mov w4, wzr
- ;; size=12 bbWeight=1.29 PerfScore 5.15
-G_M51974_IG04: ; bbWeight=8.11, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- ldr w6, [x3, #0x14]
- b G_M51974_IG06
- ;; size=8 bbWeight=8.11 PerfScore 32.46
-G_M51974_IG05: ; bbWeight=98.71, gcrefRegs=008C {x2 x3 x7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x7]
- ldr w7, [x7, #0x1C]
- ; gcrRegs -[x7]
- cbz w7, G_M51974_IG10
+G_M51974_IG03: ; bbWeight=1.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ ldr w22, [x19, #0x14]
+ mov x20, x19
+ ; gcrRegs +[x20]
+ mov w21, wzr
+ b G_M51974_IG05
+ ;; size=16 bbWeight=1.29 PerfScore 6.44
+G_M51974_IG04: ; bbWeight=98.71, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x2]
+ ldr w2, [x2, #0x1C]
+ ; gcrRegs -[x2]
+ cbz w2, G_M51974_IG09
;; size=8 bbWeight=98.71 PerfScore 394.85
-G_M51974_IG06: ; bbWeight=100, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
- cmp w5, w6
- bne G_M51974_IG15
- ldr w7, [x3, #0x10]
- cmp w4, w7
- bhs G_M51974_IG11
- ;; size=20 bbWeight=100 PerfScore 600.00
-G_M51974_IG07: ; bbWeight=98.72, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
- ldr x7, [x3, #0x08]
- ; gcrRegs +[x7]
- ldr w8, [x7, #0x08]
- cmp w4, w8
+G_M51974_IG05: ; bbWeight=100, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr w2, [x20, #0x14]
+ cmp w22, w2
+ bne G_M51974_IG11
+ ldr w2, [x20, #0x10]
+ cmp w21, w2
+ bhs G_M51974_IG10
+ ;; size=24 bbWeight=100 PerfScore 900.00
+G_M51974_IG06: ; bbWeight=98.72, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x2, [x20, #0x08]
+ ; gcrRegs +[x2]
+ ldr w3, [x2, #0x08]
+ cmp w21, w3
bhs G_M51974_IG12
- add x7, x7, #16
- ; gcrRegs -[x7]
- ; byrRegs +[x7]
- ldr x7, [x7, w4, UXTW #3]
- ; gcrRegs +[x7]
- ; byrRegs -[x7]
- add w4, w4, #1
- mov w8, #1
+ add x2, x2, #16
+ ; gcrRegs -[x2]
+ ; byrRegs +[x2]
+ ldr x2, [x2, w21, UXTW #3]
+ ; gcrRegs +[x2]
+ ; byrRegs -[x2]
+ add w21, w21, #1
+ mov w3, #1
;; size=32 bbWeight=98.72 PerfScore 1184.66
-G_M51974_IG08: ; bbWeight=100, gcrefRegs=008C {x2 x3 x7}, byrefRegs=0000 {}, byref, isz
- cbnz w8, G_M51974_IG05
+G_M51974_IG07: ; bbWeight=100, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz w3, G_M51974_IG04
;; size=4 bbWeight=100 PerfScore 100.00
-G_M51974_IG09: ; bbWeight=1.29, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x3 x7]
+G_M51974_IG08: ; bbWeight=1.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x2 x20]
add w1, w1, #1
- movz w3, #0xD1FFAB1E
- movk w3, #15 LSL #16
- cmp w1, w3
+ movz w2, #0xD1FFAB1E
+ movk w2, #15 LSL #16
+ cmp w1, w2
bge G_M51974_IG13
b G_M51974_IG03
;; size=24 bbWeight=1.29 PerfScore 5.15
-G_M51974_IG10: ; bbWeight=6.43, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x3]
+G_M51974_IG09: ; bbWeight=6.43, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x20]
add w0, w0, #1
- b G_M51974_IG06
+ b G_M51974_IG05
;; size=8 bbWeight=6.43 PerfScore 9.65
-G_M51974_IG11: ; bbWeight=1.28, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- ldr w4, [x3, #0x10]
- add w4, w4, #1
- mov x7, xzr
- ; gcrRegs +[x7]
- mov w8, wzr
- b G_M51974_IG08
+G_M51974_IG10: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ldr w2, [x20, #0x10]
+ add w21, w2, #1
+ mov x2, xzr
+ ; gcrRegs +[x2]
+ mov w3, wzr
+ b G_M51974_IG07
;; size=20 bbWeight=1.28 PerfScore 7.03
+G_M51974_IG11: ; bbWeight=1.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2 x19-x20]
+ movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ ldr x0, [x0]
+ blr x0
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=24 bbWeight=1.28 PerfScore 8.31
G_M51974_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2-x3 x7]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
@@ -123,32 +131,25 @@ G_M51974_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cset x0, eq
;; size=16 bbWeight=0 PerfScore 0.00
G_M51974_IG14: ; bbWeight=0, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x30
add sp, sp, #96
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M51974_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x0, [x0]
- blr x0
- ; gcr arg pop 0
- brk_unix #0
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=0 PerfScore 0.00
-Total bytes of code 220, prolog size 16, PerfScore 2349.45, instruction count 55, allocated bytes for code 220 (MethodHash=877634f9) for method LinqBenchmarks:Count00ForX():ubyte:this (Tier1-OSR)
+Total bytes of code 236, prolog size 24, PerfScore 2628.59, instruction count 59, allocated bytes for code 236 (MethodHash=877634f9) for method LinqBenchmarks:Count00ForX():ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 59 (0x0003b) Actual length = 236 (0x0000ec)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -156,7 +157,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ E6 save_next
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
06 alloc_s #6 (0x06); sub sp, sp, #96 (0x060)
E4 end
...
benchmarks.run_tiered.linux.arm64.checked.mch
-28 (-7.61%) : 29574.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
@@ -38,8 +38,8 @@ G_M23091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1]
ldr w14, [x19, #0x60]
- cbnz w14, G_M23091_IG08
- cbz x1, G_M23091_IG09
+ cbnz w14, G_M23091_IG07
+ cbz x1, G_M23091_IG08
add x14, x1, #172
; byrRegs +[x14]
mov w15, #1
@@ -47,7 +47,7 @@ G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180
mov w0, w12
casal w0, w15, [x14]
str w0, [fp, #0x24] // [V07 tmp3]
- cbnz w0, G_M23091_IG10
+ cbnz w0, G_M23091_IG09
mov w14, #4
; byrRegs -[x14]
str w14, [x1, #0x94]
@@ -59,21 +59,10 @@ G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180
; gcrRegs -[x15]
; byrRegs -[x14]
ldrb w0, [x1, #0xBA]
- cbnz w0, G_M23091_IG04
+ cbz w0, G_M23091_IG04
;; size=68 bbWeight=1 PerfScore 19.50
-G_M23091_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M23091_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x0, [x0]
- ; gcrRegs +[x0]
- ldrb w0, [x0, #0x9D]
- ; gcrRegs -[x0]
- cbz w0, G_M23091_IG05
- b G_M23091_IG05
- ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M23091_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -91,7 +80,7 @@ G_M23091_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x0-x1 x15]
; byrRegs -[x14]
;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M23091_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M23091_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
ldr x0, [fp, #0x18] // [V01 arg1]
@@ -106,17 +95,17 @@ G_M23091_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x0-x2 x19-x20]
; gcr arg pop 0
;; size=32 bbWeight=1 PerfScore 11.00
-G_M23091_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
cmp w0, #0xD1FFAB1E
cset x0, eq
;; size=8 bbWeight=1 PerfScore 1.00
-G_M23091_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M23091_IG06: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x40
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M23091_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
@@ -129,7 +118,7 @@ G_M23091_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M23091_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23091_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -146,7 +135,7 @@ G_M23091_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG09: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1]
; GC ptr vars +{V00 V01}
mov x0, x1
@@ -163,14 +152,14 @@ G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
; gcr arg pop 0
brk_unix #0
;; size=32 bbWeight=0 PerfScore 0.00
-G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
add x3, fp, #64
str x3, [sp, #0x18]
;; size=16 bbWeight=0 PerfScore 0.00
-G_M23091_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -186,7 +175,7 @@ G_M23091_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
brk_unix #0
;; size=32 bbWeight=0 PerfScore 0.00
-Total bytes of code 368, prolog size 32, PerfScore 50.00, instruction count 92, allocated bytes for code 368 (MethodHash=03bba5cc) for method System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
+Total bytes of code 340, prolog size 32, PerfScore 45.25, instruction count 85, allocated bytes for code 340 (MethodHash=03bba5cc) for method System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -197,7 +186,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -230,4 +219,4 @@ Unwind Info:
*************** EH table for System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M23091_IG05..G_M23091_IG06) handled by [G_M23091_IG11..END) (class: 1000001)
+EH#0: try [G_M23091_IG04..G_M23091_IG05) handled by [G_M23091_IG10..END) (class: 1000001)
-28 (-7.61%) : 29702.dasm - System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
@@ -38,8 +38,8 @@ G_M29540_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1]
ldr w14, [x19, #0x60]
- cbnz w14, G_M29540_IG08
- cbz x1, G_M29540_IG09
+ cbnz w14, G_M29540_IG07
+ cbz x1, G_M29540_IG08
add x14, x1, #172
; byrRegs +[x14]
mov w15, #1
@@ -47,7 +47,7 @@ G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180
mov w0, w12
casal w0, w15, [x14]
str w0, [fp, #0x24] // [V07 tmp3]
- cbnz w0, G_M29540_IG10
+ cbnz w0, G_M29540_IG09
mov w14, #7
; byrRegs -[x14]
str w14, [x1, #0x94]
@@ -59,21 +59,10 @@ G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180
; gcrRegs -[x15]
; byrRegs -[x14]
ldrb w0, [x1, #0xBA]
- cbnz w0, G_M29540_IG04
+ cbz w0, G_M29540_IG04
;; size=68 bbWeight=1 PerfScore 19.50
-G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x0, [x0]
- ; gcrRegs +[x0]
- ldrb w0, [x0, #0x9D]
- ; gcrRegs -[x0]
- cbz w0, G_M29540_IG05
- b G_M29540_IG05
- ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -91,7 +80,7 @@ G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x0-x1 x15]
; byrRegs -[x14]
;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M29540_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M29540_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
ldr x0, [fp, #0x18] // [V01 arg1]
@@ -106,17 +95,17 @@ G_M29540_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x0-x2 x19-x20]
; gcr arg pop 0
;; size=32 bbWeight=1 PerfScore 11.00
-G_M29540_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
cmp w0, #0xD1FFAB1E
cset x0, eq
;; size=8 bbWeight=1 PerfScore 1.00
-G_M29540_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M29540_IG06: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x40
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M29540_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
@@ -129,7 +118,7 @@ G_M29540_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M29540_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29540_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -146,7 +135,7 @@ G_M29540_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG09: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1]
; GC ptr vars +{V00 V01}
mov x0, x1
@@ -163,14 +152,14 @@ G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
; gcr arg pop 0
brk_unix #0
;; size=32 bbWeight=0 PerfScore 0.00
-G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
add x3, fp, #64
str x3, [sp, #0x18]
;; size=16 bbWeight=0 PerfScore 0.00
-G_M29540_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -186,7 +175,7 @@ G_M29540_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
brk_unix #0
;; size=32 bbWeight=0 PerfScore 0.00
-Total bytes of code 368, prolog size 32, PerfScore 50.00, instruction count 92, allocated bytes for code 368 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
+Total bytes of code 340, prolog size 32, PerfScore 45.25, instruction count 85, allocated bytes for code 340 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -197,7 +186,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -230,4 +219,4 @@ Unwind Info:
*************** EH table for System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M29540_IG05..G_M29540_IG06) handled by [G_M29540_IG11..END) (class: 1000001)
+EH#0: try [G_M29540_IG04..G_M29540_IG05) handled by [G_M29540_IG10..END) (class: 1000001)
-12 (-2.78%) : 50059.dasm - LinqBenchmarks:Where00ForX():ubyte:this (Tier1-OSR)
@@ -10,20 +10,20 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <LinqBenchmarks>
-; V01 loc0 [V01,T22] ( 2, 4 ) ref -> x22 class-hnd <System.Collections.Generic.List`1[Product]>
-; V02 loc1 [V02,T18] ( 3, 17 ) int -> x21
-; V03 loc2 [V03,T16] ( 3, 24 ) int -> x20
-; V04 loc3 [V04,T08] ( 9, 66 ) ref -> x19 class-hnd exact <System.Collections.Generic.List`1[Product]>
-; V05 loc4 [V05,T24] ( 4, 1.03) struct (24) [fp+0xA0] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
+; V01 loc0 [V01,T21] ( 2, 4 ) ref -> x22 class-hnd <System.Collections.Generic.List`1[Product]>
+; V02 loc1 [V02,T17] ( 3, 17 ) int -> x21
+; V03 loc2 [V03,T15] ( 3, 24 ) int -> x20
+; V04 loc3 [V04,T07] ( 9, 66 ) ref -> x19 class-hnd exact <System.Collections.Generic.List`1[Product]>
+; V05 loc4 [V05,T23] ( 4, 1.03) struct (24) [fp+0xA0] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <Product>
-; V07 loc6 [V07,T25] ( 1, 1 ) struct (24) [fp+0x80] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
+; V07 loc6 [V07,T24] ( 1, 1 ) struct (24) [fp+0x80] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
;* V08 loc7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <Product>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T20] ( 3, 12 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[Product]>
-; V11 tmp2 [V11,T06] ( 3, 72.01) int -> x23 "OSR entry state var"
+; V10 tmp1 [V10,T19] ( 3, 12 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[Product]>
+;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V12 tmp3 [V12 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Product]>
-; V13 tmp4 [V13,T15] ( 3, 24 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V14 tmp5 [V14,T12] ( 4, 32 ) int -> x23 "Inline stloc first use temp"
+; V13 tmp4 [V13,T14] ( 3, 24 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V14 tmp5 [V14,T11] ( 4, 32 ) int -> x26 "Inline stloc first use temp"
; V15 tmp6 [V15,T04] ( 3, 80 ) ubyte -> x1 "Inline return value spill temp"
;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
;* V17 tmp8 [V17 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Product]>
@@ -32,24 +32,24 @@
;* V20 tmp11 [V20 ] ( 0, 0 ) ref -> zero-ref "field V12._list (fldOffset=0x0)" P-INDEP
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref "field V12._current (fldOffset=0x8)" P-INDEP
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref "field V12._index (fldOffset=0x10)" P-INDEP
-; V23 tmp14 [V23,T23] ( 2, 4 ) int -> x26 "field V12._version (fldOffset=0x14)" P-INDEP
+; V23 tmp14 [V23,T22] ( 2, 4 ) int -> x25 "field V12._version (fldOffset=0x14)" P-INDEP
;* V24 tmp15 [V24 ] ( 0, 0 ) ref -> zero-ref "field V17._list (fldOffset=0x0)" P-INDEP
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref "field V17._current (fldOffset=0x8)" P-INDEP
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP
-;* V27 tmp18 [V27,T19] ( 0, 0 ) int -> zero-ref "field V17._version (fldOffset=0x14)" P-INDEP
-; V28 tmp19 [V28,T02] ( 5, 82.01) ref -> x24 "V05.[000..008)"
-; V29 tmp20 [V29,T11] ( 5, 40 ) ref -> x2 "V05.[008..016)"
-; V30 tmp21 [V30,T09] ( 8, 50.01) int -> x25 "V05.[016..020)"
-; V31 tmp22 [V31,T07] ( 3, 66.01) int -> x26 "V05.[020..024)"
+;* V27 tmp18 [V27,T18] ( 0, 0 ) int -> zero-ref "field V17._version (fldOffset=0x14)" P-INDEP
+; V28 tmp19 [V28,T02] ( 5, 82.01) ref -> x23 "V05.[000..008)"
+; V29 tmp20 [V29,T10] ( 5, 40 ) ref -> x2 "V05.[008..016)"
+; V30 tmp21 [V30,T08] ( 8, 50.01) int -> x24 "V05.[016..020)"
+; V31 tmp22 [V31,T06] ( 3, 66.01) int -> x25 "V05.[020..024)"
; V32 tmp23 [V32,T03] ( 3, 80 ) ref -> x19 "V07.[000..008)"
;* V33 tmp24 [V33 ] ( 0, 0 ) ref -> zero-ref "V07.[008..016)"
; V34 tmp25 [V34,T01] ( 6,104 ) int -> x0 "V07.[016..020)"
-;* V35 tmp26 [V35,T21] ( 0, 0 ) int -> zero-ref "V07.[020..024)"
-; V36 tmp27 [V36,T10] ( 3, 48 ) ref -> x1 "arr expr"
-; V37 tmp28 [V37,T14] ( 2, 32 ) ref -> x1 "arr expr"
-; V38 cse0 [V38,T13] ( 2, 16 ) int -> x1 multi-def "CSE - aggressive"
-; V39 cse1 [V39,T17] ( 3, 24 ) int -> x1 "CSE - moderate"
-; V40 cse2 [V40,T00] ( 5,152 ) int -> registers multi-def "CSE - aggressive"
+;* V35 tmp26 [V35,T20] ( 0, 0 ) int -> zero-ref "V07.[020..024)"
+; V36 tmp27 [V36,T09] ( 3, 48 ) ref -> x1 "arr expr"
+; V37 tmp28 [V37,T13] ( 2, 32 ) ref -> x1 "arr expr"
+; V38 cse0 [V38,T12] ( 2, 16 ) int -> x1 multi-def "CSE - aggressive"
+; V39 cse1 [V39,T16] ( 3, 24 ) int -> x1 "CSE - moderate"
+; V40 cse2 [V40,T00] ( 5,152 ) int -> x26 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -67,14 +67,13 @@ G_M25128_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[x19]
;; size=36 bbWeight=0.01 PerfScore 0.12
G_M25128_IG02: ; bbWeight=0.01, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- mov w23, wzr
- ldr x24, [fp, #0xA0] // [V05 loc4]
- ; gcrRegs +[x24]
- ldp w25, w26, [fp, #0xB0] // [V05 loc4+0x10], [V05 loc4+0x14]
- b G_M25128_IG04
- ;; size=16 bbWeight=0.01 PerfScore 0.06
+ ldr x23, [fp, #0xA0] // [V05 loc4]
+ ; gcrRegs +[x23]
+ ldp w24, w25, [fp, #0xB0] // [V05 loc4+0x10], [V05 loc4+0x14]
+ b G_M25128_IG06
+ ;; size=12 bbWeight=0.01 PerfScore 0.05
G_M25128_IG03: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19 x24]
+ ; gcrRegs -[x19 x23]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -88,36 +87,33 @@ G_M25128_IG03: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
str x0, [x19, #0x08]
- ldr w26, [x22, #0x14]
- mov x24, x22
- ; gcrRegs +[x24]
- mov w25, wzr
- ;; size=48 bbWeight=2 PerfScore 19.00
-G_M25128_IG04: ; bbWeight=8, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=0000 {}, byref, isz
- cbz w23, G_M25128_IG07
- b G_M25128_IG07
- ;; size=8 bbWeight=8 PerfScore 16.00
-G_M25128_IG05: ; bbWeight=8, gcrefRegs=1480004 {x2 x19 x22 x24}, byrefRegs=0000 {}, byref, isz
+ ldr w25, [x22, #0x14]
+ mov x23, x22
+ ; gcrRegs +[x23]
+ mov w24, wzr
+ b G_M25128_IG06
+ ;; size=52 bbWeight=2 PerfScore 21.00
+G_M25128_IG04: ; bbWeight=8, gcrefRegs=C80004 {x2 x19 x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x2]
ldr w1, [x2, #0x1C]
- cbnz w1, G_M25128_IG07
- ldp w23, w1, [x19, #0x10]
+ cbnz w1, G_M25128_IG06
+ ldp w26, w1, [x19, #0x10]
add w1, w1, #1
str w1, [x19, #0x14]
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
- cmp w1, w23
- bls G_M25128_IG06
- add w1, w23, #1
+ cmp w1, w26
+ bls G_M25128_IG05
+ add w1, w26, #1
str w1, [x19, #0x10]
- sxtw x1, w23
+ sxtw x1, w26
bl CORINFO_HELP_ARRADDR_ST
; gcrRegs -[x0 x2]
; gcr arg pop 0
- b G_M25128_IG07
+ b G_M25128_IG06
;; size=56 bbWeight=8 PerfScore 160.00
-G_M25128_IG06: ; bbWeight=8, gcrefRegs=1480004 {x2 x19 x22 x24}, byrefRegs=0000 {}, byref
+G_M25128_IG05: ; bbWeight=8, gcrefRegs=C80004 {x2 x19 x22 x23}, byrefRegs=0000 {}, byref
; gcrRegs +[x2]
mov x0, x19
; gcrRegs +[x0]
@@ -132,74 +128,73 @@ G_M25128_IG06: ; bbWeight=8, gcrefRegs=1480004 {x2 x19 x22 x24}, byrefReg
; gcrRegs -[x0-x1]
; gcr arg pop 0
;; size=28 bbWeight=8 PerfScore 52.00
-G_M25128_IG07: ; bbWeight=64, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=0000 {}, byref, isz
- mov w23, #1
- ldr w1, [x24, #0x14]
- cmp w26, w1
- bne G_M25128_IG21
- ;; size=16 bbWeight=64 PerfScore 320.00
-G_M25128_IG08: ; bbWeight=8, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=0000 {}, byref, isz
- ldr w1, [x24, #0x10]
+G_M25128_IG06: ; bbWeight=64, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, byref, isz
+ ldr w1, [x23, #0x14]
cmp w25, w1
- bhs G_M25128_IG09
- ldr x1, [x24, #0x08]
+ bne G_M25128_IG20
+ ;; size=12 bbWeight=64 PerfScore 288.00
+G_M25128_IG07: ; bbWeight=8, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, byref, isz
+ ldr w1, [x23, #0x10]
+ cmp w24, w1
+ bhs G_M25128_IG08
+ ldr x1, [x23, #0x08]
; gcrRegs +[x1]
ldr w0, [x1, #0x08]
- cmp w25, w0
- bhs G_M25128_IG20
+ cmp w24, w0
+ bhs G_M25128_IG19
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
- ldr x2, [x1, w25, UXTW #3]
+ ldr x2, [x1, w24, UXTW #3]
; gcrRegs +[x2]
- add w25, w25, #1
+ add w24, w24, #1
mov w1, #1
; byrRegs -[x1]
- b G_M25128_IG10
+ b G_M25128_IG09
;; size=48 bbWeight=8 PerfScore 140.00
-G_M25128_IG09: ; bbWeight=8, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=0000 {}, byref
+G_M25128_IG08: ; bbWeight=8, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
- add w25, w1, #1
+ add w24, w1, #1
mov x2, xzr
; gcrRegs +[x2]
mov w1, wzr
;; size=12 bbWeight=8 PerfScore 12.00
-G_M25128_IG10: ; bbWeight=64, gcrefRegs=1480004 {x2 x19 x22 x24}, byrefRegs=0000 {}, byref, isz
- cbnz w1, G_M25128_IG05
+G_M25128_IG09: ; bbWeight=64, gcrefRegs=C80004 {x2 x19 x22 x23}, byrefRegs=0000 {}, byref, isz
+ cbnz w1, G_M25128_IG04
;; size=4 bbWeight=64 PerfScore 64.00
-G_M25128_IG11: ; bbWeight=8, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2 x24]
+G_M25128_IG10: ; bbWeight=8, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2 x23]
ldr wzr, [x19, #0x14]
mov w0, wzr
- b G_M25128_IG13
+ b G_M25128_IG12
;; size=12 bbWeight=8 PerfScore 36.00
-G_M25128_IG12: ; bbWeight=8, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M25128_IG11: ; bbWeight=8, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
add w21, w21, #1
;; size=4 bbWeight=8 PerfScore 4.00
-G_M25128_IG13: ; bbWeight=64, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- ldr w1, [x19, #0x10]
- cmp w0, w1
- bhs G_M25128_IG15
+G_M25128_IG12: ; bbWeight=64, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ldr w26, [x19, #0x10]
+ cmp w0, w26
+ bhs G_M25128_IG14
;; size=12 bbWeight=64 PerfScore 288.00
-G_M25128_IG14: ; bbWeight=8, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M25128_IG13: ; bbWeight=8, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
cmp w0, w1
- bhs G_M25128_IG20
+ bhs G_M25128_IG19
add w0, w0, #1
mov w1, #1
- b G_M25128_IG16
+ b G_M25128_IG15
;; size=28 bbWeight=8 PerfScore 76.00
-G_M25128_IG15: ; bbWeight=8, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- add w0, w1, #1
+G_M25128_IG14: ; bbWeight=8, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ add w0, w26, #1
mov w1, wzr
;; size=8 bbWeight=8 PerfScore 8.00
-G_M25128_IG16: ; bbWeight=64, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- cbnz w1, G_M25128_IG12
+G_M25128_IG15: ; bbWeight=64, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ cbnz w1, G_M25128_IG11
;; size=4 bbWeight=64 PerfScore 64.00
-G_M25128_IG17: ; bbWeight=8, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+G_M25128_IG16: ; bbWeight=8, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19]
add w20, w20, #1
movz w0, #0xD1FFAB1E
...
-8 (-0.20%) : 47647.dasm - System.IO.Strategies.BufferedFileStreamStrategy+d__37:MoveNext():this (Tier1)
@@ -30,15 +30,15 @@
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V20 tmp1 [V20 ] ( 0, 0 ) int -> zero-ref "dup spill"
; V21 tmp2 [V21 ] ( 8, 16 ) struct (16) [fp+0x38] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
-; V22 tmp3 [V22,T36] ( 3, 6 ) ref -> x4 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V22 tmp3 [V22,T35] ( 3, 6 ) ref -> x4 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V23 tmp4 [V23 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask`1[int]>
-; V24 tmp5 [V24,T44] ( 3, 6 ) int -> x1 "impAppendStmt"
+; V24 tmp5 [V24,T43] ( 3, 6 ) int -> x1 "impAppendStmt"
;* V25 tmp6 [V25 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V26 tmp7 [V26 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V27 tmp8 [V27 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask`1[int]>
;* V28 tmp9 [V28 ] ( 0, 0 ) int -> zero-ref "dup spill"
; V29 tmp10 [V29 ] ( 5, 10 ) struct (16) [fp+0x28] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
-; V30 tmp11 [V30,T37] ( 3, 6 ) ref -> x5 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V30 tmp11 [V30,T36] ( 3, 6 ) ref -> x5 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V31 tmp12 [V31 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask>
;* V32 tmp13 [V32 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V33 tmp14 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
@@ -48,7 +48,7 @@
; V37 tmp18 [V37,T128] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V38 tmp19 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp20 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V40 tmp21 [V40,T38] ( 3, 6 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V40 tmp21 [V40,T37] ( 3, 6 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V41 tmp22 [V41 ] ( 0, 0 ) ref -> zero-ref
; V42 tmp23 [V42,T96] ( 2, 2 ) ref -> x14 single-def
;* V43 tmp24 [V43,T117] ( 0, 0 ) int -> zero-ref
@@ -66,14 +66,14 @@
;* V55 tmp36 [V55 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V56 tmp37 [V56 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V57 tmp38 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
-; V58 tmp39 [V58,T39] ( 3, 6 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V58 tmp39 [V58,T38] ( 3, 6 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
; V59 tmp40 [V59,T68] ( 2, 4 ) int -> x2 "Inlining Arg"
;* V60 tmp41 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V61 tmp42 [V61,T04] ( 12, 12 ) int -> x20 "Inline return value spill temp"
-; V62 tmp43 [V62,T45] ( 3, 6 ) int -> x3 "Inlining Arg"
-; V63 tmp44 [V63,T46] ( 3, 6 ) int -> x1 "Inlining Arg"
+; V62 tmp43 [V62,T44] ( 3, 6 ) int -> x3 "Inlining Arg"
+; V63 tmp44 [V63,T45] ( 3, 6 ) int -> x1 "Inlining Arg"
; V64 tmp45 [V64,T11] ( 4, 8 ) ref -> x1 class-hnd single-def "Inlining Arg" <ubyte[]>
-; V65 tmp46 [V65,T33] ( 4, 6 ) int -> x2 "Inlining Arg"
+; V65 tmp46 [V65,T46] ( 3, 6 ) int -> x2 "Inlining Arg"
;* V66 tmp47 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V67 tmp48 [V67 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
; V68 tmp49 [V68,T27] ( 6, 6 ) byref -> x24 "Inline stloc first use temp"
@@ -196,8 +196,8 @@
; V185 tmp166 [V185,T75] ( 2, 4 ) long -> x2 "Inlining Arg"
; V186 tmp167 [V186,T05] ( 6, 12 ) ref -> x0 class-hnd "Inlining Arg" <System.Threading.SemaphoreSlim>
; V187 tmp168 [V187,T08] ( 5, 10 ) byref -> x14 single-def "Inlining Arg"
-; V188 tmp169 [V188,T40] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox[int]>
-; V189 tmp170 [V189,T41] ( 3, 6 ) byref -> x0 single-def "Inlining Arg"
+; V188 tmp169 [V188,T39] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox[int]>
+; V189 tmp170 [V189,T40] ( 3, 6 ) byref -> x0 single-def "Inlining Arg"
; V190 tmp171 [V190 ] ( 6, 6 ) ref -> [fp+0x98] do-not-enreg[X] addr-exposed "field V04.m_task (fldOffset=0x0)" P-DEP
; V191 tmp172 [V191 ] ( 6, 6 ) int -> [fp+0xA0] do-not-enreg[X] addr-exposed "field V04.m_options (fldOffset=0x8)" P-DEP
;* V192 tmp173 [V192 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
@@ -210,8 +210,8 @@
; V199 tmp180 [V199,T59] ( 4, 4 ) short -> [fp+0x64] do-not-enreg[] "field V14._token (fldOffset=0xc)" P-DEP
; V200 tmp181 [V200,T107] ( 2, 2 ) ubyte -> [fp+0x66] do-not-enreg[] "field V14._continueOnCapturedContext (fldOffset=0xe)" P-DEP
; V201 tmp182 [V201,T32] ( 4, 6 ) ref -> [fp+0x38] do-not-enreg[] "field V21._object (fldOffset=0x0)" P-DEP
-; V202 tmp183 [V202,T34] ( 4, 6 ) int -> [fp+0x40] do-not-enreg[] "field V21._index (fldOffset=0x8)" P-DEP
-; V203 tmp184 [V203,T35] ( 4, 6 ) int -> [fp+0x44] do-not-enreg[] "field V21._length (fldOffset=0xc)" P-DEP
+; V202 tmp183 [V202,T33] ( 4, 6 ) int -> [fp+0x40] do-not-enreg[] "field V21._index (fldOffset=0x8)" P-DEP
+; V203 tmp184 [V203,T34] ( 4, 6 ) int -> [fp+0x44] do-not-enreg[] "field V21._length (fldOffset=0xc)" P-DEP
;* V204 tmp185 [V204 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
;* V205 tmp186 [V205 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
; V206 tmp187 [V206,T51] ( 3, 5 ) ref -> [fp+0x28] do-not-enreg[] "field V29._object (fldOffset=0x0)" P-DEP
@@ -269,10 +269,10 @@
;* V258 tmp239 [V258 ] ( 0, 0 ) int -> zero-ref "field V181._length (fldOffset=0x8)" P-INDEP
;* V259 tmp240 [V259 ] ( 0, 0 ) byref -> zero-ref single-def "field V182._reference (fldOffset=0x0)" P-INDEP
;* V260 tmp241 [V260 ] ( 0, 0 ) int -> zero-ref "field V182._length (fldOffset=0x8)" P-INDEP
-; V261 tmp242 [V261,T42] ( 3, 6 ) ref -> x1 single-def "argument with side effect"
+; V261 tmp242 [V261,T41] ( 3, 6 ) ref -> x1 single-def "argument with side effect"
; V262 tmp243 [V262,T64] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V263 tmp244 [V263,T65] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V264 tmp245 [V264,T43] ( 3, 6 ) ref -> x4 single-def "argument with side effect"
+; V264 tmp245 [V264,T42] ( 3, 6 ) ref -> x4 single-def "argument with side effect"
; V265 tmp246 [V265,T66] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V266 tmp247 [V266,T67] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V267 PSPSym [V267,T127] ( 1, 1 ) long -> [fp+0xB0] do-not-enreg[V] "PSPSym"
@@ -421,7 +421,7 @@ G_M33324_IG06: ; bbWeight=1, gcVars=0000000000000000000000000000000000000
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M33324_IG92
+ b G_M33324_IG91
;; size=80 bbWeight=1 PerfScore 21.00
G_M33324_IG07: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000003 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, nogc
; gcrRegs +[x19]
@@ -491,7 +491,7 @@ G_M33324_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ble G_M33324_IG15
ldr x1, [x19, #0x20]
; gcrRegs +[x1]
- cbz x1, G_M33324_IG75
+ cbz x1, G_M33324_IG74
mov w3, w2
add x3, x3, w20, UXTW
ldr w4, [x1, #0x08]
@@ -596,7 +596,7 @@ G_M33324_IG14: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=1200000 {x2
blr x1
; gcr arg pop 0
cmp w22, w25
- bhi G_M33324_IG76
+ bhi G_M33324_IG75
mov w2, w22
mov x0, x24
; byrRegs +[x0]
@@ -620,7 +620,7 @@ G_M33324_IG15: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0},
cmp w20, w1
bne G_M33324_IG16
str w20, [fp, #0xA8] // [V03 loc2]
- b G_M33324_IG80
+ b G_M33324_IG79
;; size=20 bbWeight=1 PerfScore 6.50
G_M33324_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
cmp w20, #0
@@ -629,7 +629,7 @@ G_M33324_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0},
; byrRegs +[x1]
ldr w2, [x1, #0x0C]
cmp w20, w2
- bhi G_M33324_IG77
+ bhi G_M33324_IG76
ldr x21, [x1]
; gcrRegs +[x21]
ldr w1, [x1, #0x08]
@@ -949,7 +949,7 @@ G_M33324_IG28: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
ldr w0, [x21, #0x14]
add w0, w20, w0
str w0, [fp, #0xA8] // [V03 loc2]
- b G_M33324_IG86
+ b G_M33324_IG85
;; size=16 bbWeight=1 PerfScore 5.50
G_M33324_IG29: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x21]
@@ -1032,7 +1032,7 @@ G_M33324_IG33: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M33324_IG82
+ b G_M33324_IG81
;; size=96 bbWeight=1 PerfScore 24.50
G_M33324_IG34: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, nogc
; byrRegs -[x21]
@@ -1140,7 +1140,7 @@ G_M33324_IG41: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M33324_IG84
+ b G_M33324_IG83
;; size=92 bbWeight=1 PerfScore 22.50
G_M33324_IG42: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x21]
@@ -1411,7 +1411,7 @@ G_M33324_IG57: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M33324_IG88
+ b G_M33324_IG87
;; size=96 bbWeight=1 PerfScore 24.50
G_M33324_IG58: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x21]
@@ -1666,7 +1666,7 @@ G_M33324_IG73: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=2600000 {x2
blr x1
; gcr arg pop 0
cmp w23, w26
- bhi G_M33324_IG76
+ bhi G_M33324_IG75
mov w2, w23
mov x0, x25
; byrRegs +[x0]
@@ -1679,7 +1679,7 @@ G_M33324_IG73: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=2600000 {x2
blr x3
; byrRegs -[x0-x1 x22 x25]
; gcr arg pop 0
- b G_M33324_IG78
+ b G_M33324_IG77
;; size=72 bbWeight=1 PerfScore 16.00
G_M33324_IG74: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x21]
@@ -1691,13 +1691,7 @@ G_M33324_IG74: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M33324_IG75: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
- ; byrRegs +[x0]
- cbnz w2, G_M33324_IG74
- b G_M33324_IG74
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M33324_IG76: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; byrRegs -[x0]
+G_M33324_IG75: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -1706,7 +1700,7 @@ G_M33324_IG76: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M33324_IG77: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M33324_IG76: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov w0, #33
movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
movk x1, #0xD1FFAB1E LSL #16
@@ -1716,7 +1710,7 @@ G_M33324_IG77: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M33324_IG78: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
+G_M33324_IG77: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
; byrRegs +[x21]
ldr w0, [x19, #0x30]
add w0, w0, w20
@@ -1725,9 +1719,9 @@ G_M33324_IG78: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
add w0, w0, w20
str w0, [fp, #0xA8] // [V03 loc2]
;; size=24 bbWeight=1 PerfScore 9.00
-G_M33324_IG79: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+G_M33324_IG78: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
ldr w0, [fp, #0xAC] // [V01 loc0]
- tbz w0, #31, G_M33324_IG90
+ tbz w0, #31, G_M33324_IG89
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldrsb wzr, [x0]
@@ -1740,51 +1734,51 @@ G_M33324_IG79: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
blr x2
; gcrRegs -[x0 x19]
; gcr arg pop 0
- b G_M33324_IG90
+ b G_M33324_IG89
;; size=44 bbWeight=1 PerfScore 16.00
-G_M33324_IG80: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000003 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, gcvars, byref
+G_M33324_IG79: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000003 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs +[x19]
; byrRegs -[x21] +[x0]
; GC ptr vars +{V01 V02}
ldr x0, [fp, #0xB0] // [V267 PSPSym]
; byrRegs -[x0]
- bl G_M33324_IG93
+ bl G_M33324_IG92
;; size=8 bbWeight=1 PerfScore 3.00
-G_M33324_IG81: ; bbWeight=1, nogc, extend
- b G_M33324_IG90
+G_M33324_IG80: ; bbWeight=1, nogc, extend
+ b G_M33324_IG89
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG82: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
+G_M33324_IG81: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
...
+0 (0.00%) : 30914.dasm - PerfLabTests.LowLevelPerf:ForeachOverList100Elements():int:this (Tier1-OSR)
@@ -10,27 +10,26 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.LowLevelPerf>
-; V01 loc0 [V01,T11] ( 2, 4 ) ref -> x2 class-hnd <System.Collections.Generic.List`1[int]>
-; V02 loc1 [V02,T10] ( 2, 9 ) int -> x1
-; V03 loc2 [V03,T07] ( 3, 24 ) int -> x0
-; V04 loc3 [V04,T13] ( 4, 1.03) struct (24) [fp+0x38] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[int]>
+; V01 loc0 [V01,T09] ( 2, 4 ) ref -> x2 class-hnd <System.Collections.Generic.List`1[int]>
+; V02 loc1 [V02,T08] ( 2, 9 ) int -> x1
+; V03 loc2 [V03,T05] ( 3, 24 ) int -> x0
+; V04 loc3 [V04,T11] ( 4, 1.03) struct (24) [fp+0x38] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[int]>
;* V05 loc4 [V05 ] ( 0, 0 ) int -> zero-ref
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V07 tmp1 [V07,T03] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]>
-; V09 tmp3 [V09,T00] ( 3, 80 ) ubyte -> x8 "Inline return value spill temp"
+; V09 tmp3 [V09,T01] ( 3, 80 ) ubyte -> x7 "Inline return value spill temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[int]>
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref "field V08._list (fldOffset=0x0)" P-INDEP
;* V12 tmp6 [V12 ] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x8)" P-INDEP
-; V13 tmp7 [V13,T12] ( 2, 4 ) int -> x5 "field V08._version (fldOffset=0xc)" P-INDEP
+; V13 tmp7 [V13,T10] ( 2, 4 ) int -> x5 "field V08._version (fldOffset=0xc)" P-INDEP
;* V14 tmp8 [V14 ] ( 0, 0 ) int -> zero-ref "field V08._current (fldOffset=0x10)" P-INDEP
-; V15 tmp9 [V15,T06] ( 5, 26.01) ref -> x3 "V04.[000..008)"
-; V16 tmp10 [V16,T04] ( 8, 50.01) int -> x4 "V04.[008..012)"
+; V15 tmp9 [V15,T00] ( 5, 82.01) ref -> x3 "V04.[000..008)"
+; V16 tmp10 [V16,T03] ( 8, 50.01) int -> x4 "V04.[008..012)"
; V17 tmp11 [V17,T02] ( 3, 66.01) int -> x5 "V04.[012..016)"
-; V18 tmp12 [V18,T08] ( 3, 24 ) int -> x7 "V04.[016..020)"
-; V19 tmp13 [V19,T05] ( 3, 48 ) ref -> x7 "arr expr"
-; V20 cse0 [V20,T01] ( 2, 72 ) int -> x6 hoist "CSE - aggressive"
-; V21 cse1 [V21,T09] ( 3, 24 ) int -> x7 "CSE - aggressive"
+; V18 tmp12 [V18,T06] ( 3, 24 ) int -> x6 "V04.[016..020)"
+; V19 tmp13 [V19,T04] ( 3, 48 ) ref -> x6 "arr expr"
+; V20 cse0 [V20,T07] ( 3, 24 ) int -> x6 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -45,7 +44,7 @@ G_M6486_IG02: ; bbWeight=0.01, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, by
ldr x3, [fp, #0x38] // [V04 loc3]
; gcrRegs +[x3]
ldp w4, w5, [fp, #0x40] // [V04 loc3+0x08], [V04 loc3+0x0c]
- b G_M6486_IG04
+ b G_M6486_IG05
;; size=12 bbWeight=0.01 PerfScore 0.05
G_M6486_IG03: ; bbWeight=2, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x3]
@@ -53,45 +52,43 @@ G_M6486_IG03: ; bbWeight=2, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
mov x3, x2
; gcrRegs +[x3]
mov w4, wzr
- ;; size=12 bbWeight=2 PerfScore 8.00
+ b G_M6486_IG05
+ ;; size=16 bbWeight=2 PerfScore 10.00
G_M6486_IG04: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- ldr w6, [x3, #0x14]
- b G_M6486_IG06
- ;; size=8 bbWeight=8 PerfScore 32.00
-G_M6486_IG05: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- sxtw w1, w7
+ sxtw w1, w6
;; size=4 bbWeight=8 PerfScore 4.00
-G_M6486_IG06: ; bbWeight=64, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+G_M6486_IG05: ; bbWeight=64, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+ ldr w6, [x3, #0x14]
cmp w5, w6
- bne G_M6486_IG14
- ;; size=8 bbWeight=64 PerfScore 96.00
-G_M6486_IG07: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
- ldr w7, [x3, #0x10]
+ bne G_M6486_IG13
+ ;; size=12 bbWeight=64 PerfScore 288.00
+G_M6486_IG06: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+ ldr w6, [x3, #0x10]
+ cmp w4, w6
+ bhs G_M6486_IG07
+ ldr x6, [x3, #0x08]
+ ; gcrRegs +[x6]
+ ldr w7, [x6, #0x08]
cmp w4, w7
- bhs G_M6486_IG08
- ldr x7, [x3, #0x08]
- ; gcrRegs +[x7]
- ldr w8, [x7, #0x08]
- cmp w4, w8
- bhs G_M6486_IG13
- add x7, x7, #16
- ; gcrRegs -[x7]
- ; byrRegs +[x7]
- ldr w7, [x7, w4, UXTW #2]
- ; byrRegs -[x7]
+ bhs G_M6486_IG12
+ add x6, x6, #16
+ ; gcrRegs -[x6]
+ ; byrRegs +[x6]
+ ldr w6, [x6, w4, UXTW #2]
+ ; byrRegs -[x6]
add w4, w4, #1
- mov w8, #1
- b G_M6486_IG09
+ mov w7, #1
+ b G_M6486_IG08
;; size=48 bbWeight=8 PerfScore 140.00
-G_M6486_IG08: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- add w4, w7, #1
+G_M6486_IG07: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
+ add w4, w6, #1
+ mov w6, wzr
mov w7, wzr
- mov w8, wzr
;; size=12 bbWeight=8 PerfScore 12.00
-G_M6486_IG09: ; bbWeight=64, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
- cbnz w8, G_M6486_IG05
+G_M6486_IG08: ; bbWeight=64, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+ cbnz w7, G_M6486_IG04
;; size=4 bbWeight=64 PerfScore 64.00
-G_M6486_IG10: ; bbWeight=8, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M6486_IG09: ; bbWeight=8, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x3]
add w0, w0, #1
movz x3, #0xD1FFAB1E // data for <unknown class>:<unknown field>
@@ -101,20 +98,20 @@ G_M6486_IG10: ; bbWeight=8, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
cmp w0, w4
blt G_M6486_IG03
;; size=28 bbWeight=8 PerfScore 52.00
-G_M6486_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6486_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
mov w0, w1
;; size=4 bbWeight=1 PerfScore 0.50
-G_M6486_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M6486_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
add sp, sp, #96
ret lr
;; size=12 bbWeight=1 PerfScore 2.50
-G_M6486_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6486_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M6486_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6486_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -124,7 +121,7 @@ G_M6486_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 196, prolog size 16, PerfScore 411.11, instruction count 49, allocated bytes for code 196 (MethodHash=b0f1e6a9) for method PerfLabTests.LowLevelPerf:ForeachOverList100Elements():int:this (Tier1-OSR)
+Total bytes of code 196, prolog size 16, PerfScore 573.11, instruction count 49, allocated bytes for code 196 (MethodHash=b0f1e6a9) for method PerfLabTests.LowLevelPerf:ForeachOverList100Elements():int:this (Tier1-OSR)
; ============================================================
Unwind Info:
+0 (0.00%) : 54291.dasm - LinqBenchmarks:Count00ForX():ubyte:this (Tier1-OSR)
@@ -10,27 +10,26 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <LinqBenchmarks>
-; V01 loc0 [V01,T11] ( 2, 4 ) ref -> x2 class-hnd <System.Collections.Generic.List`1[Product]>
-; V02 loc1 [V02,T10] ( 3, 17 ) int -> x1
-; V03 loc2 [V03,T08] ( 3, 24 ) int -> x0
-; V04 loc3 [V04,T13] ( 4, 1.03) struct (24) [fp+0x38] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
+; V01 loc0 [V01,T09] ( 2, 4 ) ref -> x2 class-hnd <System.Collections.Generic.List`1[Product]>
+; V02 loc1 [V02,T08] ( 3, 17 ) int -> x1
+; V03 loc2 [V03,T06] ( 3, 24 ) int -> x0
+; V04 loc3 [V04,T11] ( 4, 1.03) struct (24) [fp+0x38] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <Product>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V07 tmp1 [V07,T03] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Product]>
-; V09 tmp3 [V09,T00] ( 3, 80 ) ubyte -> x8 "Inline return value spill temp"
+; V09 tmp3 [V09,T01] ( 3, 80 ) ubyte -> x7 "Inline return value spill temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref "field V08._list (fldOffset=0x0)" P-INDEP
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref "field V08._current (fldOffset=0x8)" P-INDEP
;* V13 tmp7 [V13 ] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x10)" P-INDEP
-; V14 tmp8 [V14,T12] ( 2, 4 ) int -> x5 "field V08._version (fldOffset=0x14)" P-INDEP
-; V15 tmp9 [V15,T06] ( 5, 26.01) ref -> x3 "V04.[000..008)"
-; V16 tmp10 [V16,T07] ( 3, 24 ) ref -> x7 "V04.[008..016)"
-; V17 tmp11 [V17,T04] ( 8, 50.01) int -> x4 "V04.[016..020)"
+; V14 tmp8 [V14,T10] ( 2, 4 ) int -> x5 "field V08._version (fldOffset=0x14)" P-INDEP
+; V15 tmp9 [V15,T00] ( 5, 82.01) ref -> x3 "V04.[000..008)"
+; V16 tmp10 [V16,T05] ( 3, 24 ) ref -> x6 "V04.[008..016)"
+; V17 tmp11 [V17,T03] ( 8, 50.01) int -> x4 "V04.[016..020)"
; V18 tmp12 [V18,T02] ( 3, 66.01) int -> x5 "V04.[020..024)"
-; V19 tmp13 [V19,T05] ( 3, 48 ) ref -> x7 "arr expr"
-; V20 cse0 [V20,T01] ( 2, 72 ) int -> x6 hoist "CSE - aggressive"
-; V21 cse1 [V21,T09] ( 3, 24 ) int -> x7 "CSE - aggressive"
+; V19 tmp13 [V19,T04] ( 3, 48 ) ref -> x6 "arr expr"
+; V20 cse0 [V20,T07] ( 3, 24 ) int -> x6 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -45,7 +44,7 @@ G_M51974_IG02: ; bbWeight=0.01, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
ldr x3, [fp, #0x38] // [V04 loc3]
; gcrRegs +[x3]
ldp w4, w5, [fp, #0x48] // [V04 loc3+0x10], [V04 loc3+0x14]
- b G_M51974_IG04
+ b G_M51974_IG05
;; size=12 bbWeight=0.01 PerfScore 0.05
G_M51974_IG03: ; bbWeight=2, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x3]
@@ -53,76 +52,74 @@ G_M51974_IG03: ; bbWeight=2, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byre
mov x3, x2
; gcrRegs +[x3]
mov w4, wzr
- ;; size=12 bbWeight=2 PerfScore 8.00
-G_M51974_IG04: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- ldr w6, [x3, #0x14]
- b G_M51974_IG06
- ;; size=8 bbWeight=8 PerfScore 32.00
-G_M51974_IG05: ; bbWeight=8, gcrefRegs=008C {x2 x3 x7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x7]
- ldr w7, [x7, #0x1C]
- ; gcrRegs -[x7]
- cbnz w7, G_M51974_IG06
+ b G_M51974_IG05
+ ;; size=16 bbWeight=2 PerfScore 10.00
+G_M51974_IG04: ; bbWeight=8, gcrefRegs=004C {x2 x3 x6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x6]
+ ldr w6, [x6, #0x1C]
+ ; gcrRegs -[x6]
+ cbnz w6, G_M51974_IG05
add w1, w1, #1
;; size=12 bbWeight=8 PerfScore 36.00
-G_M51974_IG06: ; bbWeight=64, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+G_M51974_IG05: ; bbWeight=64, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+ ldr w6, [x3, #0x14]
cmp w5, w6
- bne G_M51974_IG14
- ;; size=8 bbWeight=64 PerfScore 96.00
-G_M51974_IG07: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
- ldr w7, [x3, #0x10]
+ bne G_M51974_IG13
+ ;; size=12 bbWeight=64 PerfScore 288.00
+G_M51974_IG06: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+ ldr w6, [x3, #0x10]
+ cmp w4, w6
+ bhs G_M51974_IG07
+ ldr x6, [x3, #0x08]
+ ; gcrRegs +[x6]
+ ldr w7, [x6, #0x08]
cmp w4, w7
- bhs G_M51974_IG08
- ldr x7, [x3, #0x08]
- ; gcrRegs +[x7]
- ldr w8, [x7, #0x08]
- cmp w4, w8
- bhs G_M51974_IG13
- add x7, x7, #16
- ; gcrRegs -[x7]
- ; byrRegs +[x7]
- ldr x7, [x7, w4, UXTW #3]
- ; gcrRegs +[x7]
- ; byrRegs -[x7]
+ bhs G_M51974_IG12
+ add x6, x6, #16
+ ; gcrRegs -[x6]
+ ; byrRegs +[x6]
+ ldr x6, [x6, w4, UXTW #3]
+ ; gcrRegs +[x6]
+ ; byrRegs -[x6]
add w4, w4, #1
- mov w8, #1
- b G_M51974_IG09
+ mov w7, #1
+ b G_M51974_IG08
;; size=48 bbWeight=8 PerfScore 140.00
-G_M51974_IG08: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x7]
- add w4, w7, #1
- mov x7, xzr
- ; gcrRegs +[x7]
- mov w8, wzr
+G_M51974_IG07: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x6]
+ add w4, w6, #1
+ mov x6, xzr
+ ; gcrRegs +[x6]
+ mov w7, wzr
;; size=12 bbWeight=8 PerfScore 12.00
-G_M51974_IG09: ; bbWeight=64, gcrefRegs=008C {x2 x3 x7}, byrefRegs=0000 {}, byref, isz
- cbnz w8, G_M51974_IG05
+G_M51974_IG08: ; bbWeight=64, gcrefRegs=004C {x2 x3 x6}, byrefRegs=0000 {}, byref, isz
+ cbnz w7, G_M51974_IG04
;; size=4 bbWeight=64 PerfScore 64.00
-G_M51974_IG10: ; bbWeight=8, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x3 x7]
+G_M51974_IG09: ; bbWeight=8, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x3 x6]
add w0, w0, #1
movz w3, #0xD1FFAB1E
movk w3, #15 LSL #16
cmp w0, w3
blt G_M51974_IG03
;; size=20 bbWeight=8 PerfScore 24.00
-G_M51974_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51974_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
movz w0, #0xD1FFAB1E
movk w0, #76 LSL #16
cmp w1, w0
cset x0, eq
;; size=16 bbWeight=1 PerfScore 2.00
-G_M51974_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M51974_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
add sp, sp, #96
ret lr
;; size=12 bbWeight=1 PerfScore 2.50
-G_M51974_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M51974_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M51974_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51974_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -132,7 +129,7 @@ G_M51974_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 208, prolog size 16, PerfScore 416.61, instruction count 52, allocated bytes for code 208 (MethodHash=877634f9) for method LinqBenchmarks:Count00ForX():ubyte:this (Tier1-OSR)
+Total bytes of code 208, prolog size 16, PerfScore 578.61, instruction count 52, allocated bytes for code 208 (MethodHash=877634f9) for method LinqBenchmarks:Count00ForX():ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
coreclr_tests.run.linux.arm64.checked.mch
-44 (-55.00%) : 560910.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 5, 4 ) float -> d0 single-def
+;* V00 loc0 [V00 ] ( 0, 0 ) float -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 4 ) float -> d0 "Single return block return value"
+; V02 tmp1 [V02,T00] ( 2, 4 ) float -> d0 "Single return block return value"
;
; Lcl frame size = 0
@@ -18,34 +18,19 @@ G_M53791_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
- fmov s16, #10.0000
- fcmp s0, s16
- ble G_M53791_IG04
- ;; size=32 bbWeight=1 PerfScore 8.00
-G_M53791_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M53791_IG05
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M53791_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- fmov s16, #10.0000
- fcmp s0, s16
- blo G_M53791_IG03
- fmov s16, #10.0000
- fcmp s0, s16
- bne G_M53791_IG03
- b G_M53791_IG03
- ;; size=28 bbWeight=0.50 PerfScore 3.00
-G_M53791_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M53791_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-Total bytes of code 80, prolog size 8, PerfScore 15.50, instruction count 20, allocated bytes for code 80 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -56,7 +41,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-43.75%) : 560858.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 4, 3.50) float -> d0 single-def
+;* V00 loc0 [V00 ] ( 0, 0 ) float -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
@@ -17,28 +17,19 @@ G_M53663_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
- fmov s16, #10.0000
- fcmp s0, s16
- bhs G_M53663_IG04
- ;; size=32 bbWeight=1 PerfScore 8.00
-G_M53663_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M53663_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- fmov s16, #10.0000
- fcmp s0, s16
- bne G_M53663_IG03
- b G_M53663_IG03
- ;; size=16 bbWeight=0.50 PerfScore 1.75
-Total bytes of code 64, prolog size 8, PerfScore 13.25, instruction count 16, allocated bytes for code 64 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -49,7 +40,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-43.75%) : 554511.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 4, 3.50) float -> d0 single-def
+; V00 loc0 [V00,T00] ( 2, 2 ) float -> d0 single-def
;* V01 loc1 [V01 ] ( 0, 0 ) float -> zero-ref
;* V02 loc2 [V02 ] ( 0, 0 ) float -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -19,28 +19,19 @@ G_M53663_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
- fmov s16, #10.0000
- fcmp s0, s16
- bhs G_M53663_IG04
- ;; size=32 bbWeight=1 PerfScore 8.00
-G_M53663_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M53663_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- fmov s16, #10.0000
- fcmp s0, s16
- bne G_M53663_IG03
- b G_M53663_IG03
- ;; size=16 bbWeight=0.50 PerfScore 1.75
-Total bytes of code 64, prolog size 8, PerfScore 13.25, instruction count 16, allocated bytes for code 64 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -51,7 +42,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+6.25%) : 438393.dasm - testout1:SubFunclet106():int (FullOpts)
@@ -19,7 +19,7 @@
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref single-def
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref
-;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref single-def
+;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref single-def
@@ -28,61 +28,61 @@
;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref single-def
;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref
;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref
-;* V20 tmp15 [V20,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V20 tmp15 [V20,T21] ( 0, 0 ) int -> zero-ref single-def
;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp18 [V23,T09] ( 2, 2 ) int -> x1 single-def
+; V23 tmp18 [V23,T10] ( 2, 2 ) int -> x2 single-def
;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp21 [V26,T10] ( 2, 2 ) int -> x1 single-def
+; V26 tmp21 [V26,T11] ( 2, 2 ) int -> x2 single-def
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp23 [V28 ] ( 0, 0 ) int -> zero-ref
-; V29 tmp24 [V29,T11] ( 2, 2 ) int -> x1 single-def
+; V29 tmp24 [V29,T12] ( 2, 2 ) int -> x2 single-def
;* V30 tmp25 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp26 [V31 ] ( 0, 0 ) int -> zero-ref
-; V32 tmp27 [V32,T12] ( 2, 2 ) int -> x0 single-def
+;* V32 tmp27 [V32,T13] ( 0, 0 ) int -> zero-ref single-def
;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp30 [V35,T13] ( 2, 2 ) int -> x0 single-def
+;* V35 tmp30 [V35,T14] ( 0, 0 ) int -> zero-ref single-def
;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref
-;* V38 tmp33 [V38,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp35 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp36 [V41,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp36 [V41,T22] ( 0, 0 ) int -> zero-ref single-def
;* V42 tmp37 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp38 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp39 [V44,T15] ( 0, 0 ) int -> zero-ref single-def
+; V44 tmp39 [V44,T15] ( 2, 2 ) int -> x2 single-def
;* V45 tmp40 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp41 [V46 ] ( 0, 0 ) int -> zero-ref
-;* V47 tmp42 [V47,T16] ( 0, 0 ) int -> zero-ref single-def
+; V47 tmp42 [V47,T16] ( 2, 2 ) int -> x1 single-def
;* V48 tmp43 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp44 [V49 ] ( 0, 0 ) int -> zero-ref
-;* V50 tmp45 [V50,T17] ( 0, 0 ) int -> zero-ref single-def
+; V50 tmp45 [V50,T17] ( 2, 2 ) int -> x1 single-def
;* V51 tmp46 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp47 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp48 [V53,T24] ( 0, 0 ) int -> zero-ref single-def
+; V53 tmp48 [V53,T18] ( 2, 2 ) int -> x1 single-def
;* V54 tmp49 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp50 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp51 [V56,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp51 [V56,T19] ( 0, 0 ) int -> zero-ref single-def
;* V57 tmp52 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp53 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp54 [V59,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp54 [V59,T20] ( 0, 0 ) int -> zero-ref single-def
;* V60 tmp55 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp56 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp57 [V62,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp57 [V62,T23] ( 0, 0 ) int -> zero-ref single-def
;* V63 tmp58 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp59 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp60 [V65,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp60 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp61 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp62 [V67 ] ( 0, 0 ) int -> zero-ref
-; V68 cse0 [V68,T05] ( 2, 2 ) int -> x0 "CSE - aggressive"
-;* V69 cse1 [V69,T21] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V70 cse2 [V70,T03] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V71 cse3 [V71,T06] ( 2, 2 ) int -> x1 "CSE - aggressive"
-; V72 cse4 [V72,T07] ( 2, 2 ) int -> x2 "CSE - aggressive"
-; V73 cse5 [V73,T04] ( 3, 3 ) long -> x1 "CSE - aggressive"
-; V74 cse6 [V74,T08] ( 2, 2 ) long -> x0 "CSE - aggressive"
+; V68 cse0 [V68,T04] ( 2, 2 ) int -> x2 "CSE - aggressive"
+; V69 cse1 [V69,T05] ( 2, 2 ) int -> x0 "CSE - aggressive"
+; V70 cse2 [V70,T06] ( 3, 3 ) int -> x1 "CSE - aggressive"
+; V71 cse3 [V71,T07] ( 3, 3 ) int -> x3 "CSE - aggressive"
+; V72 cse4 [V72,T08] ( 3, 3 ) int -> x0 "CSE - aggressive"
+; V73 cse5 [V73,T03] ( 3, 3 ) long -> x1 "CSE - aggressive"
+; V74 cse6 [V74,T09] ( 2, 2 ) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -134,21 +134,24 @@ G_M50161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str w1, [x19, #0x08]
strh w2, [x19, #0x0C]
ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ sxtw w2, w1
+ add w2, w2, #17
+ ldp w0, w3, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
+ add w2, w2, w3
+ add w2, w2, w0
+ add w1, w2, w1
+ add w1, w1, #17
+ add w1, w1, w3
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=168 bbWeight=1 PerfScore 31.50
+ ;; size=180 bbWeight=1 PerfScore 33.00
G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-Total bytes of code 192, prolog size 12, PerfScore 38.00, instruction count 48, allocated bytes for code 192 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
+Total bytes of code 204, prolog size 12, PerfScore 39.50, instruction count 51, allocated bytes for code 204 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
; ============================================================
Unwind Info:
@@ -159,7 +162,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+6.25%) : 437976.dasm - testout1:SubFunclet106():int (FullOpts)
@@ -15,14 +15,14 @@
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
; V05 loc5 [V05,T01] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T04] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T03] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
; V08 loc8 [V08,T00] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref single-def
+;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref single-def
@@ -31,60 +31,60 @@
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref single-def
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-;* V23 tmp14 [V23,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V23 tmp14 [V23,T20] ( 0, 0 ) int -> zero-ref single-def
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T08] ( 2, 2 ) int -> x1 single-def
+; V26 tmp17 [V26,T09] ( 2, 2 ) int -> x2 single-def
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-; V29 tmp20 [V29,T09] ( 2, 2 ) int -> x1 single-def
+; V29 tmp20 [V29,T10] ( 2, 2 ) int -> x2 single-def
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
-; V32 tmp23 [V32,T10] ( 2, 2 ) int -> x1 single-def
+; V32 tmp23 [V32,T11] ( 2, 2 ) int -> x2 single-def
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp26 [V35,T11] ( 2, 2 ) int -> x0 single-def
+;* V35 tmp26 [V35,T12] ( 0, 0 ) int -> zero-ref single-def
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
-; V38 tmp29 [V38,T12] ( 2, 2 ) int -> x0 single-def
+;* V38 tmp29 [V38,T13] ( 0, 0 ) int -> zero-ref single-def
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T13] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V44 tmp35 [V44,T21] ( 0, 0 ) int -> zero-ref single-def
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
-;* V47 tmp38 [V47,T14] ( 0, 0 ) int -> zero-ref single-def
+; V47 tmp38 [V47,T14] ( 2, 2 ) int -> x2 single-def
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
-;* V50 tmp41 [V50,T15] ( 0, 0 ) int -> zero-ref single-def
+; V50 tmp41 [V50,T15] ( 2, 2 ) int -> x1 single-def
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp44 [V53,T16] ( 0, 0 ) int -> zero-ref single-def
+; V53 tmp44 [V53,T16] ( 2, 2 ) int -> x1 single-def
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T23] ( 0, 0 ) int -> zero-ref single-def
+; V56 tmp47 [V56,T17] ( 2, 2 ) int -> x1 single-def
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp50 [V59,T18] ( 0, 0 ) int -> zero-ref single-def
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp53 [V62,T19] ( 0, 0 ) int -> zero-ref single-def
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp56 [V65,T22] ( 0, 0 ) int -> zero-ref single-def
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
-;* V68 tmp59 [V68,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref
-; V71 cse0 [V71,T05] ( 2, 2 ) int -> x0 "CSE - aggressive"
-;* V72 cse1 [V72,T20] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V73 cse2 [V73,T02] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V74 cse3 [V74,T06] ( 2, 2 ) int -> x1 "CSE - aggressive"
-; V75 cse4 [V75,T07] ( 2, 2 ) int -> x2 "CSE - aggressive"
-; V76 cse5 [V76,T03] ( 3, 3 ) long -> x1 "CSE - aggressive"
+; V71 cse0 [V71,T04] ( 2, 2 ) int -> x2 "CSE - aggressive"
+; V72 cse1 [V72,T05] ( 2, 2 ) int -> x0 "CSE - aggressive"
+; V73 cse2 [V73,T06] ( 3, 3 ) int -> x1 "CSE - aggressive"
+; V74 cse3 [V74,T07] ( 3, 3 ) int -> x3 "CSE - aggressive"
+; V75 cse4 [V75,T08] ( 3, 3 ) int -> x0 "CSE - aggressive"
+; V76 cse5 [V76,T02] ( 3, 3 ) long -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -136,21 +136,24 @@ G_M50161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str w1, [x19, #0x08]
strh w2, [x19, #0x0C]
ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ sxtw w2, w1
+ add w2, w2, #17
+ ldp w0, w3, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
+ add w2, w2, w3
+ add w2, w2, w0
+ add w1, w2, w1
+ add w1, w1, #17
+ add w1, w1, w3
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=168 bbWeight=1 PerfScore 31.50
+ ;; size=180 bbWeight=1 PerfScore 33.00
G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-Total bytes of code 192, prolog size 12, PerfScore 38.00, instruction count 48, allocated bytes for code 192 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
+Total bytes of code 204, prolog size 12, PerfScore 39.50, instruction count 51, allocated bytes for code 204 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
; ============================================================
Unwind Info:
@@ -161,7 +164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+7.14%) : 566402.dasm - Runtime_56495:TestEntryPoint():int (FullOpts)
@@ -33,8 +33,11 @@ G_M15390_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M15390_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ brk_unix #0
+ ;; size=4 bbWeight=1 PerfScore 1.00
-Total bytes of code 56, prolog size 8, PerfScore 11.50, instruction count 14, allocated bytes for code 56 (MethodHash=25a3c3e1) for method Runtime_56495:TestEntryPoint():int (FullOpts)
+Total bytes of code 60, prolog size 8, PerfScore 12.50, instruction count 15, allocated bytes for code 60 (MethodHash=25a3c3e1) for method Runtime_56495:TestEntryPoint():int (FullOpts)
; ============================================================
Unwind Info:
@@ -45,7 +48,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries.pmi.linux.arm64.checked.mch
-32 (-13.33%) : 263860.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
@@ -7,7 +7,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 9, 4 ) int -> x19 single-def
+; V00 arg0 [V00,T00] ( 6, 4 ) int -> x19 single-def
; V01 arg1 [V01,T01] ( 4, 2 ) ref -> x20 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -26,11 +26,11 @@ G_M20631_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x20]
;; size=24 bbWeight=1 PerfScore 4.50
G_M20631_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ mov w0, #250
cmp w19, #0xD1FFAB1E
- bgt G_M20631_IG07
- cmp w19, #250
- bne G_M20631_IG06
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ccmp w19, w0, 0, le
+ bne G_M20631_IG04
+ ;; size=16 bbWeight=1 PerfScore 2.50
G_M20631_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -93,23 +93,10 @@ G_M20631_IG05: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs +[x0]
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x21]
- ;; size=60 bbWeight=0 PerfScore 0.00
-G_M20631_IG06: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x20]
- sub w0, w19, #0xD1FFAB1E
- cmp w0, #1
- bls G_M20631_IG04
- b G_M20631_IG04
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M20631_IG07: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- mov w0, #0xD1FFAB1E
- cmp w19, #0xD1FFAB1E
- ccmp w19, w0, z, ne
- beq G_M20631_IG04
- b G_M20631_IG04
- ;; size=20 bbWeight=0 PerfScore 0.00
+ brk_unix #0
+ ;; size=64 bbWeight=0 PerfScore 0.00
-Total bytes of code 240, prolog size 16, PerfScore 12.50, instruction count 60, allocated bytes for code 240 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
+Total bytes of code 208, prolog size 16, PerfScore 12.00, instruction count 52, allocated bytes for code 208 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
; ============================================================
Unwind Info:
@@ -120,7 +107,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-12.00%) : 21666.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeint:int (FullOpts)
@@ -10,7 +10,7 @@
;
; V00 arg0 [V00,T06] ( 3, 6 ) byref -> x0 single-def
; V01 arg1 [V01,T04] ( 4, 6.33) int -> x1 ld-addr-op single-def
-; V02 arg2 [V02,T05] ( 4, 6.33) int -> x2 ld-addr-op single-def
+; V02 arg2 [V02,T05] ( 3, 6 ) int -> x2 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> x3 single-def
; V04 loc0 [V04,T00] ( 7, 19.67) int -> x3
; V05 loc1 [V05,T07] ( 2, 8 ) byref -> x4
@@ -18,7 +18,7 @@
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.66) int -> x5 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.66) int -> x4 "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> x4 "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> x4 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -48,7 +48,7 @@ G_M34838_IG04: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, b
;; size=8 bbWeight=0.33 PerfScore 0.49
G_M34838_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w2, w4
- bge G_M34838_IG11
+ bge G_M34838_IG08
;; size=8 bbWeight=4 PerfScore 6.00
G_M34838_IG06: ; bbWeight=1.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
@@ -71,16 +71,8 @@ G_M34838_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M34838_IG11: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w2, w4
- ble G_M34838_IG08
- ;; size=8 bbWeight=0.33 PerfScore 0.49
-G_M34838_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- b G_M34838_IG08
- ;; size=4 bbWeight=0.04 PerfScore 0.04
-Total bytes of code 100, prolog size 8, PerfScore 47.46, instruction count 25, allocated bytes for code 100 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+Total bytes of code 88, prolog size 8, PerfScore 46.92, instruction count 22, allocated bytes for code 88 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -91,7 +83,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-11.54%) : 293417.dasm - System.Net.Sockets.UdpReceiveResult:op_Equality(System.Net.Sockets.UdpReceiveResult,System.Net.Sockets.UdpReceiveResult):ubyte (FullOpts)
@@ -18,9 +18,9 @@
; V07 tmp5 [V07,T05] ( 4, 1 ) ubyte -> x0 "Inline return value spill temp"
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Net.IPEndPoint>
;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Net.IPEndPoint>
-; V10 tmp8 [V10,T00] ( 3, 2.41) ref -> x0 single-def "field V00._buffer (fldOffset=0x0)" P-INDEP
+; V10 tmp8 [V10,T00] ( 2, 2 ) ref -> x0 single-def "field V00._buffer (fldOffset=0x0)" P-INDEP
; V11 tmp9 [V11,T02] ( 5, 2.07) ref -> x4 single-def "field V00._remoteEndPoint (fldOffset=0x8)" P-INDEP
-; V12 tmp10 [V12,T01] ( 3, 2.41) ref -> x2 single-def "field V01._buffer (fldOffset=0x0)" P-INDEP
+; V12 tmp10 [V12,T01] ( 2, 2 ) ref -> x2 single-def "field V01._buffer (fldOffset=0x0)" P-INDEP
; V13 tmp11 [V13,T03] ( 4, 1.99) ref -> x3 single-def "field V01._remoteEndPoint (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
@@ -34,37 +34,25 @@ G_M22145_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M22145_IG02: ; bbWeight=1, gcrefRegs=001D {x0 x2 x3 x4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0 x2-x3]
cmp x0, x2
- beq G_M22145_IG06
+ bne G_M22145_IG10
;; size=8 bbWeight=1 PerfScore 1.50
-G_M22145_IG03: ; bbWeight=0.41, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x3-x4]
- cbz x0, G_M22145_IG13
- ;; size=4 bbWeight=0.41 PerfScore 0.41
-G_M22145_IG04: ; bbWeight=0.41, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- cbnz x2, G_M22145_IG13
- ;; size=4 bbWeight=0.41 PerfScore 0.41
-G_M22145_IG05: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
- b G_M22145_IG13
- ;; size=4 bbWeight=0.32 PerfScore 0.32
-G_M22145_IG06: ; bbWeight=0.50, gcrefRegs=0018 {x3 x4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x3-x4]
+G_M22145_IG03: ; bbWeight=0.50, gcrefRegs=0018 {x3 x4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x2]
cmp x4, x3
- beq G_M22145_IG12
+ beq G_M22145_IG09
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M22145_IG07: ; bbWeight=0.41, gcrefRegs=0018 {x3 x4}, byrefRegs=0000 {}, byref, isz
- cbz x4, G_M22145_IG09
+G_M22145_IG04: ; bbWeight=0.41, gcrefRegs=0018 {x3 x4}, byrefRegs=0000 {}, byref, isz
+ cbz x4, G_M22145_IG06
;; size=4 bbWeight=0.41 PerfScore 0.41
-G_M22145_IG08: ; bbWeight=0.41, gcrefRegs=0018 {x3 x4}, byrefRegs=0000 {}, byref, isz
- cbnz x3, G_M22145_IG10
+G_M22145_IG05: ; bbWeight=0.41, gcrefRegs=0018 {x3 x4}, byrefRegs=0000 {}, byref, isz
+ cbnz x3, G_M22145_IG07
;; size=4 bbWeight=0.41 PerfScore 0.41
-G_M22145_IG09: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22145_IG06: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x3-x4]
mov w0, wzr
- b G_M22145_IG11
+ b G_M22145_IG08
;; size=8 bbWeight=0.32 PerfScore 0.49
-G_M22145_IG10: ; bbWeight=0.08, gcrefRegs=0018 {x3 x4}, byrefRegs=0000 {}, byref
+G_M22145_IG07: ; bbWeight=0.08, gcrefRegs=0018 {x3 x4}, byrefRegs=0000 {}, byref
; gcrRegs +[x3-x4]
mov x0, x4
; gcrRegs +[x0]
@@ -76,22 +64,22 @@ G_M22145_IG10: ; bbWeight=0.08, gcrefRegs=0018 {x3 x4}, byrefRegs=0000 {}
blr x2
; gcrRegs -[x0-x1 x3-x4]
;; size=24 bbWeight=0.08 PerfScore 0.90
-G_M22145_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M22145_IG14
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M22145_IG12: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, #1
+G_M22145_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
b G_M22145_IG11
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M22145_IG09: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ b G_M22145_IG08
;; size=8 bbWeight=0.09 PerfScore 0.14
-G_M22145_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22145_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M22145_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M22145_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-Total bytes of code 104, prolog size 8, PerfScore 10.48, instruction count 26, allocated bytes for code 104 (MethodHash=a75ea97e) for method System.Net.Sockets.UdpReceiveResult:op_Equality(System.Net.Sockets.UdpReceiveResult,System.Net.Sockets.UdpReceiveResult):ubyte (FullOpts)
+Total bytes of code 92, prolog size 8, PerfScore 9.35, instruction count 23, allocated bytes for code 92 (MethodHash=a75ea97e) for method System.Net.Sockets.UdpReceiveResult:op_Equality(System.Net.Sockets.UdpReceiveResult,System.Net.Sockets.UdpReceiveResult):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -102,7 +90,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 217588.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
@@ -57,7 +57,7 @@ G_M57654_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M57654_IG02: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x54]
cmp w0, #10
- bhi G_M57654_IG06
+ bhi G_M57654_IG16
mov w0, w0
adr x1, [@RWD00]
ldr w1, [x1, x0, LSL #2]
@@ -87,7 +87,7 @@ G_M57654_IG04: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
sub w23, w0, #1
cmp w23, #2
- bhi G_M57654_IG06
+ bhi G_M57654_IG16
mov w0, w23
adr x1, [@RWD44]
ldr w1, [x1, x0, LSL #2]
@@ -95,22 +95,10 @@ G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
add x1, x1, x2
br x1
;; size=36 bbWeight=0.50 PerfScore 4.00
-G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19 x21]
- mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M57654_IG07: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
- ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19 x21]
+G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x5C]
cmn w0, #1
- beq G_M57654_IG12
+ beq G_M57654_IG10
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -119,7 +107,7 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M57654_IG12
+ cbz w0, G_M57654_IG10
mov x0, x21
; gcrRegs +[x0]
mov w1, w22
@@ -131,12 +119,12 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
blr x3
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w20, G_M57654_IG06
+ cbz w20, G_M57654_IG16
ldr w0, [x19, #0x60]
- cbnz w0, G_M57654_IG10
+ cbnz w0, G_M57654_IG08
ldr x0, [x19, #0x38]
; gcrRegs +[x0]
- cbz x0, G_M57654_IG09
+ cbz x0, G_M57654_IG07
mov x1, x0
; gcrRegs +[x1]
ldr x1, [x1]
@@ -145,15 +133,15 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M57654_IG09
+ bne G_M57654_IG07
ldr x1, [x1, #0x50]
ldr x1, [x1, #0x08]
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- b G_M57654_IG10
+ b G_M57654_IG08
;; size=132 bbWeight=0.50 PerfScore 24.50
-G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+G_M57654_IG07: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -168,7 +156,7 @@ G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
; gcrRegs -[x0 x15]
; byrRegs -[x14]
;; size=28 bbWeight=0.50 PerfScore 2.25
-G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M57654_IG08: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x60]
ldr x1, [x19, #0x40]
; gcrRegs +[x1]
@@ -176,7 +164,7 @@ G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
cmp w0, w1
- beq G_M57654_IG06
+ beq G_M57654_IG16
ldr x0, [x19, #0x38]
; gcrRegs +[x0]
mov x1, x21
@@ -213,7 +201,7 @@ G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
ldr x1, [x1, #0x48]
ldr x1, [x1, #0x20]
;; size=124 bbWeight=0.50 PerfScore 34.00
-G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M57654_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -221,7 +209,7 @@ G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
br x1
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M57654_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x21]
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
@@ -233,7 +221,7 @@ G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
ldr x4, [x4, #0x90]
ldr x4, [x4, #0x30]
;; size=28 bbWeight=0.50 PerfScore 6.75
-G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -241,12 +229,12 @@ G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend
br x4
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57654_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0-x1]
mov w0, #10
str w0, [x19, #0x54]
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M57654_IG13: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
mov x1, x21
@@ -260,7 +248,7 @@ G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
; gcrRegs -[x0-x1 x21]
; gcr arg pop 0
sxtw w23, w0
- cbnz w23, G_M57654_IG16
+ cbnz w23, G_M57654_IG14
mov w0, #1
str w0, [x19, #0x54]
mov x0, x19
@@ -273,9 +261,19 @@ G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
; gcrRegs -[x0 x19]
; gcr arg pop 0
;; size=72 bbWeight=0.50 PerfScore 11.75
-G_M57654_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57654_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sxtw w0, w23
;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M57654_IG15: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x40
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M57654_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M57654_IG17: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
@@ -340,20 +338,20 @@ G_M57654_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=80 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG14 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG03 - G_M57654_IG02
- dd G_M57654_IG03 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG15 - G_M57654_IG02
-RWD44 dd G_M57654_IG18 - G_M57654_IG02
- dd G_M57654_IG08 - G_M57654_IG02
+RWD00 dd G_M57654_IG16 - G_M57654_IG02
dd G_M57654_IG12 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG03 - G_M57654_IG02
+ dd G_M57654_IG03 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG13 - G_M57654_IG02
+RWD44 dd G_M57654_IG18 - G_M57654_IG02
+ dd G_M57654_IG06 - G_M57654_IG02
+ dd G_M57654_IG10 - G_M57654_IG02
Total bytes of code 760, prolog size 36, PerfScore 125.50, instruction count 190, allocated bytes for code 760 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
+0 (0.00%) : 252708.dasm - System.IO.Ports.SerialPort:set_DiscardNull(ubyte):this (FullOpts)
@@ -29,7 +29,7 @@ G_M56816_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
cbz x2, G_M56816_IG04
;; size=8 bbWeight=1 PerfScore 4.00
G_M56816_IG03: ; bbWeight=0.50, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref
- ldr x2, [x2, #0x20]
+ ldr xzr, [x2, #0x20]
;; size=4 bbWeight=0.50 PerfScore 1.50
G_M56816_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
+8 (+0.28%) : 111382.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeCoverageInstrumenter:GetCreatePayloadStatement(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SourceSpan],Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.SyntheticBoundNodeFactory,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider):Microsoft.CodeAnalysis.VisualBasic.BoundExpressionStatement (FullOpts)
@@ -95,7 +95,7 @@
; V84 tmp67 [V84,T60] ( 5, 2.50) ref -> x2
; V85 tmp68 [V85,T33] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V86 tmp69 [V86,T53] ( 3, 3 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V87 tmp70 [V87,T117] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V87 tmp70 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V88 tmp71 [V88,T92] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
;* V89 tmp72 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.DiagnosticInfo>
;* V90 tmp73 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>>
@@ -171,7 +171,7 @@
; V160 tmp143 [V160,T66] ( 3, 2 ) int -> x0
;* V161 tmp144 [V161 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V162 tmp145 [V162,T79] ( 2, 2 ) ubyte -> x14 "Inline return value spill temp"
-;* V163 tmp146 [V163,T118] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V163 tmp146 [V163,T117] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
; V164 tmp147 [V164,T102] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
;* V165 tmp148 [V165 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V166 tmp149 [V166 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -199,7 +199,7 @@
;* V188 tmp171 [V188 ] ( 0, 0 ) ref -> zero-ref "field V20.array (fldOffset=0x0)" P-INDEP
;* V189 tmp172 [V189 ] ( 0, 0 ) ref -> zero-ref single-def "field V24.array (fldOffset=0x0)" P-INDEP
;* V190 tmp173 [V190,T114] ( 0, 0 ) ref -> zero-ref single-def "field V25._array (fldOffset=0x0)" P-INDEP
-;* V191 tmp174 [V191,T119] ( 0, 0 ) int -> zero-ref single-def "field V25._index (fldOffset=0x8)" P-INDEP
+;* V191 tmp174 [V191,T118] ( 0, 0 ) int -> zero-ref single-def "field V25._index (fldOffset=0x8)" P-INDEP
;* V192 tmp175 [V192 ] ( 0, 0 ) ref -> zero-ref single-def "field V55._nodeOrParent (fldOffset=0x0)" P-INDEP
;* V193 tmp176 [V193 ] ( 0, 0 ) ref -> zero-ref single-def "field V55._token (fldOffset=0x8)" P-INDEP
;* V194 tmp177 [V194 ] ( 0, 0 ) int -> zero-ref single-def "field V55._position (fldOffset=0x10)" P-INDEP
@@ -243,8 +243,8 @@
; V232 tmp215 [V232,T93] ( 3, 1.50) int -> [fp+0x78] "V53.[020..024)"
;* V233 tmp216 [V233,T115] ( 0, 0 ) ref -> zero-ref single-def "V68.[000..008)"
;* V234 tmp217 [V234,T116] ( 0, 0 ) ref -> zero-ref single-def "V68.[008..016)"
-;* V235 tmp218 [V235,T120] ( 0, 0 ) int -> zero-ref single-def "V68.[016..020)"
-;* V236 tmp219 [V236,T121] ( 0, 0 ) int -> zero-ref single-def "V68.[020..024)"
+;* V235 tmp218 [V235,T119] ( 0, 0 ) int -> zero-ref single-def "V68.[016..020)"
+;* V236 tmp219 [V236,T120] ( 0, 0 ) int -> zero-ref single-def "V68.[020..024)"
;* V237 tmp220 [V237 ] ( 0, 0 ) ref -> zero-ref single-def "V56.[000..008)"
;* V238 tmp221 [V238 ] ( 0, 0 ) ref -> zero-ref single-def "V56.[008..016)"
;* V239 tmp222 [V239 ] ( 0, 0 ) int -> zero-ref single-def "V56.[016..020)"
@@ -261,7 +261,7 @@
; V250 tmp233 [V250,T76] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
; V251 tmp234 [V251,T57] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
; V252 tmp235 [V252,T77] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-;* V253 cse0 [V253,T122] ( 0, 0 ) long -> zero-ref "CSE - conservative"
+;* V253 cse0 [V253,T121] ( 0, 0 ) long -> zero-ref "CSE - conservative"
; V254 cse1 [V254,T58] ( 3, 3 ) long -> x25 "CSE - conservative"
; V255 cse2 [V255,T27] ( 3, 6 ) ref -> x1 "CSE - moderate"
; V256 cse3 [V256,T90] ( 3, 1.50) ref -> x6 "CSE - conservative"
@@ -328,7 +328,7 @@ G_M20504_IG03: ; bbWeight=0.50, gcrefRegs=3E80002 {x1 x19 x21 x22 x23 x24
; gcrRegs -[x1]
mov x28, x0
; gcrRegs +[x28]
- b G_M20504_IG31
+ b G_M20504_IG32
;; size=64 bbWeight=0.50 PerfScore 9.25
G_M20504_IG04: ; bbWeight=0.50, gcrefRegs=7F80000 {x19 x20 x21 x22 x23 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x28] +[x20 x26]
@@ -568,10 +568,10 @@ G_M20504_IG18: ; bbWeight=0.50, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x
; gcrRegs -[x0]
ldr x0, [x28, #0x38]
; gcrRegs +[x0]
- cbz x0, G_M20504_IG44
+ cbz x0, G_M20504_IG45
ldr x14, [x0, #0x08]
; gcrRegs +[x14]
- cbnz x14, G_M20504_IG43
+ cbnz x14, G_M20504_IG44
add x14, x0, #8
; gcrRegs -[x14]
; byrRegs +[x14]
@@ -580,7 +580,7 @@ G_M20504_IG18: ; bbWeight=0.50, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x28]
; byrRegs -[x14]
- b G_M20504_IG44
+ b G_M20504_IG45
;; size=60 bbWeight=0.50 PerfScore 10.00
G_M20504_IG19: ; bbWeight=1.00, gcVars=00000000000000000000004000080004 {V14 V28 V29}, gcrefRegs=17F80000 {x19 x20 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x20 x28]
@@ -602,19 +602,16 @@ G_M20504_IG22: ; bbWeight=0.50, gcVars=00000002010000000000004004000000 {
; gcrRegs -[x26]
; byrRegs -[x0 x4]
; GC ptr vars -{V05 V28 V29 V30 V34 V36} +{V58 V88 V97 V214 V215}
- ldr x5, [fp, #0x30] // [V58 tmp41]
- ; gcrRegs +[x5]
- ldr x0, [x5, #0x10]
- ; gcrRegs +[x0]
- cbz x0, G_M20504_IG29
- mov x2, x5
+ cbnz w0, G_M20504_IG30
+ ldr x2, [fp, #0x30] // [V58 tmp41]
; gcrRegs +[x2]
ldp x3, x26, [fp, #0x18] // [V215 tmp198], [V214 tmp197]
; gcrRegs +[x3 x26]
+ stp x3, x26, [fp, #0x18] // [V215 tmp198], [V214 tmp197]
b G_M20504_IG24
- ;; size=24 bbWeight=0.50 PerfScore 5.25
+ ;; size=20 bbWeight=0.50 PerfScore 4.00
G_M20504_IG23: ; bbWeight=0.00, gcVars=00000000000000000000004000080024 {V14 V28 V29 V34}, gcrefRegs=17F80000 {x19 x20 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x2-x3 x5]
+ ; gcrRegs -[x2-x3]
; GC ptr vars -{V58 V88 V97 V214 V215} +{V02 V05 V28 V29 V34}
sxtw x1, w7
movz x0, #0xD1FFAB1E
@@ -634,22 +631,51 @@ G_M20504_IG23: ; bbWeight=0.00, gcVars=00000000000000000000004000080024 {
; gcrRegs +[x4]
b G_M20504_IG16
;; size=40 bbWeight=0.00 PerfScore 0.01
-G_M20504_IG24: ; bbWeight=0.50, gcVars=00000000000000000000004004000000 {V14 V58}, gcrefRegs=17F8000D {x0 x2 x3 x19 x20 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x4] +[x0 x2-x3]
- ; GC ptr vars -{V28 V29} +{V58}
- cbz x26, G_M20504_IG28
+G_M20504_IG24: ; bbWeight=0.50, gcVars=00000002010000000000004004000000 {V14 V58 V214 V215}, gcrefRegs=13F80000 {x19 x20 x21 x22 x23 x24 x25 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x4 x26]
+ ; GC ptr vars -{V28 V29} +{V58 V88 V97 V214 V215}
+ ldr x5, [fp, #0x30] // [V58 tmp41]
+ ; gcrRegs +[x5]
+ ldr x0, [x5, #0x10]
+ ; gcrRegs +[x0]
+ cbz x0, G_M20504_IG30
+ mov x2, x5
+ ; gcrRegs +[x2]
+ ldp x3, x26, [fp, #0x18] // [V215 tmp198], [V214 tmp197]
+ ; gcrRegs +[x3 x26]
b G_M20504_IG26
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=24 bbWeight=0.50 PerfScore 5.25
G_M20504_IG25: ; bbWeight=0.36, gcVars=00000000000000000000004000080004 {V14 V28 V29}, gcrefRegs=17F80010 {x4 x19 x20 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x2-x3] +[x4]
- ; GC ptr vars -{V58} +{V02 V28 V29}
+ ; gcrRegs -[x0 x2-x3 x5] +[x4]
+ ; GC ptr vars -{V58 V88 V97 V214 V215} +{V02 V28 V29}
sxtw w7, w5
ldr w5, [fp, #0xC4] // [V30 tmp13]
b G_M20504_IG08
;; size=12 bbWeight=0.36 PerfScore 1.26
-G_M20504_IG26: ; bbWeight=0.50, gcVars=00000000000000000000004004000000 {V14 V58}, gcrefRegs=17F8000D {x0 x2 x3 x19 x20 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref
+G_M20504_IG26: ; bbWeight=0.50, gcVars=00000000000000000000004004000000 {V14 V58}, gcrefRegs=17F8000D {x0 x2 x3 x19 x20 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x4] +[x0 x2-x3]
; GC ptr vars -{V02 V28 V29} +{V58}
+ cbz x26, G_M20504_IG29
+ b G_M20504_IG28
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M20504_IG27: ; bbWeight=0.00, gcVars=00000000000000000000004040080024 {V14 V28 V29 V34 V36}, gcrefRegs=17F80000 {x19 x20 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0011 {x0 x4}, gcvars, byref
+ ; gcrRegs -[x0 x2-x3]
+ ; byrRegs +[x0 x4]
+ ; GC ptr vars -{V58} +{V02 V05 V28 V29 V30 V34 V36}
+ mov x1, x4
+ ; byrRegs +[x1]
+ movz x4, #0xD1FFAB1E // code for <unknown method>
+ ; byrRegs -[x4]
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; byrRegs -[x0-x1]
+ b G_M20504_IG14
+ ;; size=28 bbWeight=0.00 PerfScore 0.00
+G_M20504_IG28: ; bbWeight=0.50, gcVars=00000000000000000000004004000000 {V14 V58}, gcrefRegs=17F8000D {x0 x2 x3 x19 x20 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x0 x2-x3]
+ ; GC ptr vars -{V02 V05 V28 V29 V30 V34 V36} +{V58}
str x3, [fp, #0x18] // [V215 tmp198]
; GC ptr vars +{V215}
mov x1, x26
@@ -664,26 +690,9 @@ G_M20504_IG26: ; bbWeight=0.50, gcVars=00000000000000000000004004000000 {
; gcrRegs +[x2]
ldr x3, [fp, #0x18] // [V215 tmp198]
; gcrRegs +[x3]
- b G_M20504_IG28
- ;; size=40 bbWeight=0.50 PerfScore 6.00
-G_M20504_IG27: ; bbWeight=0.00, gcVars=00000000000000000000004040080024 {V14 V28 V29 V34 V36}, gcrefRegs=17F80000 {x19 x20 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0011 {x0 x4}, gcvars, byref
- ; gcrRegs -[x2-x3] +[x26]
- ; byrRegs +[x0 x4]
- ; GC ptr vars -{V58 V215} +{V02 V05 V28 V29 V30 V34 V36}
- mov x1, x4
- ; byrRegs +[x1]
- movz x4, #0xD1FFAB1E // code for <unknown method>
- ; byrRegs -[x4]
- movk x4, #0xD1FFAB1E LSL #16
- movk x4, #0xD1FFAB1E LSL #32
- ldr x4, [x4]
- blr x4
- ; byrRegs -[x0-x1]
- b G_M20504_IG14
- ;; size=28 bbWeight=0.00 PerfScore 0.00
-G_M20504_IG28: ; bbWeight=0.50, gcVars=00000000000000000000004004000000 {V14 V58}, gcrefRegs=13F8000C {x2 x3 x19 x20 x21 x22 x23 x24 x25 x28}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x26] +[x2-x3]
- ; GC ptr vars -{V02 V05 V28 V29 V30 V34 V36} +{V58}
+ ;; size=36 bbWeight=0.50 PerfScore 5.50
+G_M20504_IG29: ; bbWeight=0.50, gcVars=00000000000000000000004004000000 {V14 V58}, gcrefRegs=13F8000C {x2 x3 x19 x20 x21 x22 x23 x24 x25 x28}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars -{V215}
mov x0, x2
; gcrRegs +[x0]
mov x1, x3
@@ -697,7 +706,7 @@ G_M20504_IG28: ; bbWeight=0.50, gcVars=00000000000000000000004004000000 {
blr x2
; gcrRegs -[x0-x1 x3]
;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M20504_IG29: ; bbWeight=0.50, gcrefRegs=13F80000 {x19 x20 x21 x22 x23 x24 x25 x28}, byrefRegs=0000 {}, byref
+G_M20504_IG30: ; bbWeight=0.50, gcrefRegs=13F80000 {x19 x20 x21 x22 x23 x24 x25 x28}, byrefRegs=0000 {}, byref
ldr x0, [x20, #0x08]
; gcrRegs +[x0]
ldrsb wzr, [x0]
@@ -720,7 +729,7 @@ G_M20504_IG29: ; bbWeight=0.50, gcrefRegs=13F80000 {x19 x20 x21 x22 x23 x
mov x28, x0
; gcrRegs +[x28]
;; size=64 bbWeight=0.50 PerfScore 9.50
-G_M20504_IG30: ; bbWeight=0.50, gcrefRegs=13F80000 {x19 x20 x21 x22 x23 x24 x25 x28}, byrefRegs=0000 {}, byref
+G_M20504_IG31: ; bbWeight=0.50, gcrefRegs=13F80000 {x19 x20 x21 x22 x23 x24 x25 x28}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x20
; gcrRegs +[x0]
@@ -732,7 +741,7 @@ G_M20504_IG30: ; bbWeight=0.50, gcrefRegs=13F80000 {x19 x20 x21 x22 x23 x
blr x1
; gcrRegs -[x0 x20]
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M20504_IG31: ; bbWeight=1, gcrefRegs=13E80000 {x19 x21 x22 x23 x24 x25 x28}, byrefRegs=0000 {}, byref, isz
+G_M20504_IG32: ; bbWeight=1, gcrefRegs=13E80000 {x19 x21 x22 x23 x24 x25 x28}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x10]
; gcrRegs +[x20]
movz x0, #0xD1FFAB1E
@@ -882,13 +891,13 @@ G_M20504_IG31: ; bbWeight=1, gcrefRegs=13E80000 {x19 x21 x22 x23 x24 x25
; gcrRegs -[x15 x24]
; byrRegs -[x14]
tst w0, #255
- beq G_M20504_IG33
+ beq G_M20504_IG34
;; size=388 bbWeight=1 PerfScore 92.50
-G_M20504_IG32: ; bbWeight=0.50, gcrefRegs=CD80000 {x19 x20 x22 x23 x26 x27}, byrefRegs=0000 {}, byref
+G_M20504_IG33: ; bbWeight=0.50, gcrefRegs=CD80000 {x19 x20 x22 x23 x26 x27}, byrefRegs=0000 {}, byref
mov w14, #1
strb w14, [x20, #0x11]
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M20504_IG33: ; bbWeight=1, gcrefRegs=CD80000 {x19 x20 x22 x23 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M20504_IG34: ; bbWeight=1, gcrefRegs=CD80000 {x19 x20 x22 x23 x26 x27}, byrefRegs=0000 {}, byref, isz
add x14, x20, #24
; byrRegs +[x14]
mov x15, x27
@@ -938,7 +947,7 @@ G_M20504_IG33: ; bbWeight=1, gcrefRegs=CD80000 {x19 x20 x22 x23 x26 x27},
; gcrRegs -[x0]
cbnz w0, G_M20504_IG63
;; size=128 bbWeight=1 PerfScore 30.00
-G_M20504_IG34: ; bbWeight=0.50, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
+G_M20504_IG35: ; bbWeight=0.50, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x26, #0x10]
sub w0, w0, #59
cmp w0, #1
@@ -949,19 +958,19 @@ G_M20504_IG34: ; bbWeight=0.50, gcrefRegs=4780000 {x19 x20 x21 x22 x26},
ldr x24, [x23, #0x18]
; gcrRegs +[x24]
;; size=28 bbWeight=0.50 PerfScore 4.50
...
libraries_tests.run.linux.arm64.Release.mch
-24 (-21.43%) : 646099.dasm - System.Text.Json.JsonSerializerOptions:ConfigureForJsonSerializer():this (Tier1)
@@ -10,10 +10,10 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 6, 5.57) ref -> x19 this class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-; V01 loc0 [V01,T02] ( 2, 1.56) ref -> x15 class-hnd single-def <System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver>
+; V01 loc0 [V01,T01] ( 2, 1.56) ref -> x15 class-hnd single-def <System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.Json.JsonSerializerOptions+CachingContext>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V04 loc3 [V04,T01] ( 3, 2.44) ref -> x1 class-hnd single-def <System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver>
+;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver>
;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver>
;* V06 loc5 [V06 ] ( 0, 0 ) ubyte -> zero-ref
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -37,12 +37,12 @@ G_M49072_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x0]
mov x15, x0
; gcrRegs +[x15]
- ldr x1, [x19, #0x20]
- ; gcrRegs +[x1]
- cbnz x1, G_M49072_IG06
+ ldr x14, [x19, #0x20]
+ ; gcrRegs +[x14]
+ cbnz x14, G_M49072_IG04
;; size=32 bbWeight=1 PerfScore 10.00
G_M49072_IG03: ; bbWeight=0.56, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0-x1]
+ ; gcrRegs -[x0 x14]
add x14, x19, #32
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
@@ -62,22 +62,8 @@ G_M49072_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M49072_IG06: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x1]
- ; byrRegs -[x0]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[x1] +[x0]
- cbnz x0, G_M49072_IG04
- ;; size=20 bbWeight=0.43 PerfScore 1.52
-G_M49072_IG07: ; bbWeight=0.36, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- b G_M49072_IG04
- ;; size=4 bbWeight=0.36 PerfScore 0.36
-Total bytes of code 112, prolog size 12, PerfScore 23.23, instruction count 28, allocated bytes for code 112 (MethodHash=7b2a404f) for method System.Text.Json.JsonSerializerOptions:ConfigureForJsonSerializer():this (Tier1)
+Total bytes of code 88, prolog size 12, PerfScore 21.35, instruction count 22, allocated bytes for code 88 (MethodHash=7b2a404f) for method System.Text.Json.JsonSerializerOptions:ConfigureForJsonSerializer():this (Tier1)
; ============================================================
Unwind Info:
@@ -88,7 +74,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-20.83%) : 65925.dasm - Roslyn.Utilities.AsyncLazy1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
@@ -12,12 +12,12 @@
; V00 this [V00,T00] ( 7, 6 ) ref -> x0 this class-hnd single-def <Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]>
; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x1 class-hnd single-def <System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 8, 4.16) int -> x2 "Inline stloc first use temp"
+; V03 tmp1 [V03,T02] ( 4, 4 ) int -> x14 "Inline stloc first use temp"
;* V04 tmp2 [V04,T03] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;
; Lcl frame size = 0
-G_M46606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M46606_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
@@ -25,15 +25,17 @@ G_M46606_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
; gcrRegs +[x0-x1]
ldr x14, [x0, #0x18]
; gcrRegs +[x14]
- cbnz x14, G_M46606_IG06
+ cbnz x14, G_M46606_IG05
add x14, x1, #52
; gcrRegs -[x14]
; byrRegs +[x14]
- ldapr w2, [x14]
- tbnz w2, #21, G_M46606_IG03
- tbnz w2, #22, G_M46606_IG03
- tbz w2, #24, G_M46606_IG05
+ ldapr w14, [x14]
+ ; byrRegs -[x14]
+ tbnz w14, #21, G_M46606_IG03
+ tbnz w14, #22, G_M46606_IG03
+ tbz w14, #24, G_M46606_IG03
add x14, x0, #24
+ ; byrRegs +[x14]
mov x15, x1
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
@@ -50,24 +52,16 @@ G_M46606_IG04: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M46606_IG05: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
- tbnz w2, #23, G_M46606_IG03
- tbnz w2, #17, G_M46606_IG03
- tbnz w2, #16, G_M46606_IG03
- tbz w2, #25, G_M46606_IG03
- b G_M46606_IG03
- ;; size=20 bbWeight=0.04 PerfScore 0.20
-G_M46606_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1] +[x0]
+G_M46606_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x1]
ldr x0, [x0, #0x18]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M46606_IG07: ; bbWeight=0, epilog, nogc, extend
+G_M46606_IG06: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 96, prolog size 8, PerfScore 17.70, instruction count 24, allocated bytes for code 96 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
+Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
; ============================================================
Unwind Info:
@@ -78,7 +72,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-20.83%) : 179134.dasm - Roslyn.Utilities.AsyncLazy1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
@@ -12,12 +12,12 @@
; V00 this [V00,T00] ( 7, 6 ) ref -> x0 this class-hnd single-def <Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]>
; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x1 class-hnd single-def <System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 8, 4 ) int -> x2 "Inline stloc first use temp"
+; V03 tmp1 [V03,T02] ( 4, 4 ) int -> x14 "Inline stloc first use temp"
;* V04 tmp2 [V04,T03] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;
; Lcl frame size = 0
-G_M46606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M46606_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
@@ -29,11 +29,13 @@ G_M46606_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
add x14, x1, #52
; gcrRegs -[x14]
; byrRegs +[x14]
- ldapr w2, [x14]
- tbnz w2, #21, G_M46606_IG03
- tbnz w2, #22, G_M46606_IG03
- tbz w2, #24, G_M46606_IG07
+ ldapr w14, [x14]
+ ; byrRegs -[x14]
+ tbnz w14, #21, G_M46606_IG03
+ tbnz w14, #22, G_M46606_IG03
+ tbz w14, #24, G_M46606_IG03
add x14, x0, #24
+ ; byrRegs +[x14]
mov x15, x1
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
@@ -58,16 +60,8 @@ G_M46606_IG06: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0 PerfScore 0.00
-G_M46606_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0] +[x1]
- tbnz w2, #23, G_M46606_IG03
- tbnz w2, #17, G_M46606_IG03
- tbnz w2, #16, G_M46606_IG03
- tbz w2, #25, G_M46606_IG03
- b G_M46606_IG03
- ;; size=20 bbWeight=0 PerfScore 0.00
-Total bytes of code 96, prolog size 8, PerfScore 17.50, instruction count 24, allocated bytes for code 96 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
+Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
; ============================================================
Unwind Info:
@@ -78,7 +72,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+1.79%) : 220967.dasm - Microsoft.DotNet.XUnitExtensions.SkipOnTargetFrameworkDiscoverer:GetTraits(Xunit.Abstractions.IAttributeInfo):System.Collections.Generic.IEnumerable1[System.Collections.Generic.KeyValuePair2[System.String,System.String]]:this (Tier1)
@@ -5,29 +5,29 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 3
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 3
; 4 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.DotNet.XUnitExtensions.SkipOnTargetFrameworkDiscoverer>
; V01 arg1 [V01,T01] ( 5, 4 ) ref -> x1 class-hnd single-def <Xunit.Abstractions.IAttributeInfo>
-; V02 loc0 [V02,T09] ( 2, 2 ) int -> x0 single-def
+; V02 loc0 [V02,T06] ( 4, 2 ) int -> x0 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "inline UNBOX clone1"
; V05 tmp2 [V05,T11] ( 3, 0 ) ref -> x0 class-hnd exact single-def "dup spill" <<unknown class>>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.String]>
-; V07 tmp4 [V07,T06] ( 3, 2 ) ref -> x1 "guarded devirt return temp"
+; V07 tmp4 [V07,T07] ( 3, 2 ) ref -> x1 "guarded devirt return temp"
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Xunit.Sdk.ReflectionAttributeInfo>
; V09 tmp6 [V09,T02] ( 5, 6 ) ref -> x0 class-hnd single-def "spilling ret_expr" <System.Reflection.CustomAttributeData>
-; V10 tmp7 [V10,T07] ( 3, 2 ) ref -> x19 "guarded devirt return temp"
+; V10 tmp7 [V10,T08] ( 3, 2 ) ref -> x19 "guarded devirt return temp"
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeCustomAttributeData>
; V12 tmp9 [V12,T00] ( 5, 10 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.ReflectionAttributeInfo+<Convert>d__11>
-; V13 tmp10 [V13,T08] ( 2, 2 ) ref -> x1 class-hnd single-def "Inline return value spill temp" <<unknown class>>
+; V13 tmp10 [V13,T09] ( 2, 2 ) ref -> x1 class-hnd single-def "Inline return value spill temp" <<unknown class>>
;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V15 tmp12 [V15,T03] ( 3, 6 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Object>
; V17 tmp14 [V17 ] ( 2, 2 ) ubyte -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V18 tmp15 [V18,T04] ( 4, 3.50) ref -> x19 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V18 tmp15 [V18,T04] ( 5, 3.50) ref -> x19 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V19 tmp16 [V19,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
;* V21 tmp18 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
@@ -55,7 +55,7 @@ G_M30911_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x0, x2
- bne G_M30911_IG11
+ bne G_M30911_IG12
ldr x0, [x1, #0x10]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -64,7 +64,7 @@ G_M30911_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M30911_IG10
+ bne G_M30911_IG11
movz x1, #0xD1FFAB1E // code for System.Reflection.RuntimeCustomAttributeData:get_ConstructorArguments():System.Collections.Generic.IList`1[System.Reflection.CustomAttributeTypedArgument]:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -127,34 +127,40 @@ G_M30911_IG04: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre
mov x19, x0
; gcrRegs +[x19]
ldrb w1, [fp, #0x18] // [V17 tmp14]
- cbz w1, G_M30911_IG12
+ cbz w1, G_M30911_IG13
ldr x1, [x19]
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x1, x0
- beq G_M30911_IG06
+ bne G_M30911_IG08
;; size=72 bbWeight=1 PerfScore 17.00
-G_M30911_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x1, x19
- ; gcrRegs +[x1]
- bl CORINFO_HELP_UNBOX
- ; gcrRegs -[x1]
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M30911_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M30911_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x08]
- tbnz w0, #0, G_M30911_IG08
+ tbnz w0, #0, G_M30911_IG09
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M30911_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- ;; size=20 bbWeight=1 PerfScore 5.50
+ ;; size=12 bbWeight=1 PerfScore 1.50
G_M30911_IG07: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M30911_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M30911_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19]
+ mov x1, x19
+ ; gcrRegs +[x1]
+ bl CORINFO_HELP_UNBOX
+ ; gcrRegs -[x1]
+ ldr w0, [x19, #0x08]
+ tbz w0, #0, G_M30911_IG06
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M30911_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -173,12 +179,12 @@ G_M30911_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
movk x2, #0xD1FFAB1E LSL #32
str x2, [x1, #0x08]
;; size=56 bbWeight=0 PerfScore 0.00
-G_M30911_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M30911_IG10: ; bbWeight=0, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0 PerfScore 0.00
-G_M30911_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M30911_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x1]
ldr x1, [x0]
ldr x1, [x1, #0x48]
@@ -188,7 +194,7 @@ G_M30911_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {
; gcrRegs +[x19]
b G_M30911_IG03
;; size=24 bbWeight=0 PerfScore 0.00
-G_M30911_IG11: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M30911_IG12: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] +[x1]
mov x0, x1
; gcrRegs +[x0]
@@ -202,7 +208,7 @@ G_M30911_IG11: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre
; gcrRegs +[x1]
b G_M30911_IG04
;; size=32 bbWeight=0 PerfScore 0.00
-G_M30911_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30911_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0-x1]
movz x0, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowNoElementsException()
movk x0, #0xD1FFAB1E LSL #16
@@ -212,7 +218,7 @@ G_M30911_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 448, prolog size 16, PerfScore 68.75, instruction count 112, allocated bytes for code 448 (MethodHash=c28b8740) for method Microsoft.DotNet.XUnitExtensions.SkipOnTargetFrameworkDiscoverer:GetTraits(Xunit.Abstractions.IAttributeInfo):System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]]:this (Tier1)
+Total bytes of code 456, prolog size 16, PerfScore 68.75, instruction count 114, allocated bytes for code 456 (MethodHash=c28b8740) for method Microsoft.DotNet.XUnitExtensions.SkipOnTargetFrameworkDiscoverer:GetTraits(Xunit.Abstractions.IAttributeInfo):System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]]:this (Tier1)
; ============================================================
Unwind Info:
@@ -223,7 +229,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 112 (0x00070) Actual length = 448 (0x0001c0)
+ Function Length : 114 (0x00072) Actual length = 456 (0x0001c8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+2.08%) : 526627.dasm - System.Xml.EncodingStreamWrapper:FillBuffer(int):this (Tier1)
@@ -13,22 +13,22 @@
; V01 arg1 [V01,T00] ( 8, 5 ) int -> x3
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T06] ( 2, 0 ) int -> x20 "impAppendStmt"
-; V04 tmp2 [V04,T04] ( 2, 0 ) ref -> registers class-hnd single-def "impAppendStmt" <System.IO.Stream>
+; V04 tmp2 [V04,T04] ( 2, 0 ) ref -> [fp+0x18] class-hnd spill-single-def "impAppendStmt" <System.IO.Stream>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
; V06 tmp4 [V06,T02] ( 4, 0 ) ref -> x21 class-hnd single-def "Inlining Arg" <ubyte[]>
-; V07 tmp5 [V07,T03] ( 4, 0 ) int -> x22 "Inlining Arg"
+; V07 tmp5 [V07,T03] ( 3, 0 ) int -> x22 "Inlining Arg"
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V09 tmp7 [V09 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V11 tmp9 [V11,T05] ( 2, 0 ) byref -> x1 "field V08._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp10 [V12,T07] ( 2, 0 ) int -> x2 "field V08._length (fldOffset=0x8)" P-INDEP
+; V11 tmp9 [V11,T05] ( 2, 0 ) byref -> x2 "field V08._reference (fldOffset=0x0)" P-INDEP
+; V12 tmp10 [V12,T07] ( 2, 0 ) int -> x0 "field V08._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M31921_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
+ stp fp, lr, [sp, #-0x40]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
@@ -42,9 +42,9 @@ G_M31921_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
;; size=16 bbWeight=1 PerfScore 5.00
G_M31921_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19]
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
G_M31921_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
@@ -52,23 +52,22 @@ G_M31921_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
ldp w0, w20, [x19, #0x4C]
ldr x1, [x19, #0x28]
; gcrRegs +[x1]
+ str x1, [fp, #0x18] // [V04 tmp2]
+ ; GC ptr vars +{V04}
ldr x21, [x19, #0x38]
; gcrRegs +[x21]
ldr w2, [x19, #0x50]
add w22, w0, w2
- cbnz x21, G_M31921_IG05
- cbnz w22, G_M31921_IG06
- b G_M31921_IG06
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M31921_IG05: ; bbWeight=0, gcrefRegs=280002 {x1 x19 x21}, byrefRegs=0000 {}, byref, isz
+ cbz x21, G_M31921_IG05
mov w0, w22
add x0, x0, w3, UXTW
ldr w2, [x21, #0x08]
cmp x0, x2
- bls G_M31921_IG07
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M31921_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bls G_M31921_IG06
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M31921_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1 x19 x21]
+ ; GC ptr vars -{V04}
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -76,31 +75,36 @@ G_M31921_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M31921_IG07: ; bbWeight=0, gcrefRegs=280002 {x1 x19 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x1 x19 x21]
- mov x0, x1
- ; gcrRegs +[x0]
- add x1, x21, #16
- ; gcrRegs -[x1]
+G_M31921_IG06: ; bbWeight=0, gcVars=0000000000000010 {V04}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x19 x21]
+ ; GC ptr vars +{V04}
+ add x2, x21, #16
+ ; byrRegs +[x2]
+ mov w0, w22
+ add x2, x2, x0
+ sxtw w0, w3
+ mov x1, x2
; byrRegs +[x1]
- mov w2, w22
- add x1, x1, x2
- sxtw w2, w3
+ mov w2, w0
+ ; byrRegs -[x2]
+ ldr x0, [fp, #0x18] // [V04 tmp2]
+ ; gcrRegs +[x0]
mov w4, wzr
movz x5, #0xD1FFAB1E // code for System.IO.Stream:ReadAtLeast(System.Span`1[ubyte],int,ubyte):int:this
movk x5, #0xD1FFAB1E LSL #16
movk x5, #0xD1FFAB1E LSL #32
ldr x5, [x5]
ldr wzr, [x0]
+ ; GC ptr vars -{V04}
blr x5
; gcrRegs -[x0 x21]
; byrRegs -[x1]
add w0, w0, w20
str w0, [x19, #0x50]
b G_M31921_IG03
- ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
-Total bytes of code 192, prolog size 16, PerfScore 13.50, instruction count 48, allocated bytes for code 192 (MethodHash=a7a1834e) for method System.Xml.EncodingStreamWrapper:FillBuffer(int):this (Tier1)
+Total bytes of code 196, prolog size 16, PerfScore 13.50, instruction count 49, allocated bytes for code 196 (MethodHash=a7a1834e) for method System.Xml.EncodingStreamWrapper:FillBuffer(int):this (Tier1)
; ============================================================
Unwind Info:
@@ -111,7 +115,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -120,8 +124,8 @@ Unwind Info:
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
E6 save_next
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
E4 end
E4 end
+12 (+4.41%) : 199866.dasm - System.Collections.Generic.HashSet1[int]:IsSubsetOfHashSetWithSameComparer(System.Collections.Generic.HashSet1[int]):ubyte:this (Tier1-OSR)
@@ -6,7 +6,7 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 99.21
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 99.21
; 1 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -14,14 +14,14 @@
; V01 arg1 [V01,T05] ( 4,201.98) ref -> x19 class-hnd single-def <System.Collections.Generic.HashSet`1[int]>
; V02 loc0 [V02,T10] ( 4, 4 ) struct (24) [fp+0x60] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.HashSet`1+Enumerator[int]>
;* V03 loc1 [V03 ] ( 0, 0 ) int -> zero-ref
-;* V04 loc2 [V04,T12] ( 0, 0 ) ubyte -> zero-ref
+;* V04 loc2 [V04,T11] ( 0, 0 ) ubyte -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06,T11] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.HashSet`1+Enumerator[int]>
; V08 tmp3 [V08,T06] ( 3,200 ) ubyte -> x2 "Inline return value spill temp"
; V09 tmp4 [V09,T04] ( 4,246.15) int -> x22 "Inline stloc first use temp"
; V10 tmp5 [V10,T01] ( 3,369.23) ref -> x1 class-hnd exact "impAppendStmt" <<unknown class>>
-; V11 tmp6 [V11,T08] ( 3,123.08) byref -> x22 "Inline stloc first use temp"
+; V11 tmp6 [V11,T08] ( 3,123.08) byref -> registers "Inline stloc first use temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref "field V07._hashSet (fldOffset=0x0)" P-INDEP
;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref "field V07._version (fldOffset=0x8)" P-INDEP
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "field V07._index (fldOffset=0xc)" P-INDEP
@@ -61,12 +61,12 @@ G_M12432_IG03: ; bbWeight=99.99, gcrefRegs=180000 {x19 x20}, byrefRegs=00
; gcrRegs -[x0]
; gcr arg pop 0
mov w22, w23
- tbnz w0, #31, G_M12432_IG15
+ tbnz w0, #31, G_M12432_IG13
;; size=36 bbWeight=99.99 PerfScore 1049.89
G_M12432_IG04: ; bbWeight=100, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [x20, #0x34]
cmp w21, w0
- bne G_M12432_IG14
+ bne G_M12432_IG12
ldr w0, [x20, #0x28]
;; size=16 bbWeight=100 PerfScore 750.00
G_M12432_IG05: ; bbWeight=161.54, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
@@ -79,7 +79,7 @@ G_M12432_IG06: ; bbWeight=100, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
mov w2, wzr
;; size=12 bbWeight=100 PerfScore 150.00
G_M12432_IG07: ; bbWeight=100, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz w2, G_M12432_IG11
+ cbz w2, G_M12432_IG16
;; size=4 bbWeight=100 PerfScore 100.00
G_M12432_IG08: ; bbWeight=99.99, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
b G_M12432_IG03
@@ -91,7 +91,7 @@ G_M12432_IG09: ; bbWeight=61.54, gcrefRegs=180000 {x19 x20}, byrefRegs=00
sxtw w23, w2
ldr w2, [x1, #0x08]
cmp w22, w2
- bhs G_M12432_IG10
+ bhs G_M12432_IG15
mov w2, #12
mov x3, #16
umaddl x2, w22, w2, x3
@@ -100,37 +100,25 @@ G_M12432_IG09: ; bbWeight=61.54, gcrefRegs=180000 {x19 x20}, byrefRegs=00
ldr w1, [x22, #0x04]
; gcrRegs -[x1]
cmn w1, #1
- bge G_M12432_IG13
+ blt G_M12432_IG11
+ ;; size=52 bbWeight=61.54 PerfScore 1200.00
+G_M12432_IG10: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref
+ mov x0, x22
+ ; byrRegs +[x0]
mov w22, w23
; byrRegs -[x22]
- b G_M12432_IG05
- ;; size=60 bbWeight=61.54 PerfScore 1292.31
-G_M12432_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20]
- bl CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M12432_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, #1
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M12432_IG12: ; bbWeight=0, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
- add sp, sp, #80
- ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M12432_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, gcvars, byref
- ; gcrRegs +[x19-x20]
- ; byrRegs +[x22]
- ldr w1, [x22, #0x08]
+ ldr w1, [x0, #0x08]
mov w2, #1
+ mov w23, w22
b G_M12432_IG07
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M12432_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M12432_IG11: ; bbWeight=30.77, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x0]
+ mov w22, w23
+ b G_M12432_IG05
+ ;; size=8 bbWeight=30.77 PerfScore 46.15
+G_M12432_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20]
- ; byrRegs -[x22]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -139,10 +127,25 @@ G_M12432_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M12432_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M12432_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
-G_M12432_IG16: ; bbWeight=0, epilog, nogc, extend
+G_M12432_IG14: ; bbWeight=0, epilog, nogc, extend
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x40
+ add sp, sp, #80
+ ret lr
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M12432_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M12432_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M12432_IG17: ; bbWeight=0, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -151,7 +154,7 @@ G_M12432_IG16: ; bbWeight=0, epilog, nogc, extend
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 272, prolog size 24, PerfScore 3696.00, instruction count 68, allocated bytes for code 272 (MethodHash=70e5cf6f) for method System.Collections.Generic.HashSet`1[int]:IsSubsetOfHashSetWithSameComparer(System.Collections.Generic.HashSet`1[int]):ubyte:this (Tier1-OSR)
+Total bytes of code 284, prolog size 24, PerfScore 3649.85, instruction count 71, allocated bytes for code 284 (MethodHash=70e5cf6f) for method System.Collections.Generic.HashSet`1[int]:IsSubsetOfHashSetWithSameComparer(System.Collections.Generic.HashSet`1[int]):ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -162,7 +165,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 68 (0x00044) Actual length = 272 (0x000110)
+ Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
-24 (-17.14%) : 43218.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
@@ -8,7 +8,7 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
; V02 loc0 [V02,T06] ( 3, 1.50) int -> x1 ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
@@ -20,9 +20,9 @@
; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> x0 single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V11 tmp6 [V11,T07] ( 3, 1.50) ref -> x2 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+;* V12 rat0 [V12,T05] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -30,10 +30,9 @@ G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldr x0, [x19, #0x20]
@@ -46,54 +45,47 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
blr x2
; gcrRegs -[x0-x1]
; byrRegs +[x0]
- cbz x0, G_M43979_IG05
+ cbz x0, G_M43979_IG04
;; size=32 bbWeight=1 PerfScore 12.50
-G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
+G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
ldr w1, [x0]
ldr x2, [x19, #0x80]
; gcrRegs +[x2]
- ldr x0, [x19]
- ; byrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0xC0]
- cbnz x0, G_M43979_IG07
- ;; size=28 bbWeight=0.50 PerfScore 9.50
-G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- b G_M43979_IG07
- ;; size=4 bbWeight=0.10 PerfScore 0.10
-G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M43979_IG06
+ ;; size=12 bbWeight=0.50 PerfScore 3.50
+G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
+ ; byrRegs -[x0]
mov x0, xzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M43979_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43979_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x2]
ldr w0, [x2, #0x08]
cmp w1, w0
- bhs G_M43979_IG09
+ bhs G_M43979_IG08
add x0, x2, #16
; byrRegs +[x0]
ldr x0, [x0, w1, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M43979_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x2]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 140, prolog size 16, PerfScore 34.35, instruction count 35, allocated bytes for code 140 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
+Total bytes of code 116, prolog size 12, PerfScore 27.25, instruction count 29, allocated bytes for code 116 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -104,7 +96,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-17.14%) : 5735.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
@@ -8,7 +8,7 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
; V02 loc0 [V02,T06] ( 3, 1.50) int -> x1 ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
@@ -20,9 +20,9 @@
; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> x0 single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V11 tmp6 [V11,T07] ( 3, 1.50) ref -> x2 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+;* V12 rat0 [V12,T05] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -30,10 +30,9 @@ G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldr x0, [x19, #0x20]
@@ -46,54 +45,47 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
blr x2
; gcrRegs -[x0-x1]
; byrRegs +[x0]
- cbz x0, G_M43979_IG05
+ cbz x0, G_M43979_IG04
;; size=32 bbWeight=1 PerfScore 12.50
-G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
+G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
ldr w1, [x0]
ldr x2, [x19, #0x80]
; gcrRegs +[x2]
- ldr x0, [x19]
- ; byrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0xD1FFAB1E]
- cbnz x0, G_M43979_IG07
- ;; size=28 bbWeight=0.50 PerfScore 9.50
-G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- b G_M43979_IG07
- ;; size=4 bbWeight=0.10 PerfScore 0.10
-G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M43979_IG06
+ ;; size=12 bbWeight=0.50 PerfScore 3.50
+G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
+ ; byrRegs -[x0]
mov x0, xzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M43979_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43979_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x2]
ldr w0, [x2, #0x08]
cmp w1, w0
- bhs G_M43979_IG09
+ bhs G_M43979_IG08
add x0, x2, #16
; byrRegs +[x0]
ldr x0, [x0, w1, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M43979_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x2]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 140, prolog size 16, PerfScore 34.35, instruction count 35, allocated bytes for code 140 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
+Total bytes of code 116, prolog size 12, PerfScore 27.25, instruction count 29, allocated bytes for code 116 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -104,7 +96,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-17.14%) : 48919.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
@@ -8,7 +8,7 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
; V02 loc0 [V02,T06] ( 3, 1.50) int -> x1 ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
@@ -20,9 +20,9 @@
; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> x0 single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V11 tmp6 [V11,T07] ( 3, 1.50) ref -> x2 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+;* V12 rat0 [V12,T05] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -30,10 +30,9 @@ G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldr x0, [x19, #0x20]
@@ -46,54 +45,47 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
blr x2
; gcrRegs -[x0-x1]
; byrRegs +[x0]
- cbz x0, G_M43979_IG05
+ cbz x0, G_M43979_IG04
;; size=32 bbWeight=1 PerfScore 12.50
-G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
+G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
ldr w1, [x0]
ldr x2, [x19, #0x80]
; gcrRegs +[x2]
- ldr x0, [x19]
- ; byrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0xC0]
- cbnz x0, G_M43979_IG07
- ;; size=28 bbWeight=0.50 PerfScore 9.50
-G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- b G_M43979_IG07
- ;; size=4 bbWeight=0.10 PerfScore 0.10
-G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M43979_IG06
+ ;; size=12 bbWeight=0.50 PerfScore 3.50
+G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
+ ; byrRegs -[x0]
mov x0, xzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M43979_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43979_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x2]
ldr w0, [x2, #0x08]
cmp w1, w0
- bhs G_M43979_IG09
+ bhs G_M43979_IG08
add x0, x2, #16
; byrRegs +[x0]
ldr x0, [x0, w1, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M43979_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x2]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 140, prolog size 16, PerfScore 34.35, instruction count 35, allocated bytes for code 140 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
+Total bytes of code 116, prolog size 12, PerfScore 27.25, instruction count 29, allocated bytes for code 116 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -104,7 +96,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 290671.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32789_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -57,11 +57,11 @@
;* V46 tmp35 [V46 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V47 tmp36 [V47,T53] ( 4, 2 ) int -> x0 single-def "Inline stloc first use temp"
; V48 tmp37 [V48,T52] ( 3, 3 ) ref -> x3 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V49 tmp38 [V49,T45] ( 3, 6 ) int -> x0 "Inline stloc first use temp"
-; V50 tmp39 [V50,T37] ( 4, 8 ) int -> x1 "Inline stloc first use temp"
-; V51 tmp40 [V51,T30] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
+; V49 tmp38 [V49,T45] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
+; V50 tmp39 [V50,T37] ( 4, 8 ) int -> x2 "Inline stloc first use temp"
+; V51 tmp40 [V51,T30] ( 3, 12 ) ref -> x1 class-hnd "impAppendStmt" <<unknown class>>
;* V52 tmp41 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V53 tmp42 [V53,T31] ( 3, 12 ) byref -> x0 "dup spill"
+; V53 tmp42 [V53,T31] ( 3, 12 ) byref -> x1 "dup spill"
; V54 tmp43 [V54,T50] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V55 tmp44 [V55,T51] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V56 tmp45 [V56,T36] ( 4, 10 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
@@ -80,9 +80,9 @@
; V69 tmp58 [V69,T16] ( 3, 24 ) ref -> x0 "arr expr"
; V70 tmp59 [V70,T03] ( 3, 96 ) ref -> x2 "arr expr"
; V71 tmp60 [V71,T17] ( 3, 24 ) ref -> x0 "arr expr"
-; V72 tmp61 [V72,T32] ( 3, 12 ) ref -> x1 "arr expr"
+; V72 tmp61 [V72,T32] ( 3, 12 ) ref -> x2 "arr expr"
; V73 cse0 [V73,T09] ( 4, 40 ) ref -> x0 "CSE - aggressive"
-; V74 cse1 [V74,T43] ( 3, 7 ) ref -> x22 hoist "CSE - moderate"
+; V74 cse1 [V74,T43] ( 3, 7 ) ref -> x0 hoist "CSE - moderate"
; V75 cse2 [V75,T33] ( 2, 8 ) ref -> x0 "CSE - moderate"
; V76 cse3 [V76,T22] ( 12, 19.50) ref -> x1 multi-def "CSE - moderate"
; V77 cse4 [V77,T35] ( 3, 12 ) int -> x2 "CSE - moderate"
@@ -485,50 +485,50 @@ G_M19104_IG27: ; bbWeight=0.50, epilog, nogc, extend
;; size=28 bbWeight=0.50 PerfScore 3.50
G_M19104_IG28: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
- ldr x22, [x19, #0x20]
- ; gcrRegs +[x22]
+ ldr x0, [x19, #0x20]
+ ; gcrRegs +[x0]
b G_M19104_IG30
;; size=8 bbWeight=1 PerfScore 4.00
-G_M19104_IG29: ; bbWeight=2, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- mov x0, x22
- ; gcrRegs +[x0]
- ldr w1, [x19, #0x58]
- add w2, w1, #1
- str w2, [x19, #0x58]
- ldr w2, [x0, #0x08]
- cmp w1, w2
- bhs G_M19104_IG33
- add x0, x0, #16
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldr w0, [x0, w1, UXTW #2]
- ; byrRegs -[x0]
- ldr x1, [x19, #0x28]
+G_M19104_IG29: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ mov x1, x0
; gcrRegs +[x1]
- ldr x1, [x1, #0x50]
- ldr w2, [x1, #0x08]
- cmp w0, w2
+ ldr w2, [x19, #0x58]
+ add w3, w2, #1
+ str w3, [x19, #0x58]
+ ldr w3, [x1, #0x08]
+ cmp w2, w3
bhs G_M19104_IG33
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
- ubfiz x0, x0, #2, #32
- add x0, x1, x0
- ; byrRegs +[x0]
- ldr w1, [x0]
+ ldr w1, [x1, w2, UXTW #2]
; byrRegs -[x1]
- sub w1, w1, #1
- str w1, [x0]
+ ldr x2, [x19, #0x28]
+ ; gcrRegs +[x2]
+ ldr x2, [x2, #0x50]
+ ldr w3, [x2, #0x08]
+ cmp w1, w3
+ bhs G_M19104_IG33
+ add x2, x2, #16
+ ; gcrRegs -[x2]
+ ; byrRegs +[x2]
+ ubfiz x1, x1, #2, #32
+ add x1, x2, x1
+ ; byrRegs +[x1]
+ ldr w2, [x1]
+ ; byrRegs -[x2]
+ sub w2, w2, #1
+ str w2, [x1]
;; size=80 bbWeight=2 PerfScore 60.00
-G_M19104_IG30: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x0]
- ldr w0, [x22, #0x08]
- ldr w1, [x19, #0x58]
- sub w0, w0, w1
- cbnz w0, G_M19104_IG29
+G_M19104_IG30: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x1]
+ ldr w1, [x0, #0x08]
+ ldr w2, [x19, #0x58]
+ sub w1, w1, w2
+ cbnz w1, G_M19104_IG29
;; size=16 bbWeight=4 PerfScore 30.00
G_M19104_IG31: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19 x22]
+ ; gcrRegs -[x0 x19]
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M19104_IG32: ; bbWeight=0.50, epilog, nogc, extend
+0 (0.00%) : 176280.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
@@ -57,7 +57,7 @@ G_M57654_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M57654_IG02: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x54]
cmp w0, #10
- bhi G_M57654_IG06
+ bhi G_M57654_IG16
mov w0, w0
adr x1, [@RWD00]
ldr w1, [x1, x0, LSL #2]
@@ -87,7 +87,7 @@ G_M57654_IG04: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
sub w23, w0, #1
cmp w23, #2
- bhi G_M57654_IG06
+ bhi G_M57654_IG16
mov w0, w23
adr x1, [@RWD44]
ldr w1, [x1, x0, LSL #2]
@@ -95,22 +95,10 @@ G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
add x1, x1, x2
br x1
;; size=36 bbWeight=0.50 PerfScore 4.00
-G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19 x21]
- mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M57654_IG07: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
- ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19 x21]
+G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x5C]
cmn w0, #1
- beq G_M57654_IG12
+ beq G_M57654_IG10
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -119,7 +107,7 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M57654_IG12
+ cbz w0, G_M57654_IG10
mov x0, x21
; gcrRegs +[x0]
mov w1, w22
@@ -131,12 +119,12 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
blr x3
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w20, G_M57654_IG06
+ cbz w20, G_M57654_IG16
ldr w0, [x19, #0x60]
- cbnz w0, G_M57654_IG10
+ cbnz w0, G_M57654_IG08
ldr x0, [x19, #0x38]
; gcrRegs +[x0]
- cbz x0, G_M57654_IG09
+ cbz x0, G_M57654_IG07
mov x1, x0
; gcrRegs +[x1]
ldr x1, [x1]
@@ -145,15 +133,15 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M57654_IG09
+ bne G_M57654_IG07
ldr x1, [x1, #0x50]
ldr x1, [x1, #0x08]
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- b G_M57654_IG10
+ b G_M57654_IG08
;; size=132 bbWeight=0.50 PerfScore 24.50
-G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+G_M57654_IG07: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -168,7 +156,7 @@ G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
; gcrRegs -[x0 x15]
; byrRegs -[x14]
;; size=28 bbWeight=0.50 PerfScore 2.25
-G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M57654_IG08: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x60]
ldr x1, [x19, #0x40]
; gcrRegs +[x1]
@@ -176,7 +164,7 @@ G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
cmp w0, w1
- beq G_M57654_IG06
+ beq G_M57654_IG16
ldr x0, [x19, #0x38]
; gcrRegs +[x0]
mov x1, x21
@@ -213,7 +201,7 @@ G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
ldr x1, [x1, #0x48]
ldr x1, [x1, #0x20]
;; size=124 bbWeight=0.50 PerfScore 34.00
-G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M57654_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -221,7 +209,7 @@ G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
br x1
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M57654_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x21]
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
@@ -233,7 +221,7 @@ G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
ldr x4, [x4, #0x90]
ldr x4, [x4, #0x30]
;; size=28 bbWeight=0.50 PerfScore 6.75
-G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -241,12 +229,12 @@ G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend
br x4
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57654_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0-x1]
mov w0, #10
str w0, [x19, #0x54]
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M57654_IG13: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
mov x1, x21
@@ -260,7 +248,7 @@ G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
; gcrRegs -[x0-x1 x21]
; gcr arg pop 0
sxtw w23, w0
- cbnz w23, G_M57654_IG16
+ cbnz w23, G_M57654_IG14
mov w0, #1
str w0, [x19, #0x54]
mov x0, x19
@@ -273,9 +261,19 @@ G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
; gcrRegs -[x0 x19]
; gcr arg pop 0
;; size=72 bbWeight=0.50 PerfScore 11.75
-G_M57654_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57654_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sxtw w0, w23
;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M57654_IG15: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x40
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M57654_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M57654_IG17: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
@@ -339,20 +337,20 @@ G_M57654_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=80 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG14 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG03 - G_M57654_IG02
- dd G_M57654_IG03 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG15 - G_M57654_IG02
-RWD44 dd G_M57654_IG18 - G_M57654_IG02
- dd G_M57654_IG08 - G_M57654_IG02
+RWD00 dd G_M57654_IG16 - G_M57654_IG02
dd G_M57654_IG12 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG03 - G_M57654_IG02
+ dd G_M57654_IG03 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG13 - G_M57654_IG02
+RWD44 dd G_M57654_IG18 - G_M57654_IG02
+ dd G_M57654_IG06 - G_M57654_IG02
+ dd G_M57654_IG10 - G_M57654_IG02
Total bytes of code 756, prolog size 36, PerfScore 125.50, instruction count 189, allocated bytes for code 756 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
+0 (0.00%) : 290668.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32786_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -65,11 +65,11 @@
;* V54 tmp43 [V54 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V55 tmp44 [V55,T54] ( 4, 2 ) int -> x0 single-def "Inline stloc first use temp"
; V56 tmp45 [V56,T53] ( 3, 3 ) ref -> x3 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V57 tmp46 [V57,T46] ( 3, 6 ) int -> x0 "Inline stloc first use temp"
-; V58 tmp47 [V58,T37] ( 4, 8 ) int -> x1 "Inline stloc first use temp"
-; V59 tmp48 [V59,T30] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
+; V57 tmp46 [V57,T46] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
+; V58 tmp47 [V58,T37] ( 4, 8 ) int -> x2 "Inline stloc first use temp"
+; V59 tmp48 [V59,T30] ( 3, 12 ) ref -> x1 class-hnd "impAppendStmt" <<unknown class>>
;* V60 tmp49 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V61 tmp50 [V61,T31] ( 3, 12 ) byref -> x0 "dup spill"
+; V61 tmp50 [V61,T31] ( 3, 12 ) byref -> x1 "dup spill"
; V62 tmp51 [V62,T51] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V63 tmp52 [V63,T52] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V64 tmp53 [V64,T36] ( 4, 10 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
@@ -94,9 +94,9 @@
; V83 tmp72 [V83,T16] ( 3, 24 ) ref -> x0 "arr expr"
; V84 tmp73 [V84,T03] ( 3, 96 ) ref -> x2 "arr expr"
; V85 tmp74 [V85,T17] ( 3, 24 ) ref -> x0 "arr expr"
-; V86 tmp75 [V86,T32] ( 3, 12 ) ref -> x1 "arr expr"
+; V86 tmp75 [V86,T32] ( 3, 12 ) ref -> x2 "arr expr"
; V87 cse0 [V87,T09] ( 4, 40 ) ref -> x0 "CSE - aggressive"
-; V88 cse1 [V88,T44] ( 3, 7 ) ref -> x22 hoist "CSE - moderate"
+; V88 cse1 [V88,T44] ( 3, 7 ) ref -> x0 hoist "CSE - moderate"
; V89 cse2 [V89,T33] ( 2, 8 ) ref -> x1 "CSE - moderate"
; V90 cse3 [V90,T22] ( 12, 19.50) ref -> x1 multi-def "CSE - moderate"
; V91 cse4 [V91,T35] ( 3, 12 ) int -> x2 "CSE - moderate"
@@ -492,50 +492,50 @@ G_M17647_IG27: ; bbWeight=0.50, epilog, nogc, extend
;; size=28 bbWeight=0.50 PerfScore 3.50
G_M17647_IG28: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
- ldr x22, [x19, #0x20]
- ; gcrRegs +[x22]
+ ldr x0, [x19, #0x20]
+ ; gcrRegs +[x0]
b G_M17647_IG30
;; size=8 bbWeight=1 PerfScore 4.00
-G_M17647_IG29: ; bbWeight=2, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- mov x0, x22
- ; gcrRegs +[x0]
- ldr w1, [x19, #0x58]
- add w2, w1, #1
- str w2, [x19, #0x58]
- ldr w2, [x0, #0x08]
- cmp w1, w2
- bhs G_M17647_IG33
- add x0, x0, #16
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldr w0, [x0, w1, UXTW #2]
- ; byrRegs -[x0]
- ldr x1, [x19, #0x28]
+G_M17647_IG29: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ mov x1, x0
; gcrRegs +[x1]
- ldr x1, [x1, #0x50]
- ldr w2, [x1, #0x08]
- cmp w0, w2
+ ldr w2, [x19, #0x58]
+ add w3, w2, #1
+ str w3, [x19, #0x58]
+ ldr w3, [x1, #0x08]
+ cmp w2, w3
bhs G_M17647_IG33
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
- ubfiz x0, x0, #2, #32
- add x0, x1, x0
- ; byrRegs +[x0]
- ldr w1, [x0]
+ ldr w1, [x1, w2, UXTW #2]
; byrRegs -[x1]
- sub w1, w1, #1
- str w1, [x0]
+ ldr x2, [x19, #0x28]
+ ; gcrRegs +[x2]
+ ldr x2, [x2, #0x50]
+ ldr w3, [x2, #0x08]
+ cmp w1, w3
+ bhs G_M17647_IG33
+ add x2, x2, #16
+ ; gcrRegs -[x2]
+ ; byrRegs +[x2]
+ ubfiz x1, x1, #2, #32
+ add x1, x2, x1
+ ; byrRegs +[x1]
+ ldr w2, [x1]
+ ; byrRegs -[x2]
+ sub w2, w2, #1
+ str w2, [x1]
;; size=80 bbWeight=2 PerfScore 60.00
-G_M17647_IG30: ; bbWeight=4, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x0]
- ldr w0, [x22, #0x08]
- ldr w1, [x19, #0x58]
- sub w0, w0, w1
- cbnz w0, G_M17647_IG29
+G_M17647_IG30: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x1]
+ ldr w1, [x0, #0x08]
+ ldr w2, [x19, #0x58]
+ sub w1, w1, w2
+ cbnz w1, G_M17647_IG29
;; size=16 bbWeight=4 PerfScore 30.00
G_M17647_IG31: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19 x22]
+ ; gcrRegs -[x0 x19]
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M17647_IG32: ; bbWeight=0.50, epilog, nogc, extend
realworld.run.linux.arm64.checked.mch
-28 (-20.59%) : 11563.dasm - FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
@@ -8,8 +8,8 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 7, 5 ) ref -> x19 this class-hnd single-def <FSharp.Compiler.Infos+PropInfo>
-;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <FSharp.Compiler.Infos+PropInfo>
+; V00 this [V00,T00] ( 6, 4.50) ref -> x19 this class-hnd single-def <FSharp.Compiler.Infos+PropInfo>
+;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <FSharp.Compiler.Infos+PropInfo>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
; V03 loc2 [V03,T04] ( 2, 1 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <FSharp.Compiler.TypedTree+ValRef>
@@ -37,29 +37,16 @@ G_M3270_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbnz x0, G_M3270_IG04
+ cbz x0, G_M3270_IG05
;; size=24 bbWeight=1 PerfScore 4.00
G_M3270_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- mov x1, x19
- ; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[x1 x19] +[x0]
- ; gcr arg pop 0
- cbnz x0, G_M3270_IG06
- b G_M3270_IG06
- ;; size=28 bbWeight=0.50 PerfScore 2.50
-G_M3270_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x19]
ldr x0, [x19, #0x18]
; gcrRegs +[x0]
- cbz x0, G_M3270_IG06
+ cbz x0, G_M3270_IG05
ldr x1, [x19, #0x20]
; gcrRegs +[x1]
- cbnz x1, G_M3270_IG06
+ cbnz x1, G_M3270_IG05
ldr x0, [x0, #0x08]
ldr x1, [x19, #0x08]
movz x2, #0xD1FFAB1E // code for FSharp.Compiler.Infos:ValRef.IsFSharpEventProperty(FSharp.Compiler.TypedTree+ValRef,FSharp.Compiler.TcGlobals+TcGlobals):ubyte
@@ -67,23 +54,23 @@ G_M3270_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
;; size=40 bbWeight=0.50 PerfScore 9.25
-G_M3270_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M3270_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
br x2
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M3270_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3270_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0-x1 x19]
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3270_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M3270_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-Total bytes of code 136, prolog size 16, PerfScore 23.00, instruction count 34, allocated bytes for code 136 (MethodHash=cb2ef339) for method FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
+Total bytes of code 108, prolog size 16, PerfScore 20.50, instruction count 27, allocated bytes for code 108 (MethodHash=cb2ef339) for method FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -94,7 +81,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-8.93%) : 23489.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System._Canon]:getHasAnyApplicableMember():ubyte:this (FullOpts)
@@ -27,10 +27,10 @@
; V16 tmp12 [V16,T00] ( 5, 27 ) int -> x21 "field V01._index (fldOffset=0x8)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) ubyte -> zero-ref "V03.[004..005)"
;* V18 cse0 [V18,T11] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V19 cse1 [V19,T06] ( 2, 2 ) long -> x22 "CSE - aggressive"
-; V20 rat0 [V20,T07] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
+; V19 cse1 [V19,T06] ( 1, 1 ) long -> x22 "CSE - aggressive"
+;* V20 rat0 [V20,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V21 rat1 [V21,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V22 rat2 [V22,T05] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V22 rat2 [V22,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;* V23 rat3 [V23,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
;* V24 rat4 [V24,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
@@ -49,7 +49,7 @@ G_M864_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
mov x19, x0
; gcrRegs +[x19]
;; size=40 bbWeight=1 PerfScore 8.00
-G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:this
@@ -62,15 +62,10 @@ G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byre
; gcrRegs +[x20]
mov w21, w1
ldr x22, [x19]
- mov x0, x22
- ; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x30]
- cbnz x0, G_M864_IG04
b G_M864_IG04
- ;; size=64 bbWeight=1 PerfScore 27.00
+ ;; size=44 bbWeight=1 PerfScore 16.50
G_M864_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
ldr x0, [x20, #0x08]
; gcrRegs +[x0]
add x8, fp, #24 // [V02 loc1]
@@ -118,7 +113,7 @@ G_M864_IG08: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
-Total bytes of code 224, prolog size 36, PerfScore 138.50, instruction count 56, allocated bytes for code 224 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
+Total bytes of code 204, prolog size 36, PerfScore 128.00, instruction count 51, allocated bytes for code 204 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -129,7 +124,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-7.94%) : 24224.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)
@@ -25,10 +25,10 @@
; V14 tmp8 [V14,T05] ( 3, 6 ) ref -> x0 "Field obj"
; V15 tmp9 [V15,T01] ( 2, 8 ) byref -> x2 "argument with side effect"
;* V16 cse0 [V16,T12] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V17 cse1 [V17,T08] ( 3, 3 ) long -> x24 "CSE - aggressive"
-; V18 rat0 [V18,T10] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+; V17 cse1 [V17,T08] ( 2, 2.50) long -> x24 "CSE - aggressive"
+;* V18 rat0 [V18,T10] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V19 rat1 [V19,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V20 rat2 [V20,T09] ( 2, 2 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V20 rat2 [V20,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
@@ -62,7 +62,7 @@ G_M9562_IG02: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=100000 {x
; gcrRegs +[x21]
cbz x21, G_M9562_IG07
;; size=40 bbWeight=1 PerfScore 13.50
-G_M9562_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref, isz
+G_M9562_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x0]
mov x0, x21
; gcrRegs +[x0]
@@ -75,15 +75,10 @@ G_M9562_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=1000
; gcrRegs +[x22]
mov w23, w1
ldr x24, [x19]
- mov x0, x24
- ; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x48]
- cbnz x0, G_M9562_IG05
b G_M9562_IG05
- ;; size=60 bbWeight=0.50 PerfScore 10.75
+ ;; size=40 bbWeight=0.50 PerfScore 5.50
G_M9562_IG04: ; bbWeight=2, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=100000 {x20}, byref
+ ; gcrRegs -[x0]
mov x0, x22
; gcrRegs +[x0]
mov w1, w23
@@ -133,7 +128,7 @@ G_M9562_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
ret lr
;; size=20 bbWeight=1 PerfScore 5.00
-Total bytes of code 252, prolog size 24, PerfScore 106.75, instruction count 63, allocated bytes for code 252 (MethodHash=57bfdaa5) for method Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)
+Total bytes of code 232, prolog size 24, PerfScore 101.50, instruction count 58, allocated bytes for code 232 (MethodHash=57bfdaa5) for method Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)
; ============================================================
Unwind Info:
@@ -144,7 +139,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 63 (0x0003f) Actual length = 252 (0x0000fc)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 27706.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
@@ -20,7 +20,7 @@
; V09 loc7 [V09,T44] ( 10, 5 ) ref -> x20 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundDagSliceEvaluation>
; V10 loc8 [V10,T45] ( 10, 5 ) ref -> x22 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
;* V11 loc9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundDagTemp>
-; V12 loc10 [V12,T131] ( 3, 1.50) ref -> x28 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V12 loc10 [V12,T131] ( 3, 1.50) ref -> x23 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V13 loc11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
; V14 loc12 [V14,T85] ( 5, 2.50) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol>
;* V15 loc13 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundDagTemp>
@@ -50,8 +50,8 @@
; V39 loc37 [V39,T153] ( 2, 1 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V40 loc38 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundDagTemp>
; V41 loc39 [V41,T135] ( 3, 1.50) ref -> x2 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V42 loc40 [V42,T72] ( 6, 3 ) ref -> x27 class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V43 loc41 [V43,T130] ( 4, 1.75) ref -> x28 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundImplicitIndexerAccess>
+; V42 loc40 [V42,T72] ( 6, 3 ) ref -> x22 class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V43 loc41 [V43,T130] ( 4, 1.75) ref -> x23 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundImplicitIndexerAccess>
; V44 loc42 [V44,T154] ( 2, 1 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V45 loc43 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundDagTemp>
; V46 loc44 [V46,T136] ( 3, 1.50) ref -> x2 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
@@ -60,7 +60,7 @@
;* V49 tmp2 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundDagFieldEvaluation>
; V50 tmp3 [V50,T99] ( 2, 2 ) ref -> x23 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
; V51 tmp4 [V51,T22] ( 8, 8 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundDagTemp>
-; V52 tmp5 [V52,T74] ( 3, 3 ) ref -> x27 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.LocalRewriter>
+; V52 tmp5 [V52,T74] ( 3, 3 ) ref -> x26 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.LocalRewriter>
; V53 tmp6 [V53,T50] ( 4, 4 ) ref -> x20 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
;* V54 tmp7 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundDagPropertyEvaluation>
; V55 tmp8 [V55,T100] ( 2, 2 ) ref -> x23 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
@@ -97,15 +97,15 @@
;* V86 tmp39 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter+DagTempAllocator>
;* V87 tmp40 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundDagSliceEvaluation>
;* V88 tmp41 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundImplicitIndexerAccess>
-; V89 tmp42 [V89,T28] ( 9, 9 ) ref -> x22 class-hnd exact single-def "dup spill" <<unknown class>>
-; V90 tmp43 [V90,T107] ( 2, 2 ) ref -> x28 class-hnd exact single-def "non-inline candidate call" <Microsoft.CodeAnalysis.CSharp.BoundSlicePatternRangePlaceholder>
+; V89 tmp42 [V89,T28] ( 9, 9 ) ref -> x23 class-hnd exact single-def "dup spill" <<unknown class>>
+; V90 tmp43 [V90,T107] ( 2, 2 ) ref -> x21 class-hnd exact single-def "non-inline candidate call" <Microsoft.CodeAnalysis.CSharp.BoundSlicePatternRangePlaceholder>
; V91 tmp44 [V91,T91] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
; V92 tmp45 [V92,T151] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
; V93 tmp46 [V93,T68] ( 5, 3.75) ref -> x21 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
; V94 tmp47 [V94,T108] ( 2, 2 ) ref -> x22 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
; V95 tmp48 [V95,T29] ( 8, 8 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundDagTemp>
;* V96 tmp49 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter+DagTempAllocator>
-;* V97 tmp50 [V97,T198] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V97 tmp50 [V97 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V98 tmp51 [V98 ] ( 3, 1.50) struct (24) [fp+0xD0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V99 tmp52 [V99,T137] ( 3, 1.50) ref -> x26 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V100 tmp53 [V100,T52] ( 4, 4 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
@@ -122,11 +122,11 @@
;* V111 tmp64 [V111 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V112 tmp65 [V112 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V113 tmp66 [V113 ] ( 3, 1.50) struct (24) [fp+0xB8] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V114 tmp67 [V114,T94] ( 4, 2 ) ref -> x23 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V114 tmp67 [V114,T94] ( 4, 2 ) ref -> x24 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V115 tmp68 [V115,T53] ( 4, 4 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
;* V116 tmp69 [V116 ] ( 0, 0 ) ref -> zero-ref single-def
; V117 tmp70 [V117,T87] ( 5, 2.50) ref -> x3 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V118 tmp71 [V118,T13] ( 14, 14 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundFieldAccess>
+; V118 tmp71 [V118,T13] ( 14, 14 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundFieldAccess>
;* V119 tmp72 [V119 ] ( 0, 0 ) ref -> zero-ref
; V120 tmp73 [V120,T138] ( 3, 1.50) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
; V121 tmp74 [V121,T31] ( 8, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundAddressOfOperator>
@@ -420,7 +420,7 @@ G_M26377_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
;; size=60 bbWeight=1 PerfScore 21.00
G_M26377_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- b G_M26377_IG18
+ b G_M26377_IG10
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M26377_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
add x0, x8, #0xD1FFAB1E
@@ -428,7 +428,7 @@ G_M26377_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
bne G_M26377_IG05
mov x22, x20
; gcrRegs +[x22]
- b G_M26377_IG31
+ b G_M26377_IG23
;; size=20 bbWeight=0.50 PerfScore 1.75
G_M26377_IG05: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22]
@@ -437,7 +437,7 @@ G_M26377_IG05: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
bne G_M26377_IG06
mov x23, x20
; gcrRegs +[x23]
- b G_M26377_IG37
+ b G_M26377_IG29
;; size=20 bbWeight=0.50 PerfScore 1.75
G_M26377_IG06: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x23]
@@ -448,7 +448,7 @@ G_M26377_IG06: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
bne G_M26377_IG07
mov x24, x20
; gcrRegs +[x24]
- b G_M26377_IG57
+ b G_M26377_IG49
;; size=28 bbWeight=0.50 PerfScore 2.25
G_M26377_IG07: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x24]
@@ -457,7 +457,7 @@ G_M26377_IG07: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
bne G_M26377_IG08
mov x25, x20
; gcrRegs +[x25]
- b G_M26377_IG70
+ b G_M26377_IG62
;; size=20 bbWeight=0.50 PerfScore 1.75
G_M26377_IG08: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
@@ -468,7 +468,7 @@ G_M26377_IG08: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
bne G_M26377_IG09
mov x26, x20
; gcrRegs +[x26]
- b G_M26377_IG72
+ b G_M26377_IG64
;; size=28 bbWeight=0.50 PerfScore 2.25
G_M26377_IG09: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x26]
@@ -476,241 +476,10 @@ G_M26377_IG09: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
movk x8, #0xD1FFAB1E LSL #16
movk x8, #0xD1FFAB1E LSL #32
cmp x1, x8
- bne G_M26377_IG86
- ldr x27, [x20, #0x30]
- ; gcrRegs +[x27]
- mov x28, x27
- ; gcrRegs +[x28]
- cbz x28, G_M26377_IG11
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M26377_IG10: ; bbWeight=0.25, gcrefRegs=18380000 {x19 x20 x21 x27 x28}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x28]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- cmp x0, x1
- beq G_M26377_IG82
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M26377_IG11: ; bbWeight=0.50, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x28]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- mov w1, #0xD1FFAB1E
- bl CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
- movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x0, [x0]
- ; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- ldr wzr, [x0]
- blr x1
- mov x22, x0
- ; gcrRegs +[x22]
- ldr x1, [x20, #0x38]
- ; gcrRegs +[x1]
- ldrsb wzr, [x22]
- mov x0, x22
- mov x2, x21
- ; gcrRegs +[x2]
- mov w3, #2
- movz x4, #0xD1FFAB1E // code for <unknown method>
- movk x4, #0xD1FFAB1E LSL #16
- movk x4, #0xD1FFAB1E LSL #32
- ldr x4, [x4]
- blr x4
- ; gcrRegs -[x0-x2 x21]
- movz x1, #0xD1FFAB1E // code for <unknown method>
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ldr x28, [x20, #0x40]
- ; gcrRegs +[x28]
- mov x0, x19
- ; gcrRegs +[x0]
- mov x1, x20
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- mov x2, x0
- ; gcrRegs +[x2]
- mov x0, x22
- mov x1, x28
- ; gcrRegs +[x1]
- mov w3, #2
- movz x4, #0xD1FFAB1E // code for <unknown method>
- movk x4, #0xD1FFAB1E LSL #16
- movk x4, #0xD1FFAB1E LSL #32
- ldr x4, [x4]
- blr x4
- ; gcrRegs -[x0-x2 x28]
- movz x1, #0xD1FFAB1E // code for <unknown method>
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- mov x0, x22
- ; gcrRegs +[x0]
- mov x1, x27
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.LocalRewriter+PlaceholderReplacer:Replace(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.BoundEarlyValuePlaceholderBase,Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1 x27]
- mov x27, x0
- ; gcrRegs +[x27]
- mov x0, x22
- movz x1, #0xD1FFAB1E // code for System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Clear():this
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcrRegs -[x0]
- ldr x0, [x22, #0x48]
- ; gcrRegs +[x0]
- cbz x0, G_M26377_IG12
- ldr x14, [x0, #0x08]
- ; gcrRegs +[x14]
- cbnz x14, G_M26377_IG83
- add x14, x0, #8
- ; gcrRegs -[x14]
- ; byrRegs +[x14]
- mov x15, x22
- ; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x22]
- ; byrRegs -[x14]
- ;; size=296 bbWeight=0.50 PerfScore 40.25
-G_M26377_IG12: ; bbWeight=0.50, gcrefRegs=8180000 {x19 x20 x27}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
- mov x1, x27
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.LocalRewriter:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- ldr wzr, [x0]
- blr x2
- ; gcrRegs -[x1 x27]
- mov x1, x0
- ; gcrRegs +[x1]
...
+0 (0.00%) : 22127.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNativeIntegerOverflowingUnaryOperator(int,Microsoft.CodeAnalysis.ConstantValue):System.Object (FullOpts)
@@ -24,19 +24,9 @@ G_M35943_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M35943_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov w1, #0xD1FFAB1E
cmp w0, w1
- beq G_M35943_IG05
+ bne G_M35943_IG05
;; size=12 bbWeight=1 PerfScore 2.00
-G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov x0, xzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19]
+G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -57,13 +47,21 @@ G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
mov x0, x20
; gcrRegs +[x0]
;; size=60 bbWeight=0.50 PerfScore 8.50
+G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x20]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M35943_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M35943_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x20]
bl CORINFO_HELP_OVERFLOW
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
+0 (0.00%) : 3680.dasm - FSharp.Compiler.CompilerConfig+TcConfig:computeKnownDllReference(System.String):System.Tuple2[FSharp.Compiler.CompilerConfig+AssemblyReference,Microsoft.FSharp.Core.FSharpOption1[System.String]]:this (FullOpts)
@@ -22,11 +22,12 @@
; V11 tmp5 [V11,T00] ( 6, 10 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CompilerConfig+AssemblyReference>
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-;* V14 tmp8 [V14,T09] ( 0, 0 ) long -> zero-ref single-def "field V07.code1 (fldOffset=0x0)" P-INDEP
-;* V15 tmp9 [V15,T10] ( 0, 0 ) long -> zero-ref single-def "field V07.code2 (fldOffset=0x8)" P-INDEP
-; V16 cse0 [V16,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
-;* V17 cse1 [V17,T11] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-; V18 cse2 [V18,T06] ( 3, 3 ) long -> x21 "CSE - aggressive"
+;* V14 tmp8 [V14,T10] ( 0, 0 ) long -> zero-ref single-def "field V07.code1 (fldOffset=0x0)" P-INDEP
+;* V15 tmp9 [V15,T11] ( 0, 0 ) long -> zero-ref single-def "field V07.code2 (fldOffset=0x8)" P-INDEP
+; V16 tmp10 [V16,T09] ( 2, 1 ) ref -> x2 single-def "Field obj"
+; V17 cse0 [V17,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
+;* V18 cse1 [V18,T12] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V19 cse2 [V19,T06] ( 3, 3 ) long -> x21 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -102,7 +103,7 @@ G_M10872_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
cbz x2, G_M10872_IG05
;; size=160 bbWeight=1 PerfScore 38.50
G_M10872_IG03: ; bbWeight=0.50, gcrefRegs=500005 {x0 x2 x20 x22}, byrefRegs=0000 {}, byref
- ldr xzr, [x2, #0x10]
+ ldrsb wzr, [x2]
ldr x2, [x0, #0x08]
mov x0, x20
mov x1, x22
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.linux.arm64.checked.mch |
25 |
25 |
0 |
0 |
-444 |
+0 |
| benchmarks.run_pgo.linux.arm64.checked.mch |
246 |
175 |
3 |
68 |
-3,880 |
+56 |
| benchmarks.run_tiered.linux.arm64.checked.mch |
11 |
9 |
0 |
2 |
-168 |
+0 |
| coreclr_tests.run.linux.arm64.checked.mch |
455 |
251 |
5 |
199 |
-6,028 |
+52 |
| libraries.crossgen2.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries.pmi.linux.arm64.checked.mch |
205 |
191 |
1 |
13 |
-3,568 |
+8 |
| libraries_tests.run.linux.arm64.Release.mch |
1,321 |
1,106 |
22 |
193 |
-23,692 |
+272 |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
256 |
237 |
0 |
19 |
-3,836 |
+0 |
| realworld.run.linux.arm64.checked.mch |
58 |
55 |
0 |
3 |
-1,340 |
+0 |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
2,577 |
2,049 |
31 |
497 |
-42,956 |
+388 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.arm64.checked.mch |
32,435 |
2,362 |
30,073 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.linux.arm64.checked.mch |
152,737 |
60,751 |
91,986 |
14 (0.01%) |
14 (0.01%) |
| benchmarks.run_tiered.linux.arm64.checked.mch |
60,787 |
45,077 |
15,710 |
0 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.linux.arm64.checked.mch |
626,684 |
383,548 |
243,136 |
12 (0.00%) |
12 (0.00%) |
| libraries.crossgen2.linux.arm64.checked.mch |
1,936 |
0 |
1,936 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.linux.arm64.checked.mch |
295,687 |
6 |
295,681 |
3 (0.00%) |
3 (0.00%) |
| libraries_tests.run.linux.arm64.Release.mch |
750,983 |
494,543 |
256,440 |
128 (0.02%) |
128 (0.02%) |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
304,826 |
21,600 |
283,226 |
2 (0.00%) |
2 (0.00%) |
| realworld.run.linux.arm64.checked.mch |
33,343 |
157 |
33,186 |
0 (0.00%) |
0 (0.00%) |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
52 |
0 |
52 |
0 (0.00%) |
0 (0.00%) |
|
2,259,470 |
1,008,044 |
1,251,426 |
159 (0.01%) |
159 (0.01%) |
jit-analyze output
benchmarks.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 14972964 (overridden on cmd)
Total bytes of diff: 14972520 (overridden on cmd)
Total bytes of delta: -444 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 25 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
benchmarks.run_pgo.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 79903244 (overridden on cmd)
Total bytes of diff: 79899420 (overridden on cmd)
Total bytes of delta: -3824 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 85 unchanged.
benchmarks.run_tiered.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 22276872 (overridden on cmd)
Total bytes of diff: 22276704 (overridden on cmd)
Total bytes of delta: -168 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 11 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
coreclr_tests.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 509740232 (overridden on cmd)
Total bytes of diff: 509734256 (overridden on cmd)
Total bytes of delta: -5976 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 77 unchanged.
libraries.pmi.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 76281012 (overridden on cmd)
Total bytes of diff: 76277452 (overridden on cmd)
Total bytes of delta: -3560 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 59 unchanged.
libraries_tests.run.linux.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 400018960 (overridden on cmd)
Total bytes of diff: 399995540 (overridden on cmd)
Total bytes of delta: -23420 (-0.01 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 85 unchanged.
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 165110104 (overridden on cmd)
Total bytes of diff: 165106268 (overridden on cmd)
Total bytes of delta: -3836 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 68 unchanged.
realworld.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15918288 (overridden on cmd)
Total bytes of diff: 15916948 (overridden on cmd)
Total bytes of delta: -1340 (-0.01 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 51 unchanged.
linux x64
Diffs are based on 2,249,703 contexts (981,298 MinOpts, 1,268,405 FullOpts).
MISSED contexts: 134 (0.01%)
Overall (-47,589 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.x64.checked.mch |
13,723,744 |
-452 |
| benchmarks.run_pgo.linux.x64.checked.mch |
69,144,788 |
-4,980 |
| benchmarks.run_tiered.linux.x64.checked.mch |
15,897,809 |
-261 |
| coreclr_tests.run.linux.x64.checked.mch |
403,316,719 |
-6,336 |
| libraries.pmi.linux.x64.checked.mch |
60,405,907 |
-3,269 |
| libraries_tests.run.linux.x64.Release.mch |
348,249,945 |
-27,535 |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
132,684,063 |
-3,700 |
| realworld.run.linux.x64.checked.mch |
13,212,110 |
-1,056 |
FullOpts (-47,589 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.x64.checked.mch |
13,459,811 |
-452 |
| benchmarks.run_pgo.linux.x64.checked.mch |
47,802,743 |
-4,980 |
| benchmarks.run_tiered.linux.x64.checked.mch |
3,639,425 |
-261 |
| coreclr_tests.run.linux.x64.checked.mch |
123,825,558 |
-6,336 |
| libraries.pmi.linux.x64.checked.mch |
60,293,050 |
-3,269 |
| libraries_tests.run.linux.x64.Release.mch |
164,494,781 |
-27,535 |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
122,066,277 |
-3,700 |
| realworld.run.linux.x64.checked.mch |
12,823,228 |
-1,056 |
Example diffs
benchmarks.run.linux.x64.checked.mch
-31 (-23.31%) : 26125.dasm - System.Collections.IterateForEach`1[System.Canon]:ImmutableStack():System.Canon:this (FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
+; V00 this [V00,T01] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
; V01 loc0 [V01,T04] ( 3, 4 ) ref -> r15 ld-addr-op class-hnd <System.__Canon>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Collections.Immutable.ImmutableStack`1[System.__Canon]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def <System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]>
@@ -23,11 +23,11 @@
; V12 tmp7 [V12,T06] ( 2, 3 ) ref -> r14 "field V03._originalStack (fldOffset=0x0)" P-INDEP
; V13 tmp8 [V13,T00] ( 8, 27 ) ref -> r13 "field V03._remainingStack (fldOffset=0x8)" P-INDEP
;* V14 cse0 [V14,T07] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V15 rat0 [V15,T03] ( 2, 4 ) long -> rdi "Spilling to split statement for tree"
+;* V15 rat0 [V15,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V16 rat1 [V16,T05] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V17 rat2 [V17,T02] ( 2, 4 ) long -> rdi "fgMakeTemp is creating a new local variable"
+;* V17 rat2 [V17,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M64146_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -35,12 +35,10 @@ G_M64146_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push r14
push r13
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x30]
- mov qword ptr [rbp-0x28], rdi
+ lea rbp, [rsp+0x20]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=16 bbWeight=1 PerfScore 5.75
G_M64146_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor r15, r15
; gcrRegs +[r15]
@@ -53,14 +51,8 @@ G_M64146_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs +[r14]
mov r13, rdx
; gcrRegs +[r13]
- mov rdi, qword ptr [rbx]
- mov rdi, qword ptr [rdi+0x38]
- mov rdi, qword ptr [rdi]
- mov rdi, qword ptr [rdi+0x20]
- test rdi, rdi
- jne SHORT G_M64146_IG04
jmp SHORT G_M64146_IG04
- ;; size=45 bbWeight=1 PerfScore 20.00
+ ;; size=26 bbWeight=1 PerfScore 10.75
G_M64146_IG03: ; bbWeight=2, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rdx r15]
mov rdi, r13
@@ -102,16 +94,15 @@ G_M64146_IG08: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
G_M64146_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=1 PerfScore 3.75
+ ;; size=9 bbWeight=1 PerfScore 3.50
-Total bytes of code 133, prolog size 21, PerfScore 99.50, instruction count 44, allocated bytes for code 133 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
+Total bytes of code 102, prolog size 13, PerfScore 88.75, instruction count 35, allocated bytes for code 102 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -119,12 +110,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0C
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
-24 (-8.42%) : 4491.dasm - System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
@@ -40,9 +40,9 @@ G_M29540_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=30 bbWeight=1 PerfScore 6.50
G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=800A {rcx rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
cmp dword ptr [rbx+0x60], 0
- jne G_M29540_IG08
+ jne G_M29540_IG07
test rcx, rcx
- je G_M29540_IG09
+ je G_M29540_IG08
lea rdi, bword ptr [rcx+0xAC]
; byrRegs +[rdi]
mov esi, 1
@@ -50,7 +50,7 @@ G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=800
lock
cmpxchg dword ptr [rdi], esi
test eax, eax
- jne G_M29540_IG10
+ jne G_M29540_IG09
mov dword ptr [rcx+0x94], 7
lea rdi, bword ptr [rcx+0x60]
mov rsi, rbx
@@ -61,19 +61,10 @@ G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=800
mov rcx, gword ptr [rbp-0x18]
; gcrRegs +[rcx]
cmp byte ptr [rcx+0xBA], 0
- jne SHORT G_M29540_IG04
+ je SHORT G_M29540_IG04
;; size=80 bbWeight=1 PerfScore 33.25
-G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- mov rax, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rax]
- ; gcrRegs +[rax]
- cmp byte ptr [rax+0x9D], 0
- je SHORT G_M29540_IG05
- jmp SHORT G_M29540_IG05
- ;; size=24 bbWeight=0.50 PerfScore 4.12
-G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call [System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext]
; gcrRegs +[rax]
; gcr arg pop 0
@@ -88,7 +79,7 @@ G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; byrRegs -[rdi]
nop
;; size=23 bbWeight=0.50 PerfScore 3.00
-G_M29540_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M29540_IG04: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbp-0x18]
; gcrRegs +[rcx]
mov rsi, gword ptr [rbx+0x08]
@@ -102,20 +93,20 @@ G_M29540_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
; gcr arg pop 0
nop
;; size=21 bbWeight=1 PerfScore 6.75
-G_M29540_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
cmp eax, 997
sete al
movzx rax, al
;; size=11 bbWeight=1 PerfScore 1.50
-G_M29540_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M29540_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 16
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
-G_M29540_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -124,7 +115,7 @@ G_M29540_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
; gcr arg pop 0
int3
;; size=10 bbWeight=0 PerfScore 0.00
-G_M29540_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29540_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov edi, 0x1D12
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -137,7 +128,7 @@ G_M29540_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=30 bbWeight=0 PerfScore 0.00
-G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG09: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
; GC ptr vars +{V00 V01}
mov rdi, rcx
@@ -149,7 +140,7 @@ G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
; gcr arg pop 0
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
push rbp
push r15
@@ -159,7 +150,7 @@ G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x20]
;; size=19 bbWeight=0 PerfScore 0.00
-G_M29540_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rdi, gword ptr [rbp-0x18]
; gcrRegs +[rdi]
; GC ptr vars -{V00 V01}
@@ -171,7 +162,7 @@ G_M29540_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
int3
;; size=16 bbWeight=0 PerfScore 0.00
-Total bytes of code 285, prolog size 30, PerfScore 57.88, instruction count 77, allocated bytes for code 285 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
+Total bytes of code 261, prolog size 30, PerfScore 53.75, instruction count 72, allocated bytes for code 261 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -204,4 +195,4 @@ Unwind Info:
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
*************** EH table for System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M29540_IG05..G_M29540_IG06) handled by [G_M29540_IG11..END) (class: 1000001)
+EH#0: try [G_M29540_IG04..G_M29540_IG05) handled by [G_M29540_IG10..END) (class: 1000001)
-24 (-8.42%) : 4531.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
@@ -40,9 +40,9 @@ G_M23091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=30 bbWeight=1 PerfScore 6.50
G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=800A {rcx rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
cmp dword ptr [rbx+0x60], 0
- jne G_M23091_IG08
+ jne G_M23091_IG07
test rcx, rcx
- je G_M23091_IG09
+ je G_M23091_IG08
lea rdi, bword ptr [rcx+0xAC]
; byrRegs +[rdi]
mov esi, 1
@@ -50,7 +50,7 @@ G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=800
lock
cmpxchg dword ptr [rdi], esi
test eax, eax
- jne G_M23091_IG10
+ jne G_M23091_IG09
mov dword ptr [rcx+0x94], 4
lea rdi, bword ptr [rcx+0x60]
mov rsi, rbx
@@ -61,19 +61,10 @@ G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=800
mov rcx, gword ptr [rbp-0x18]
; gcrRegs +[rcx]
cmp byte ptr [rcx+0xBA], 0
- jne SHORT G_M23091_IG04
+ je SHORT G_M23091_IG04
;; size=80 bbWeight=1 PerfScore 33.25
-G_M23091_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M23091_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- mov rax, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rax]
- ; gcrRegs +[rax]
- cmp byte ptr [rax+0x9D], 0
- je SHORT G_M23091_IG05
- jmp SHORT G_M23091_IG05
- ;; size=24 bbWeight=0.50 PerfScore 4.12
-G_M23091_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call [System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext]
; gcrRegs +[rax]
; gcr arg pop 0
@@ -88,7 +79,7 @@ G_M23091_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; byrRegs -[rdi]
nop
;; size=23 bbWeight=0.50 PerfScore 3.00
-G_M23091_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M23091_IG04: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbp-0x18]
; gcrRegs +[rcx]
mov rsi, gword ptr [rbx+0x08]
@@ -102,20 +93,20 @@ G_M23091_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
; gcr arg pop 0
nop
;; size=21 bbWeight=1 PerfScore 6.75
-G_M23091_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
cmp eax, 997
sete al
movzx rax, al
;; size=11 bbWeight=1 PerfScore 1.50
-G_M23091_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M23091_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 16
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
-G_M23091_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -124,7 +115,7 @@ G_M23091_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
; gcr arg pop 0
int3
;; size=10 bbWeight=0 PerfScore 0.00
-G_M23091_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23091_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov edi, 0x1D12
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -137,7 +128,7 @@ G_M23091_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=30 bbWeight=0 PerfScore 0.00
-G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG09: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
; GC ptr vars +{V00 V01}
mov rdi, rcx
@@ -149,7 +140,7 @@ G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
; gcr arg pop 0
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
push rbp
push r15
@@ -159,7 +150,7 @@ G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x20]
;; size=19 bbWeight=0 PerfScore 0.00
-G_M23091_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rdi, gword ptr [rbp-0x18]
; gcrRegs +[rdi]
; GC ptr vars -{V00 V01}
@@ -171,7 +162,7 @@ G_M23091_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
int3
;; size=16 bbWeight=0 PerfScore 0.00
-Total bytes of code 285, prolog size 30, PerfScore 57.88, instruction count 77, allocated bytes for code 285 (MethodHash=03bba5cc) for method System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
+Total bytes of code 261, prolog size 30, PerfScore 53.75, instruction count 72, allocated bytes for code 261 (MethodHash=03bba5cc) for method System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -204,4 +195,4 @@ Unwind Info:
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
*************** EH table for System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M23091_IG05..G_M23091_IG06) handled by [G_M23091_IG11..END) (class: 1000001)
+EH#0: try [G_M23091_IG04..G_M23091_IG05) handled by [G_M23091_IG10..END) (class: 1000001)
-8 (-0.62%) : 4670.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:FindChainViaAia(byref):Interop+Crypto+X509VerifyStatusCode:this (FullOpts)
@@ -14,8 +14,8 @@
; V03 loc1 [V03,T24] ( 4, 13 ) ref -> r15 class-hnd exact single-def <Microsoft.Win32.SafeHandles.SafeX509StoreCtxHandle>
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref <Interop+Crypto+X509VerifyStatusCode>
; V05 loc3 [V05,T15] ( 7, 19 ) ref -> [rbp-0x68] do-not-enreg[Z] class-hnd exact EH-live <Microsoft.Win32.SafeHandles.SafeX509Handle>
-; V06 loc4 [V06,T28] ( 3, 12 ) long -> rdi
-; V07 loc5 [V07 ] ( 11, 40 ) struct (16) [rbp-0x38] do-not-enreg[SBR] multireg-ret must-init ld-addr-op <System.ArraySegment`1[ubyte]>
+; V06 loc4 [V06,T27] ( 3, 12 ) long -> rdi
+; V07 loc5 [V07 ] ( 10, 40 ) struct (16) [rbp-0x38] do-not-enreg[SBR] multireg-ret must-init ld-addr-op <System.ArraySegment`1[ubyte]>
;* V08 loc6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate2>
; V09 loc7 [V09,T29] ( 7, 11 ) ref -> [rbp-0x70] class-hnd exact EH-live spill-single-def <<unknown class>>
; V10 loc8 [V10,T18] ( 8, 15 ) int -> rbx
@@ -44,12 +44,12 @@
; V33 tmp15 [V33 ] ( 5, 40 ) struct (16) [rbp-0x48] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
;* V34 tmp16 [V34 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V35 tmp17 [V35,T07] ( 6, 24 ) ref -> r13 class-hnd "Inline return value spill temp" <System.Security.Cryptography.X509Certificates.X509Certificate2>
-; V36 tmp18 [V36,T26] ( 3, 12 ) ref -> rax class-hnd exact "Inline stloc first use temp" <System.String>
+; V36 tmp18 [V36,T25] ( 3, 12 ) ref -> rax class-hnd exact "Inline stloc first use temp" <System.String>
;* V37 tmp19 [V37 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.TimeSpan>
;* V38 tmp20 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V39 tmp21 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
; V40 tmp22 [V40,T00] ( 7, 56 ) ref -> rdi class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-; V41 tmp23 [V41,T27] ( 3, 12 ) ref -> rdx class-hnd "Inline stloc first use temp" <<unknown class>>
+; V41 tmp23 [V41,T26] ( 3, 12 ) ref -> rdx class-hnd "Inline stloc first use temp" <<unknown class>>
; V42 tmp24 [V42,T19] ( 4, 16 ) int -> rsi "Inline stloc first use temp"
;* V43 tmp25 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V44 tmp26 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
@@ -91,7 +91,7 @@
;* V80 tmp62 [V80 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V81 tmp63 [V81,T10] ( 6, 23 ) int -> [rbp-0x4C] do-not-enreg[Z] EH-live "field V04.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
; V82 tmp64 [V82,T11] ( 5, 20 ) ref -> [rbp-0x38] do-not-enreg[] "field V07._array (fldOffset=0x0)" P-DEP
-; V83 tmp65 [V83,T25] ( 4, 12 ) int -> [rbp-0x30] do-not-enreg[] "field V07._offset (fldOffset=0x8)" P-DEP
+; V83 tmp65 [V83,T28] ( 3, 12 ) int -> [rbp-0x30] do-not-enreg[] "field V07._offset (fldOffset=0x8)" P-DEP
; V84 tmp66 [V84,T20] ( 4, 16 ) int -> [rbp-0x2C] do-not-enreg[] "field V07._count (fldOffset=0xc)" P-DEP
; V85 tmp67 [V85,T16] ( 4, 18 ) byref -> r15 "field V11._reference (fldOffset=0x0)" P-INDEP
; V86 tmp68 [V86,T17] ( 4, 18 ) int -> r13 "field V11._length (fldOffset=0x8)" P-INDEP
@@ -176,7 +176,7 @@ G_M34496_IG02: ; bbWeight=1, gcVars=0000000000800020 {V00 V01}, gcrefRegs
mov r15, gword ptr [rdi+0x20]
; gcrRegs +[r15]
mov dword ptr [rbp-0x4C], 2
- jmp G_M34496_IG15
+ jmp G_M34496_IG14
;; size=18 bbWeight=1 PerfScore 5.25
G_M34496_IG03: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
@@ -195,7 +195,7 @@ G_M34496_IG04: ; bbWeight=4, gcVars=0000000000808020 {V00 V01 V05}, gcref
mov rdi, qword ptr [rdi+0x10]
; gcrRegs -[rdi]
cmp rdi, rbx
- je G_M34496_IG16
+ je G_M34496_IG15
mov rbx, rdi
mov rdi, gword ptr [rbp-0x68]
; gcrRegs +[rdi]
@@ -216,9 +216,9 @@ G_M34496_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs +[r15]
movzx rdi, byte ptr [r15+0x9D]
test edi, edi
- je G_M34496_IG16
+ je G_M34496_IG15
test edi, edi
- je G_M34496_IG16
+ je G_M34496_IG15
mov rdi, gword ptr [rbp-0x68]
; gcrRegs +[rdi]
call [<unknown method>]
@@ -232,12 +232,12 @@ G_M34496_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.String):this]
; gcrRegs -[rax rdx rdi r15]
; gcr arg pop 0
- jmp G_M34496_IG16
+ jmp G_M34496_IG15
;; size=69 bbWeight=1 PerfScore 16.50
G_M34496_IG06: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs +[r15]
cmp gword ptr [rbp-0x38], 0
- je G_M34496_IG11
+ je G_M34496_IG10
mov edi, dword ptr [rbp-0x30]
mov esi, dword ptr [rbp-0x2C]
add rdi, rsi
@@ -266,7 +266,7 @@ G_M34496_IG06: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byr
; gcrRegs -[rdx rdi] +[rax]
; gcr arg pop 0
test rax, rax
- jne G_M34496_IG12
+ jne G_M34496_IG11
xor r13, r13
; gcrRegs +[r13]
;; size=100 bbWeight=4 PerfScore 101.00
@@ -282,7 +282,7 @@ G_M34496_IG07: ; bbWeight=4, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {},
; gcrRegs -[rsi rdi]
; gcr arg pop 0
test r13, r13
- je G_M34496_IG16
+ je G_M34496_IG15
mov rax, bword ptr [rbp-0x60]
; byrRegs +[rax]
cmp gword ptr [rax], 0
@@ -338,7 +338,7 @@ G_M34496_IG08: ; bbWeight=4, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {},
; gcrRegs +[rdx]
mov esi, dword ptr [rdi+0x10]
cmp dword ptr [rdx+0x08], esi
- jbe SHORT G_M34496_IG13
+ jbe SHORT G_M34496_IG12
lea ecx, [rsi+0x01]
mov dword ptr [rdi+0x10], ecx
movsxd rsi, esi
@@ -361,7 +361,7 @@ G_M34496_IG09: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byr
; gcrRegs -[rdi]
; gcr arg pop 0
mov dword ptr [rbp-0x4C], eax
- jmp SHORT G_M34496_IG14
+ jmp SHORT G_M34496_IG13
;; size=23 bbWeight=4 PerfScore 38.00
G_M34496_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
@@ -369,12 +369,7 @@ G_M34496_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M34496_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [rbp-0x30], 0
- jne SHORT G_M34496_IG10
- jmp SHORT G_M34496_IG10
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M34496_IG12: ; bbWeight=4, gcrefRegs=8001 {rax r15}, byrefRegs=0000 {}, byref
+G_M34496_IG11: ; bbWeight=4, gcrefRegs=8001 {rax r15}, byrefRegs=0000 {}, byref
; gcrRegs +[rax r15]
mov rdi, rax
; gcrRegs +[rdi]
@@ -386,7 +381,7 @@ G_M34496_IG12: ; bbWeight=4, gcrefRegs=8001 {rax r15}, byrefRegs=0000 {},
; gcrRegs +[r13]
jmp G_M34496_IG07
;; size=20 bbWeight=4 PerfScore 23.00
-G_M34496_IG13: ; bbWeight=4, gcrefRegs=A080 {rdi r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M34496_IG12: ; bbWeight=4, gcrefRegs=A080 {rdi r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[rdi]
mov rsi, r13
; gcrRegs +[rsi]
@@ -395,7 +390,7 @@ G_M34496_IG13: ; bbWeight=4, gcrefRegs=A080 {rdi r13 r15}, byrefRegs=0000
; gcr arg pop 0
jmp SHORT G_M34496_IG09
;; size=11 bbWeight=4 PerfScore 21.00
-G_M34496_IG14: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+G_M34496_IG13: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbp-0x68]
; gcrRegs +[rdi]
; GC ptr vars -{V05}
@@ -403,36 +398,36 @@ G_M34496_IG14: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byr
; gcrRegs -[rdi]
; gcr arg pop 0
;; size=10 bbWeight=4 PerfScore 16.00
-G_M34496_IG15: ; bbWeight=8, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+G_M34496_IG14: ; bbWeight=8, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbp-0x4C], 2
je G_M34496_IG03
cmp dword ptr [rbp-0x4C], 20
- jne SHORT G_M34496_IG18
+ jne SHORT G_M34496_IG17
jmp G_M34496_IG03
;; size=21 bbWeight=8 PerfScore 64.00
-G_M34496_IG16: ; bbWeight=1, gcVars=0000000000808020 {V00 V01 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M34496_IG15: ; bbWeight=1, gcVars=0000000000808020 {V00 V01 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r15]
; GC ptr vars +{V05 V15}
mov rdi, qword ptr [rbp-0x90]
- call G_M34496_IG42
+ call G_M34496_IG41
;; size=12 bbWeight=1 PerfScore 2.00
-G_M34496_IG17: ; bbWeight=1, nogc, extend
+G_M34496_IG16: ; bbWeight=1, nogc, extend
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M34496_IG18: ; bbWeight=1, gcVars=0000000000800020 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M34496_IG17: ; bbWeight=1, gcVars=0000000000800020 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V05 V15}
test byte ptr [(reloc)], 1 ; global ptr
- je G_M34496_IG41
+ je G_M34496_IG40
;; size=13 bbWeight=1 PerfScore 4.00
-G_M34496_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34496_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov edi, dword ptr [rdi]
cmp dword ptr [rbp-0x4C], edi
- jne G_M34496_IG38
+ jne G_M34496_IG37
mov rax, bword ptr [rbp-0x60]
; byrRegs +[rax]
cmp gword ptr [rax], 0
- je G_M34496_IG38
+ je G_M34496_IG37
mov rdi, gword ptr [rbp-0x58]
; gcrRegs +[rdi]
mov rdi, gword ptr [rdi+0x20]
@@ -444,7 +439,7 @@ G_M34496_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov gword ptr [rbp-0x70], rax
; GC ptr vars +{V09}
;; size=53 bbWeight=1 PerfScore 17.25
-G_M34496_IG20: ; bbWeight=1, gcVars=0000000020000020 {V01 V09}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34496_IG19: ; bbWeight=1, gcVars=0000000020000020 {V01 V09}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
mov rdi, rax
; gcrRegs +[rdi]
call [<unknown method>]
@@ -457,11 +452,11 @@ G_M34496_IG20: ; bbWeight=1, gcVars=0000000020000020 {V01 V09}, gcrefRegs
xor r14, r14
; gcrRegs +[r14]
cmp ebx, 10
- jg SHORT G_M34496_IG22
+ jg SHORT G_M34496_IG21
cmp ebx, 10
- ja G_M34496_IG33
+ ja G_M34496_IG32
test ebx, ebx
- jge SHORT G_M34496_IG21
+ jge SHORT G_M34496_IG20
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -471,15 +466,15 @@ G_M34496_IG20: ; bbWeight=1, gcVars=0000000020000020 {V01 V09}, gcrefRegs
; byrRegs +[r15]
; gcr arg pop 0
;; size=69 bbWeight=1 PerfScore 14.75
-G_M34496_IG21: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+G_M34496_IG20: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
mov r13d, ebx
- jmp SHORT G_M34496_IG24
+ jmp SHORT G_M34496_IG23
;; size=5 bbWeight=1 PerfScore 2.25
-G_M34496_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34496_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r14]
; byrRegs -[r15]
imul r13d, ebx, 8
- jo G_M34496_IG34
+ jo G_M34496_IG33
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
; gcrRegs +[rdi]
@@ -490,14 +485,14 @@ G_M34496_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r14, rax
; gcrRegs +[r14]
test r14, r14
- jne G_M34496_IG35
+ jne G_M34496_IG34
test r13d, r13d
- jne G_M34496_IG33
+ jne G_M34496_IG32
xor r15, r15
; byrRegs +[r15]
...
-34 (-0.28%) : 13878.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
@@ -60,7 +60,7 @@
; V49 tmp36 [V49,T166] ( 2, 8 ) int -> rdx "Strict ordering of exceptions for Array store"
; V50 tmp37 [V50,T167] ( 2, 8 ) int -> rdx "Strict ordering of exceptions for Array store"
; V51 tmp38 [V51,T168] ( 2, 8 ) int -> rdx "Strict ordering of exceptions for Array store"
-; V52 tmp39 [V52,T348] ( 3, 1.50) long -> rdx single-def "Inline stloc first use temp"
+; V52 tmp39 [V52,T348] ( 2, 1 ) long -> rdx single-def "Inline stloc first use temp"
;* V53 tmp40 [V53,T349] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V54 tmp41 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V55 tmp42 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
@@ -108,7 +108,7 @@
;* V97 tmp84 [V97 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V98 tmp85 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V99 tmp86 [V99 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V100 tmp87 [V100,T120] ( 3, 10 ) long -> rcx "Inline stloc first use temp"
+; V100 tmp87 [V100,T120] ( 2, 8 ) long -> rcx "Inline stloc first use temp"
;* V101 tmp88 [V101,T127] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V102 tmp89 [V102 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V103 tmp90 [V103 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
@@ -522,7 +522,7 @@ G_M11467_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov r12, qword ptr [r13+0x60]
call [r12+0x10]<unknown method>
; gcrRegs -[rbx rsi rdi]
- jmp G_M11467_IG271
+ jmp G_M11467_IG269
;; size=33 bbWeight=0.50 PerfScore 5.75
G_M11467_IG04: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx r14-r15]
@@ -571,12 +571,12 @@ G_M11467_IG05: ; bbWeight=0.50, gcVars=0000000000000000000000000000000000
; gcrRegs +[rax]
mov edi, dword ptr [rax+0x08]
test edi, edi
- jl G_M11467_IG274
+ jl G_M11467_IG272
mov dword ptr [rbp-0x2C], edi
test edi, edi
jle G_M11467_IG46
cmp dword ptr [rax+0x08], 0
- jbe G_M11467_IG273
+ jbe G_M11467_IG271
movzx rdx, byte ptr [rax+0x10]
mov r8d, edx
mov dword ptr [rbp-0x64], r8d
@@ -737,7 +737,7 @@ G_M11467_IG18: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
cmp edi, 0xBB8
- jae G_M11467_IG273
+ jae G_M11467_IG271
mov eax, edi
movzx rdx, word ptr [rdx+2*rax+0x10]
; gcrRegs -[rdx]
@@ -752,7 +752,7 @@ G_M11467_IG19: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
lea edx, [rdi+0x01]
; gcrRegs -[rdx]
cmp edx, 0xBB8
- jae G_M11467_IG273
+ jae G_M11467_IG271
lea edx, [rdi+0x01]
movzx rdx, word ptr [rax+2*rdx+0x10]
mov word ptr [r14+0x14], dx
@@ -764,7 +764,7 @@ G_M11467_IG20: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
; gcrRegs +[rax]
lea edx, [rdi+0x02]
cmp edx, 0xBB8
- jae G_M11467_IG273
+ jae G_M11467_IG271
add edi, 2
mov edx, edi
movzx rdx, word ptr [rax+2*rdx+0x10]
@@ -778,7 +778,7 @@ G_M11467_IG21: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
mov r8, rdx
; gcrRegs +[r8]
cmp r9d, 0xBB8
- jae G_M11467_IG273
+ jae G_M11467_IG271
mov edx, r9d
; gcrRegs -[rdx]
movzx rdx, word ptr [r8+2*rdx+0x10]
@@ -791,7 +791,7 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
; gcrRegs +[r8]
lea edx, [r9+0x01]
cmp edx, 0xBB8
- jae G_M11467_IG273
+ jae G_M11467_IG271
lea edx, [r9+0x01]
movzx rdx, word ptr [r8+2*rdx+0x10]
mov word ptr [r14+0x1A], dx
@@ -805,7 +805,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
; gcrRegs +[rdx]
lea edi, [r9+0x02]
cmp edi, 0xBB8
- jae G_M11467_IG273
+ jae G_M11467_IG271
add r9d, 2
mov edi, r9d
movzx rdx, word ptr [rdx+2*rdi+0x10]
@@ -814,7 +814,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
mov rdx, r8
; gcrRegs +[rdx]
cmp esi, 0xBB8
- jae G_M11467_IG273
+ jae G_M11467_IG271
mov edi, esi
movzx rdx, word ptr [rdx+2*rdi+0x10]
; gcrRegs -[rdx]
@@ -823,7 +823,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
; gcrRegs +[rdx]
lea edi, [rsi+0x01]
cmp edi, 0xBB8
- jae G_M11467_IG273
+ jae G_M11467_IG271
lea edi, [rsi+0x01]
movzx rdx, word ptr [rdx+2*rdi+0x10]
; gcrRegs -[rdx]
@@ -832,7 +832,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
; gcrRegs +[rdx]
lea edi, [rsi+0x02]
cmp edi, 0xBB8
- jae G_M11467_IG273
+ jae G_M11467_IG271
add esi, 2
mov edi, esi
movzx rdx, word ptr [rdx+2*rdi+0x10]
@@ -860,7 +860,7 @@ G_M11467_IG25: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
mov rdx, gword ptr [rbp-0x110]
; gcrRegs +[rdx]
cmp eax, dword ptr [rdx+0x08]
- jae G_M11467_IG273
+ jae G_M11467_IG271
mov dword ptr [rbp-0x30], eax
mov esi, eax
movzx r8, byte ptr [rdx+rsi+0x10]
@@ -1039,7 +1039,7 @@ G_M11467_IG39: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
mov r8, gword ptr [rdx]
; gcrRegs +[r8]
cmp edi, 0xBB8
- jae G_M11467_IG273
+ jae G_M11467_IG271
mov edx, edi
movzx rdx, word ptr [r8+2*rdx+0x10]
mov word ptr [r14+0x12], dx
@@ -1051,7 +1051,7 @@ G_M11467_IG40: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; gcrRegs +[r8]
lea edx, [rdi+0x01]
cmp edx, 0xBB8
- jae G_M11467_IG273
+ jae G_M11467_IG271
lea edx, [rdi+0x01]
movzx rdx, word ptr [r8+2*rdx+0x10]
mov word ptr [r14+0x14], dx
@@ -1063,7 +1063,7 @@ G_M11467_IG41: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; gcrRegs +[r8]
lea edx, [rdi+0x02]
cmp edx, 0xBB8
- jae G_M11467_IG273
+ jae G_M11467_IG271
add edi, 2
mov edx, edi
movzx rdx, word ptr [r8+2*rdx+0x10]
@@ -1075,7 +1075,7 @@ G_M11467_IG42: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
mov r8, gword ptr [rdx]
; gcrRegs +[r8]
cmp ecx, 0xBB8
- jae G_M11467_IG273
+ jae G_M11467_IG271
mov edx, ecx
movzx rdx, word ptr [r8+2*rdx+0x10]
mov word ptr [r14+0x18], dx
@@ -1087,7 +1087,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; gcrRegs +[r8]
lea edx, [rcx+0x01]
cmp edx, 0xBB8
- jae G_M11467_IG273
+ jae G_M11467_IG271
lea edx, [rcx+0x01]
movzx rdx, word ptr [r8+2*rdx+0x10]
mov word ptr [r14+0x1A], dx
@@ -1101,7 +1101,7 @@ G_M11467_IG44: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; gcrRegs +[rdx]
lea edi, [rcx+0x02]
cmp edi, 0xBB8
- jae G_M11467_IG273
+ jae G_M11467_IG271
add ecx, 2
mov edi, ecx
movzx rdx, word ptr [rdx+2*rdi+0x10]
@@ -1110,7 +1110,7 @@ G_M11467_IG44: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
mov rdx, r8
; gcrRegs +[rdx]
cmp esi, 0xBB8
- jae G_M11467_IG273
+ jae G_M11467_IG271
mov edi, esi
movzx rdx, word ptr [rdx+2*rdi+0x10]
; gcrRegs -[rdx]
@@ -1119,7 +1119,7 @@ G_M11467_IG44: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; gcrRegs +[rdx]
lea edi, [rsi+0x01]
cmp edi, 0xBB8
- jae G_M11467_IG273
+ jae G_M11467_IG271
lea edi, [rsi+0x01]
movzx rdx, word ptr [rdx+2*rdi+0x10]
; gcrRegs -[rdx]
@@ -1128,7 +1128,7 @@ G_M11467_IG44: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; gcrRegs +[rdx]
lea edi, [rsi+0x02]
cmp edi, 0xBB8
- jae G_M11467_IG273
+ jae G_M11467_IG271
add esi, 2
mov edi, esi
movzx rdx, word ptr [rdx+2*rdi+0x10]
@@ -1183,7 +1183,7 @@ G_M11467_IG47: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
; GC ptr vars -{V07}
call [r12+0x10]<unknown method>
; gcrRegs -[rax rsi rdi]
- jmp G_M11467_IG99
+ jmp G_M11467_IG97
;; size=63 bbWeight=0.50 PerfScore 8.62
G_M11467_IG48: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000 {V07}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V07}
@@ -1198,40 +1198,34 @@ G_M11467_IG48: ; bbWeight=0.50, gcVars=0000000000000000000000000000000000
; gcrRegs +[rax]
mov edi, dword ptr [rax+0x08]
test edi, edi
- jl G_M11467_IG274
+ jl G_M11467_IG272
mov dword ptr [rbp-0x30], edi
test edi, edi
- jle G_M11467_IG98
+ jle G_M11467_IG96
cmp dword ptr [rax+0x08], 0
- jbe G_M11467_IG273
+ jbe G_M11467_IG271
mov rdi, qword ptr [rax+0x10]
mov rdx, 0xD1FFAB1E
and rdx, rdi
- je SHORT G_M11467_IG49
- mov rsi, 0xD1FFAB1E
- cmp rdx, rsi
- je SHORT G_M11467_IG50
- jmp SHORT G_M11467_IG50
- ;; size=96 bbWeight=0.50 PerfScore 11.50
-G_M11467_IG49: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ jne SHORT G_M11467_IG49
mov rdx, 0xD1FFAB1E
and rdi, rdx
mov rdx, 0xD1FFAB1E
...
-8 (-0.22%) : 16968.dasm - System.IO.Strategies.BufferedFileStreamStrategy+d__37:MoveNext():this (FullOpts)
@@ -30,15 +30,15 @@
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V20 tmp1 [V20 ] ( 0, 0 ) int -> zero-ref "dup spill"
; V21 tmp2 [V21 ] ( 8, 16 ) struct (16) [rbp-0xA0] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
-; V22 tmp3 [V22,T35] ( 3, 6 ) ref -> rax class-hnd single-def "impAppendStmt" <<unknown class>>
+; V22 tmp3 [V22,T34] ( 3, 6 ) ref -> rax class-hnd single-def "impAppendStmt" <<unknown class>>
;* V23 tmp4 [V23 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask`1[int]>
-; V24 tmp5 [V24,T43] ( 3, 6 ) int -> r14 "impAppendStmt"
+; V24 tmp5 [V24,T42] ( 3, 6 ) int -> r14 "impAppendStmt"
;* V25 tmp6 [V25 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V26 tmp7 [V26 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V27 tmp8 [V27 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask`1[int]>
;* V28 tmp9 [V28 ] ( 0, 0 ) int -> zero-ref "dup spill"
; V29 tmp10 [V29 ] ( 5, 10 ) struct (16) [rbp-0xB0] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
-; V30 tmp11 [V30,T36] ( 3, 6 ) ref -> r8 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V30 tmp11 [V30,T35] ( 3, 6 ) ref -> r8 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V31 tmp12 [V31 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask>
;* V32 tmp13 [V32 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V33 tmp14 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
@@ -48,7 +48,7 @@
; V37 tmp18 [V37,T127] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V38 tmp19 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp20 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V40 tmp21 [V40,T37] ( 3, 6 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V40 tmp21 [V40,T36] ( 3, 6 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V41 tmp22 [V41 ] ( 0, 0 ) ref -> zero-ref
; V42 tmp23 [V42,T95] ( 2, 2 ) ref -> rsi single-def
;* V43 tmp24 [V43,T116] ( 0, 0 ) int -> zero-ref
@@ -66,14 +66,14 @@
;* V55 tmp36 [V55 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V56 tmp37 [V56 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V57 tmp38 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
-; V58 tmp39 [V58,T38] ( 3, 6 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V58 tmp39 [V58,T37] ( 3, 6 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
; V59 tmp40 [V59,T67] ( 2, 4 ) int -> rax "Inlining Arg"
;* V60 tmp41 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V61 tmp42 [V61,T04] ( 12, 12 ) int -> r15 "Inline return value spill temp"
-; V62 tmp43 [V62,T44] ( 3, 6 ) int -> r15 "Inlining Arg"
-; V63 tmp44 [V63,T45] ( 3, 6 ) int -> rsi "Inlining Arg"
+; V62 tmp43 [V62,T43] ( 3, 6 ) int -> r15 "Inlining Arg"
+; V63 tmp44 [V63,T44] ( 3, 6 ) int -> rsi "Inlining Arg"
; V64 tmp45 [V64,T10] ( 4, 8 ) ref -> rsi class-hnd single-def "Inlining Arg" <ubyte[]>
-; V65 tmp46 [V65,T32] ( 4, 6 ) int -> rcx "Inlining Arg"
+; V65 tmp46 [V65,T45] ( 3, 6 ) int -> rax "Inlining Arg"
;* V66 tmp47 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V67 tmp48 [V67 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
; V68 tmp49 [V68,T26] ( 6, 6 ) byref -> [rbp-0xD0] "Inline stloc first use temp"
@@ -196,8 +196,8 @@
; V185 tmp166 [V185,T74] ( 2, 4 ) long -> rdx "Inlining Arg"
; V186 tmp167 [V186,T05] ( 6, 12 ) ref -> rdi class-hnd "Inlining Arg" <System.Threading.SemaphoreSlim>
; V187 tmp168 [V187,T07] ( 5, 10 ) byref -> r15 single-def "Inlining Arg"
-; V188 tmp169 [V188,T39] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox[int]>
-; V189 tmp170 [V189,T40] ( 3, 6 ) byref -> rdi single-def "Inlining Arg"
+; V188 tmp169 [V188,T38] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox[int]>
+; V189 tmp170 [V189,T39] ( 3, 6 ) byref -> rdi single-def "Inlining Arg"
; V190 tmp171 [V190 ] ( 6, 6 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V04.m_task (fldOffset=0x0)" P-DEP
; V191 tmp172 [V191 ] ( 6, 6 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V04.m_options (fldOffset=0x8)" P-DEP
;* V192 tmp173 [V192 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
@@ -210,8 +210,8 @@
; V199 tmp180 [V199,T58] ( 4, 4 ) short -> [rbp-0x74] do-not-enreg[] "field V14._token (fldOffset=0xc)" P-DEP
; V200 tmp181 [V200,T106] ( 2, 2 ) ubyte -> [rbp-0x72] do-not-enreg[] "field V14._continueOnCapturedContext (fldOffset=0xe)" P-DEP
; V201 tmp182 [V201,T31] ( 4, 6 ) ref -> [rbp-0xA0] do-not-enreg[] "field V21._object (fldOffset=0x0)" P-DEP
-; V202 tmp183 [V202,T33] ( 4, 6 ) int -> [rbp-0x98] do-not-enreg[] "field V21._index (fldOffset=0x8)" P-DEP
-; V203 tmp184 [V203,T34] ( 4, 6 ) int -> [rbp-0x94] do-not-enreg[] "field V21._length (fldOffset=0xc)" P-DEP
+; V202 tmp183 [V202,T32] ( 4, 6 ) int -> [rbp-0x98] do-not-enreg[] "field V21._index (fldOffset=0x8)" P-DEP
+; V203 tmp184 [V203,T33] ( 4, 6 ) int -> [rbp-0x94] do-not-enreg[] "field V21._length (fldOffset=0xc)" P-DEP
;* V204 tmp185 [V204 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
;* V205 tmp186 [V205 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
; V206 tmp187 [V206,T50] ( 3, 5 ) ref -> [rbp-0xB0] do-not-enreg[] "field V29._object (fldOffset=0x0)" P-DEP
@@ -266,15 +266,15 @@
;* V255 tmp236 [V255 ] ( 0, 0 ) int -> zero-ref "field V181._length (fldOffset=0x8)" P-INDEP
;* V256 tmp237 [V256 ] ( 0, 0 ) byref -> zero-ref single-def "field V182._reference (fldOffset=0x0)" P-INDEP
;* V257 tmp238 [V257 ] ( 0, 0 ) int -> zero-ref "field V182._length (fldOffset=0x8)" P-INDEP
-; V258 tmp239 [V258,T41] ( 3, 6 ) ref -> rax single-def "argument with side effect"
+; V258 tmp239 [V258,T40] ( 3, 6 ) ref -> rax single-def "argument with side effect"
; V259 tmp240 [V259,T63] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
; V260 tmp241 [V260,T64] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
-; V261 tmp242 [V261,T42] ( 3, 6 ) ref -> rax single-def "argument with side effect"
+; V261 tmp242 [V261,T41] ( 3, 6 ) ref -> rax single-def "argument with side effect"
; V262 tmp243 [V262,T65] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
; V263 tmp244 [V263,T66] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
; V264 PSPSym [V264,T126] ( 1, 1 ) long -> [rbp-0x100] do-not-enreg[V] "PSPSym"
; V265 cse0 [V265,T91] ( 3, 3 ) int -> rsi "CSE - conservative"
-; V266 cse1 [V266,T92] ( 3, 3 ) int -> rcx "CSE - conservative"
+; V266 cse1 [V266,T92] ( 3, 3 ) int -> rax "CSE - conservative"
; V267 cse2 [V267,T93] ( 3, 3 ) int -> r14 "CSE - conservative"
; V268 cse3 [V268,T94] ( 3, 3 ) int -> rax "CSE - conservative"
; V269 cse4 [V269,T03] ( 12, 12 ) ref -> rsi multi-def "CSE - aggressive"
@@ -393,7 +393,7 @@ G_M33324_IG06: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00
call [<unknown method>]
; gcrRegs -[rax rsi]
; gcr arg pop 0
- jmp G_M33324_IG92
+ jmp G_M33324_IG91
;; size=59 bbWeight=1 PerfScore 16.00
G_M33324_IG07: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, nogc
; gcrRegs +[rbx]
@@ -446,8 +446,8 @@ G_M33324_IG11: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; byrRegs +[rdi]
mov dword ptr [rdi+0x14], esi
mov esi, dword ptr [rbx+0x34]
- mov ecx, dword ptr [rbx+0x30]
- sub esi, ecx
+ mov eax, dword ptr [rbx+0x30]
+ sub esi, eax
test esi, esi
jle G_M33324_IG18
mov r15d, dword ptr [rdi+0x34]
@@ -458,14 +458,13 @@ G_M33324_IG11: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rsi, gword ptr [rbx+0x20]
; gcrRegs +[rsi]
test rsi, rsi
- je G_M33324_IG75
- mov eax, ecx
+ je G_M33324_IG74
+ mov ecx, eax
mov edx, r15d
- add rax, rdx
+ add rcx, rdx
mov edx, dword ptr [rsi+0x08]
- cmp rax, rdx
+ cmp rcx, rdx
ja G_M33324_IG74
- mov eax, ecx
lea r14, bword ptr [rsi+rax+0x10]
; byrRegs +[r14]
mov r13d, r15d
@@ -510,7 +509,7 @@ G_M33324_IG11: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov eax, dword ptr [rax+0x08]
; gcrRegs -[rax]
jmp SHORT G_M33324_IG13
- ;; size=189 bbWeight=1 PerfScore 44.25
+ ;; size=187 bbWeight=1 PerfScore 44.00
G_M33324_IG12: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=5000 {r12 r14}, byref
; gcrRegs +[rdx]
; byrRegs -[rcx rsi]
@@ -570,7 +569,7 @@ G_M33324_IG14: ; bbWeight=1, gcVars=00000000000000000000000004000003 {V00
; gcr arg pop 0
mov r12d, dword ptr [rbp-0xB4]
cmp r13d, r12d
- ja G_M33324_IG76
+ ja G_M33324_IG75
mov edx, r13d
mov rdi, bword ptr [rbp-0xD0]
; byrRegs +[rdi]
@@ -588,7 +587,7 @@ G_M33324_IG15: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi},
cmp r15d, dword ptr [rdi+0x34]
jne SHORT G_M33324_IG16
mov dword ptr [rbp-0x30], r15d
- jmp G_M33324_IG80
+ jmp G_M33324_IG79
;; size=15 bbWeight=1 PerfScore 7.00
G_M33324_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref
test r15d, r15d
@@ -597,7 +596,7 @@ G_M33324_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi},
; byrRegs +[rsi]
mov r14d, dword ptr [rsi+0x0C]
cmp r15d, r14d
- ja G_M33324_IG77
+ ja G_M33324_IG76
mov r13, gword ptr [rsi]
; gcrRegs +[r13]
mov r12d, r15d
@@ -887,7 +886,7 @@ G_M33324_IG28: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15},
; gcrRegs -[r13]
add r14d, dword ptr [r15+0x14]
mov dword ptr [rbp-0x30], r14d
- jmp G_M33324_IG86
+ jmp G_M33324_IG85
;; size=13 bbWeight=1 PerfScore 6.00
G_M33324_IG29: ; bbWeight=1, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
; gcrRegs +[r13]
@@ -949,7 +948,7 @@ G_M33324_IG33: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [<unknown method>]
; gcrRegs -[rax rsi]
; gcr arg pop 0
- jmp G_M33324_IG82
+ jmp G_M33324_IG81
;; size=68 bbWeight=1 PerfScore 15.50
G_M33324_IG34: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, nogc
; byrRegs -[r15]
@@ -1034,7 +1033,7 @@ G_M33324_IG41: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15},
call [<unknown method>]
; gcrRegs -[rax rsi]
; gcr arg pop 0
- jmp G_M33324_IG84
+ jmp G_M33324_IG83
;; size=61 bbWeight=1 PerfScore 14.50
G_M33324_IG42: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, nogc
; byrRegs -[r15]
@@ -1262,7 +1261,7 @@ G_M33324_IG58: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [<unknown method>]
; gcrRegs -[rax rsi]
; gcr arg pop 0
- jmp G_M33324_IG88
+ jmp G_M33324_IG87
;; size=74 bbWeight=1 PerfScore 15.50
G_M33324_IG59: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, nogc
; byrRegs -[r15]
@@ -1499,7 +1498,7 @@ G_M33324_IG73: ; bbWeight=1, gcVars=00000000000000000000000020000003 {V00
; gcr arg pop 0
mov edi, dword ptr [rbp-0xB8]
cmp r13d, edi
- ja SHORT G_M33324_IG76
+ ja SHORT G_M33324_IG75
mov edx, r13d
mov rdi, bword ptr [rbp-0xE0]
; byrRegs +[rdi]
@@ -1509,7 +1508,7 @@ G_M33324_IG73: ; bbWeight=1, gcVars=00000000000000000000000020000003 {V00
call [<unknown method>]
; byrRegs -[rsi rdi r12]
; gcr arg pop 0
- jmp SHORT G_M33324_IG78
+ jmp SHORT G_M33324_IG77
;; size=51 bbWeight=1 PerfScore 13.75
G_M33324_IG74: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; byrRegs -[r15]
@@ -1517,33 +1516,26 @@ G_M33324_IG74: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M33324_IG75: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
- ; byrRegs +[rdi]
- test ecx, ecx
- jne SHORT G_M33324_IG74
- jmp SHORT G_M33324_IG74
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M33324_IG76: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
+G_M33324_IG75: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentException_DestinationTooShort()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M33324_IG77: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M33324_IG76: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, 33
call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
; gcr arg pop 0
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M33324_IG78: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
+G_M33324_IG77: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
; byrRegs +[r15]
add dword ptr [rbx+0x30], r14d
add r14d, dword ptr [r15+0x14]
mov dword ptr [rbp-0x30], r14d
;; size=12 bbWeight=1 PerfScore 7.00
-G_M33324_IG79: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+G_M33324_IG78: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
...
benchmarks.run_pgo.linux.x64.checked.mch
-35 (-24.65%) : 150379.dasm - System.Collections.Generic.Stack1[System.ValueTuple3[System.Canon,System.Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 7 ) ref -> rbx this class-hnd single-def <System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]>
+; V00 this [V00,T00] ( 7, 6.25) ref -> rbx this class-hnd single-def <System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]>
; V01 arg1 [V01,T01] ( 4, 3 ) byref -> registers single-def
; V02 loc0 [V02,T03] ( 4, 3.50) int -> rdi
; V03 loc1 [V03,T05] ( 3, 2.75) ref -> rcx class-hnd exact single-def <<unknown class>>
@@ -20,22 +20,20 @@
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.Item2 (fldOffset=0x8)" P-INDEP
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.Item3 (fldOffset=0x10)" P-INDEP
; V10 cse0 [V10,T06] ( 3, 2.25) byref -> r15 "CSE - aggressive"
-; V11 rat0 [V11,T04] ( 2, 3 ) long -> rax "Spilling to split statement for tree"
+;* V11 rat0 [V11,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V12 rat1 [V12,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V13 rat2 [V13,T02] ( 2, 3 ) long -> rax "fgMakeTemp is creating a new local variable"
+;* V13 rat2 [V13,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M60687_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
push r15
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x18], rdi
+ lea rbp, [rsp+0x10]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 3.75
G_M60687_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs +[rsi]
mov edi, dword ptr [rbx+0x10]
@@ -43,7 +41,7 @@ G_M60687_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
cmp dword ptr [rcx+0x08], edi
- jbe SHORT G_M60687_IG05
+ jbe SHORT G_M60687_IG04
;; size=14 bbWeight=1 PerfScore 8.25
G_M60687_IG03: ; bbWeight=0.75, gcrefRegs=000A {rcx rbx}, byrefRegs=0040 {rsi}, byref, isz
inc dword ptr [rbx+0x14]
@@ -59,33 +57,23 @@ G_M60687_IG03: ; bbWeight=0.75, gcrefRegs=000A {rcx rbx}, byrefRegs=0040
; gcrRegs -[rcx]
call CORINFO_HELP_ASSIGN_BYREF
call CORINFO_HELP_ASSIGN_BYREF
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax]
- mov rax, qword ptr [rax+0x20]
- test rax, rax
- jne SHORT G_M60687_IG07
- ;; size=57 bbWeight=0.75 PerfScore 13.88
-G_M60687_IG04: ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
- ; byrRegs -[rsi rdi]
- jmp SHORT G_M60687_IG07
- ;; size=2 bbWeight=0.15 PerfScore 0.30
-G_M60687_IG05: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
- ; byrRegs -[r15] +[rsi]
+ jmp SHORT G_M60687_IG06
+ ;; size=40 bbWeight=0.75 PerfScore 8.44
+G_M60687_IG04: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
+ ; byrRegs -[rdi r15]
xor eax, eax
mov qword ptr [rsi], rax
mov qword ptr [rsi+0x08], rax
mov qword ptr [rsi+0x10], rax
;; size=13 bbWeight=0.25 PerfScore 0.81
-G_M60687_IG06: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M60687_IG05: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rsi]
- add rsp, 16
pop rbx
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.25 PerfScore 0.69
-G_M60687_IG07: ; bbWeight=0.75, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref
+ ;; size=5 bbWeight=0.25 PerfScore 0.62
+G_M60687_IG06: ; bbWeight=0.75, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref
; byrRegs +[r15]
xor eax, eax
mov qword ptr [r15], rax
@@ -93,15 +81,14 @@ G_M60687_IG07: ; bbWeight=0.75, gcVars=0000000000000000 {}, gcrefRegs=000
mov qword ptr [r15+0x10], rax
mov eax, 1
;; size=18 bbWeight=0.75 PerfScore 2.62
-G_M60687_IG08: ; bbWeight=0.75, epilog, nogc, extend
- add rsp, 16
+G_M60687_IG07: ; bbWeight=0.75, epilog, nogc, extend
pop rbx
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.75 PerfScore 2.06
+ ;; size=5 bbWeight=0.75 PerfScore 1.88
-Total bytes of code 142, prolog size 17, PerfScore 33.61, instruction count 48, allocated bytes for code 142 (MethodHash=056e12f0) for method System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 107, prolog size 9, PerfScore 26.38, instruction count 38, allocated bytes for code 107 (MethodHash=056e12f0) for method System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -109,12 +96,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-35 (-24.65%) : 154084.dasm - System.Collections.Generic.Stack1[System.ValueTuple3[System.Canon,System.Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 7.62) ref -> rbx this class-hnd single-def <System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]>
+; V00 this [V00,T00] ( 7, 6.72) ref -> rbx this class-hnd single-def <System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]>
; V01 arg1 [V01,T02] ( 4, 3 ) byref -> registers single-def
; V02 loc0 [V02,T04] ( 4, 3.81) int -> rdi
; V03 loc1 [V03,T05] ( 3, 2.91) ref -> rcx class-hnd exact single-def <<unknown class>>
@@ -20,22 +20,20 @@
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.Item2 (fldOffset=0x8)" P-INDEP
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.Item3 (fldOffset=0x10)" P-INDEP
; V10 cse0 [V10,T06] ( 3, 2.72) byref -> r15 "CSE - aggressive"
-; V11 rat0 [V11,T03] ( 2, 3.62) long -> rax "Spilling to split statement for tree"
+;* V11 rat0 [V11,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V12 rat1 [V12,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V13 rat2 [V13,T01] ( 2, 3.62) long -> rax "fgMakeTemp is creating a new local variable"
+;* V13 rat2 [V13,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M60687_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
push r15
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x18], rdi
+ lea rbp, [rsp+0x10]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 3.75
G_M60687_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs +[rsi]
mov edi, dword ptr [rbx+0x10]
@@ -43,7 +41,7 @@ G_M60687_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
cmp dword ptr [rcx+0x08], edi
- jbe SHORT G_M60687_IG05
+ jbe SHORT G_M60687_IG04
;; size=14 bbWeight=1 PerfScore 8.25
G_M60687_IG03: ; bbWeight=0.91, gcrefRegs=000A {rcx rbx}, byrefRegs=0040 {rsi}, byref, isz
inc dword ptr [rbx+0x14]
@@ -59,33 +57,23 @@ G_M60687_IG03: ; bbWeight=0.91, gcrefRegs=000A {rcx rbx}, byrefRegs=0040
; gcrRegs -[rcx]
call CORINFO_HELP_ASSIGN_BYREF
call CORINFO_HELP_ASSIGN_BYREF
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax]
- mov rax, qword ptr [rax+0x20]
- test rax, rax
- jne SHORT G_M60687_IG07
- ;; size=57 bbWeight=0.91 PerfScore 16.76
-G_M60687_IG04: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
- ; byrRegs -[rsi rdi]
- jmp SHORT G_M60687_IG07
- ;; size=2 bbWeight=0.18 PerfScore 0.36
-G_M60687_IG05: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
- ; byrRegs -[r15] +[rsi]
+ jmp SHORT G_M60687_IG06
+ ;; size=40 bbWeight=0.91 PerfScore 10.19
+G_M60687_IG04: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
+ ; byrRegs -[rdi r15]
xor eax, eax
mov qword ptr [rsi], rax
mov qword ptr [rsi+0x08], rax
mov qword ptr [rsi+0x10], rax
;; size=13 bbWeight=0.09 PerfScore 0.31
-G_M60687_IG06: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M60687_IG05: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rsi]
- add rsp, 16
pop rbx
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.09 PerfScore 0.26
-G_M60687_IG07: ; bbWeight=0.91, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref
+ ;; size=5 bbWeight=0.09 PerfScore 0.24
+G_M60687_IG06: ; bbWeight=0.91, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref
; byrRegs +[r15]
xor eax, eax
mov qword ptr [r15], rax
@@ -93,15 +81,14 @@ G_M60687_IG07: ; bbWeight=0.91, gcVars=0000000000000000 {}, gcrefRegs=000
mov qword ptr [r15+0x10], rax
mov eax, 1
;; size=18 bbWeight=0.91 PerfScore 3.17
-G_M60687_IG08: ; bbWeight=0.91, epilog, nogc, extend
- add rsp, 16
+G_M60687_IG07: ; bbWeight=0.91, epilog, nogc, extend
pop rbx
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.91 PerfScore 2.49
+ ;; size=5 bbWeight=0.91 PerfScore 2.26
-Total bytes of code 142, prolog size 17, PerfScore 36.60, instruction count 48, allocated bytes for code 142 (MethodHash=056e12f0) for method System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 107, prolog size 9, PerfScore 28.17, instruction count 38, allocated bytes for code 107 (MethodHash=056e12f0) for method System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -109,12 +96,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-23 (-14.74%) : 150402.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
@@ -9,17 +9,17 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 7.67) ref -> rbx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
-; V01 arg1 [V01,T03] ( 4, 3 ) byref -> [rbp-0x30] single-def
+; V00 this [V00,T00] ( 7, 6.75) ref -> rbx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V01 arg1 [V01,T03] ( 4, 3 ) byref -> [rbp-0x28] single-def
; V02 loc0 [V02,T01] ( 6, 5.67) int -> r15
; V03 loc1 [V03,T05] ( 4, 3.83) ref -> r14 class-hnd single-def <<unknown class>>
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V07 cse0 [V07,T06] ( 3, 2.92) int -> r13 "CSE - aggressive"
-; V08 rat0 [V08,T04] ( 2, 3.67) long -> rax "Spilling to split statement for tree"
+;* V08 rat0 [V08,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V10 rat2 [V10,T02] ( 2, 3.67) long -> rax "fgMakeTemp is creating a new local variable"
+;* V10 rat2 [V10,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
@@ -31,10 +31,9 @@ G_M49890_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 16
lea rbp, [rsp+0x30]
- mov qword ptr [rbp-0x28], rdi
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 6.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs +[rsi]
mov r15d, dword ptr [rbx+0x10]
@@ -43,10 +42,10 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
; gcrRegs +[r14]
mov r13d, dword ptr [r14+0x08]
cmp r13d, r15d
- jbe SHORT G_M49890_IG05
+ jbe SHORT G_M49890_IG04
;; size=20 bbWeight=1 PerfScore 7.50
G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref, isz
- mov bword ptr [rbp-0x30], rsi
+ mov bword ptr [rbp-0x28], rsi
; GC ptr vars +{V01}
inc dword ptr [rbx+0x14]
mov dword ptr [rbx+0x10], r15d
@@ -54,30 +53,22 @@ G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=4008 {rbx r14}, byrefRegs=0040
mov rsi, gword ptr [r14+8*rdi+0x10]
; gcrRegs +[rsi]
; byrRegs -[rsi]
- mov rdi, bword ptr [rbp-0x30]
+ mov rdi, bword ptr [rbp-0x28]
; byrRegs +[rdi]
; GC ptr vars -{V01}
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rsi]
; byrRegs -[rdi]
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax]
- mov rax, qword ptr [rax+0x18]
- test rax, rax
- jne SHORT G_M49890_IG07
- ;; size=47 bbWeight=0.92 PerfScore 16.97
-G_M49890_IG04: ; bbWeight=0.18, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M49890_IG07
- ;; size=2 bbWeight=0.18 PerfScore 0.37
-G_M49890_IG05: ; bbWeight=0.08, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
+ jmp SHORT G_M49890_IG06
+ ;; size=30 bbWeight=0.92 PerfScore 10.32
+G_M49890_IG04: ; bbWeight=0.08, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[r14]
; byrRegs +[rsi]
xor rax, rax
; gcrRegs +[rax]
mov gword ptr [rsi], rax
;; size=5 bbWeight=0.08 PerfScore 0.10
-G_M49890_IG06: ; bbWeight=0.08, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M49890_IG05: ; bbWeight=0.08, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax]
; byrRegs -[rsi]
add rsp, 16
@@ -88,19 +79,19 @@ G_M49890_IG06: ; bbWeight=0.08, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
pop rbp
ret
;; size=13 bbWeight=0.08 PerfScore 0.31
-G_M49890_IG07: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M49890_IG06: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r14]
movsxd rax, r15d
mov ecx, r13d
cmp rax, rcx
- jae SHORT G_M49890_IG09
+ jae SHORT G_M49890_IG08
movsxd rax, r15d
xor rcx, rcx
; gcrRegs +[rcx]
mov gword ptr [r14+8*rax+0x10], rcx
mov eax, 1
;; size=26 bbWeight=0.92 PerfScore 3.21
-G_M49890_IG08: ; bbWeight=0.92, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.92, epilog, nogc, extend
add rsp, 16
pop rbx
pop r13
@@ -109,13 +100,13 @@ G_M49890_IG08: ; bbWeight=0.92, epilog, nogc, extend
pop rbp
ret
;; size=13 bbWeight=0.92 PerfScore 3.44
-G_M49890_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M49890_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx r14]
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 156, prolog size 21, PerfScore 38.90, instruction count 55, allocated bytes for code 156 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 133, prolog size 17, PerfScore 30.88, instruction count 48, allocated bytes for code 133 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
+7 (+0.21%) : 116562.dasm - System.Collections.Generic.ArraySortHelper1[System.Collections.IntStruct]:IntroSort(System.Span1[System.Collections.IntStruct],int,System.Comparison`1[System.Collections.IntStruct]) (Tier1)
@@ -195,7 +195,7 @@
; V183 cse15 [V183,T75] ( 7, 0.05) byref -> [rbp-0xB0] spill-single-def "CSE - conservative"
; V184 cse16 [V184,T15] ( 3, 73.81) int -> rdx "CSE - moderate"
; V185 cse17 [V185,T25] ( 4, 35.56) int -> rdi "CSE - moderate"
-; V186 cse18 [V186,T27] ( 3, 26.67) int -> rsi "CSE - moderate"
+; V186 cse18 [V186,T27] ( 3, 26.67) int -> r12 "CSE - moderate"
; V187 cse19 [V187,T76] ( 3, 0.03) long -> rdi "CSE - conservative"
;* V188 rat0 [V188,T52] ( 0, 0 ) ref -> zero-ref "delegate invoke call"
;
@@ -405,12 +405,12 @@ G_M3130_IG29: ; bbWeight=34.99, gcrefRegs=8000 {r15}, byrefRegs=0809 {rax
test ecx, ecx
jl SHORT G_M3130_IG31
;; size=4 bbWeight=34.99 PerfScore 43.74
-G_M3130_IG30: ; bbWeight=14.43, gcrefRegs=8000 {r15}, byrefRegs=0809 {rax rbx r11}, byref, isz
+G_M3130_IG30: ; bbWeight=14.43, gcrefRegs=8000 {r15}, byrefRegs=0809 {rax rbx r11}, byref
mov ecx, edx
mov edx, r9d
mov r9d, ecx
- jmp SHORT G_M3130_IG46
- ;; size=10 bbWeight=14.43 PerfScore 39.69
+ jmp G_M3130_IG46
+ ;; size=13 bbWeight=14.43 PerfScore 39.69
G_M3130_IG31: ; bbWeight=17.50, gcrefRegs=8000 {r15}, byrefRegs=0809 {rax rbx r11}, byref, isz
mov r9d, edx
jmp SHORT G_M3130_IG27
@@ -429,17 +429,17 @@ G_M3130_IG34: ; bbWeight=24.60, gcVars=00000000000000000000000000000000 {
; gcrRegs -[r15]
; byrRegs -[r8-r9 r11] +[rsi]
; GC ptr vars -{V41 V174 V182}
- lea edx, [r15+0x01]
+ lea edx, [r12+0x01]
cmp edx, r13d
jae G_M3130_IG150
mov eax, edx
mov esi, dword ptr [rsi]
; byrRegs -[rsi]
mov dword ptr [rbx+4*rax], esi
- dec r15d
- ;; size=23 bbWeight=24.60 PerfScore 129.17
+ dec r12d
+ ;; size=24 bbWeight=24.60 PerfScore 129.17
G_M3130_IG35: ; bbWeight=33.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- test r15d, r15d
+ test r12d, r12d
jl G_M3130_IG67
;; size=9 bbWeight=33.40 PerfScore 41.76
G_M3130_IG36: ; bbWeight=31.57, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
@@ -456,9 +456,9 @@ G_M3130_IG38: ; bbWeight=31.57, gcVars=00000000000000000000000000000000 {
; gcrRegs -[r15]
; byrRegs -[r8-r9 r11]
; GC ptr vars -{V41 V174 V182}
- cmp r15d, r13d
+ cmp r12d, r13d
jae G_M3130_IG150
- mov esi, r15d
+ mov esi, r12d
lea rsi, bword ptr [rbx+4*rsi]
; byrRegs +[rsi]
mov edx, dword ptr [rsi]
@@ -626,19 +626,19 @@ G_M3130_IG66: ; bbWeight=8.89, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, b
jae G_M3130_IG150
mov esi, edi
mov r14d, dword ptr [rbx+4*rsi]
- mov r15d, r12d
jmp G_M3130_IG35
- ;; size=28 bbWeight=8.89 PerfScore 55.56
+ ;; size=25 bbWeight=8.89 PerfScore 53.34
G_M3130_IG67: ; bbWeight=8.89, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- lea esi, [r15+0x01]
- cmp esi, r13d
+ inc r12d
+ cmp r12d, r13d
jae G_M3130_IG150
+ mov esi, r12d
mov dword ptr [rbx+4*rsi], r14d
mov r12d, edi
lea edi, [r13-0x01]
cmp r12d, edi
jl SHORT G_M3130_IG66
- ;; size=29 bbWeight=8.89 PerfScore 42.23
+ ;; size=31 bbWeight=8.89 PerfScore 42.23
G_M3130_IG68: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
jmp G_M3130_IG103
@@ -987,15 +987,15 @@ G_M3130_IG106: ; bbWeight=0.09, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx
; gcr arg pop 0
jmp SHORT G_M3130_IG103
;; size=74 bbWeight=0.09 PerfScore 1.28
-G_M3130_IG107: ; bbWeight=0.32, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0009 {rax rbx}, gcvars, byref, isz
+G_M3130_IG107: ; bbWeight=0.32, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0108 {rbx r8}, gcvars, byref, isz
; gcrRegs +[r15]
- ; byrRegs +[rax rbx]
+ ; byrRegs +[rbx r8]
; GC ptr vars +{V171}
- test esi, esi
+ test edi, edi
jl SHORT G_M3130_IG113
;; size=4 bbWeight=0.32 PerfScore 0.40
G_M3130_IG108: ; bbWeight=0.09, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz
- ; byrRegs -[rax]
+ ; byrRegs -[r8]
; GC ptr vars -{V171}
jmp SHORT G_M3130_IG111
;; size=2 bbWeight=0.09 PerfScore 0.18
@@ -1012,37 +1012,38 @@ G_M3130_IG110: ; bbWeight=0.00, gcrefRegs=8000 {r15}, byrefRegs=030C {rdx
G_M3130_IG111: ; bbWeight=0.09, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rdx r8-r9]
; GC ptr vars -{V179 V183}
- lea esi, [rdi+0x01]
- cmp esi, r13d
+ lea edi, [rax+0x01]
+ cmp edi, r13d
jae G_M3130_IG150
- inc edi
+ inc eax
+ mov edi, eax
mov dword ptr [rbx+4*rdi], r14d
inc r12d
lea edi, [r13-0x01]
cmp r12d, edi
jl G_M3130_IG126
- ;; size=34 bbWeight=0.09 PerfScore 0.45
+ ;; size=36 bbWeight=0.09 PerfScore 0.47
G_M3130_IG112: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
; byrRegs -[rbx]
jmp G_M3130_IG103
;; size=5 bbWeight=0.87 PerfScore 1.74
-G_M3130_IG113: ; bbWeight=0.25, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0009 {rax rbx}, gcvars, byref
+G_M3130_IG113: ; bbWeight=0.25, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0108 {rbx r8}, gcvars, byref
; gcrRegs +[r15]
- ; byrRegs +[rax rbx]
+ ; byrRegs +[rbx r8]
; GC ptr vars +{V171}
- lea esi, [rdi+0x01]
- cmp esi, r13d
+ lea edi, [rax+0x01]
+ cmp edi, r13d
jae G_M3130_IG150
- lea esi, [rdi+0x01]
- mov edx, dword ptr [rax]
- mov dword ptr [rbx+4*rsi], edx
- dec edi
- ;; size=22 bbWeight=0.25 PerfScore 1.38
+ lea edi, [rax+0x01]
+ mov esi, dword ptr [r8]
+ mov dword ptr [rbx+4*rdi], esi
+ dec eax
+ ;; size=23 bbWeight=0.25 PerfScore 1.38
G_M3130_IG114: ; bbWeight=0.34, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz
- ; byrRegs -[rax]
+ ; byrRegs -[r8]
; GC ptr vars -{V171}
- test edi, edi
+ test eax, eax
jl SHORT G_M3130_IG111
;; size=4 bbWeight=0.34 PerfScore 0.43
G_M3130_IG115: ; bbWeight=0.32, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
@@ -1057,28 +1058,28 @@ G_M3130_IG116: ; bbWeight=0.00, gcVars=00000000000009000000000000000000 {
G_M3130_IG117: ; bbWeight=0.32, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz
; byrRegs -[rdx r8-r9]
; GC ptr vars -{V179 V183}
- cmp edi, r13d
+ cmp eax, r13d
jae G_M3130_IG150
- mov eax, edi
- lea rax, bword ptr [rbx+4*rax]
- ; byrRegs +[rax]
- mov bword ptr [rbp-0x68], rax
+ mov edi, eax
+ lea r8, bword ptr [rbx+4*rdi]
+ ; byrRegs +[r8]
+ mov bword ptr [rbp-0x68], r8
; GC ptr vars +{V171}
- mov edx, dword ptr [rax]
- mov rsi, 0xD1FFAB1E ; function address
- cmp qword ptr [r15+0x18], rsi
+ mov edx, dword ptr [r8]
+ mov rdi, 0xD1FFAB1E ; function address
+ cmp qword ptr [r15+0x18], rdi
jne G_M3130_IG147
cmp r14d, edx
jge SHORT G_M3130_IG124
- ;; size=46 bbWeight=0.32 PerfScore 3.38
-G_M3130_IG118: ; bbWeight=0.21, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0009 {rax rbx}, gcvars, byref
- mov esi, -1
+ ;; size=47 bbWeight=0.32 PerfScore 3.38
+G_M3130_IG118: ; bbWeight=0.21, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0108 {rbx r8}, gcvars, byref
+ mov edi, -1
;; size=5 bbWeight=0.21 PerfScore 0.05
-G_M3130_IG119: ; bbWeight=0.32, gcrefRegs=8000 {r15}, byrefRegs=0009 {rax rbx}, byref
+G_M3130_IG119: ; bbWeight=0.32, gcrefRegs=8000 {r15}, byrefRegs=0108 {rbx r8}, byref
jmp G_M3130_IG107
;; size=5 bbWeight=0.32 PerfScore 0.64
G_M3130_IG120: ; bbWeight=0.13, gcVars=00000000000002080000000000000000 {V172 V177}, gcrefRegs=8000 {r15}, byrefRegs=0288 {rbx rdi r9}, gcvars, byref
- ; byrRegs -[rax] +[rdi r9]
+ ; byrRegs -[r8] +[rdi r9]
; GC ptr vars -{V171} +{V73 V172 V177}
cmp esi, r11d
jle G_M3130_IG139
@@ -1096,25 +1097,25 @@ G_M3130_IG123: ; bbWeight=0.12, gcrefRegs=8000 {r15}, byrefRegs=0088 {rbx
mov r11d, 1
jmp G_M3130_IG96
;; size=11 bbWeight=0.12 PerfScore 0.26
-G_M3130_IG124: ; bbWeight=0.12, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0009 {rax rbx}, gcvars, byref
- ; byrRegs -[rdi] +[rax]
+G_M3130_IG124: ; bbWeight=0.12, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0108 {rbx r8}, gcvars, byref
+ ; byrRegs -[rdi] +[r8]
; GC ptr vars -{V73 V172 V177} +{V171}
cmp r14d, edx
jle G_M3130_IG141
;; size=9 bbWeight=0.12 PerfScore 0.14
-G_M3130_IG125: ; bbWeight=0.12, gcrefRegs=8000 {r15}, byrefRegs=0009 {rax rbx}, byref, isz
- mov esi, 1
+G_M3130_IG125: ; bbWeight=0.12, gcrefRegs=8000 {r15}, byrefRegs=0108 {rbx r8}, byref, isz
+ mov edi, 1
jmp SHORT G_M3130_IG119
;; size=7 bbWeight=0.12 PerfScore 0.26
G_M3130_IG126: ; bbWeight=0.09, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref
- ; byrRegs -[rax]
+ ; byrRegs -[r8]
; GC ptr vars -{V171}
lea edi, [r12+0x01]
cmp edi, r13d
jae G_M3130_IG150
lea edi, [r12+0x01]
mov r14d, dword ptr [rbx+4*rdi]
- mov edi, r12d
+ mov eax, r12d
jmp G_M3130_IG114
;; size=31 bbWeight=0.09 PerfScore 0.58
G_M3130_IG127: ; bbWeight=0.02, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
@@ -1236,14 +1237,14 @@ G_M3130_IG140: ; bbWeight=0.00, gcrefRegs=8000 {r15}, byrefRegs=0088 {rbx
xor r11d, r11d
jmp G_M3130_IG96
;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M3130_IG141: ; bbWeight=0.00, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0009 {rax rbx}, gcvars, byref
- ; byrRegs -[rdi] +[rax]
+G_M3130_IG141: ; bbWeight=0.00, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0108 {rbx r8}, gcvars, byref
+ ; byrRegs -[rdi] +[r8]
; GC ptr vars -{V73 V172 V177} +{V171}
- xor esi, esi
+ xor edi, edi
jmp G_M3130_IG119
;; size=7 bbWeight=0.00 PerfScore 0.00
G_M3130_IG142: ; bbWeight=0.00, gcVars=00000000000005000000000000000000 {V179 V180}, gcrefRegs=8000 {r15}, byrefRegs=0B08 {rbx r8 r9 r11}, gcvars, byref
- ; byrRegs -[rax] +[r8-r9 r11]
+ ; byrRegs +[r9 r11]
; GC ptr vars -{V171} +{V179 V180}
xor edx, edx
...
+7 (+0.21%) : 107732.dasm - System.Collections.Generic.ArraySortHelper1[System.Collections.IntStruct]:IntroSort(System.Span1[System.Collections.IntStruct],int,System.Comparison`1[System.Collections.IntStruct]) (Tier1)
@@ -195,7 +195,7 @@
; V183 cse15 [V183,T75] ( 7, 0.05) byref -> [rbp-0xB0] spill-single-def "CSE - conservative"
; V184 cse16 [V184,T15] ( 3, 73.84) int -> rdx "CSE - moderate"
; V185 cse17 [V185,T25] ( 4, 35.49) int -> rdi "CSE - moderate"
-; V186 cse18 [V186,T27] ( 3, 26.61) int -> rsi "CSE - moderate"
+; V186 cse18 [V186,T27] ( 3, 26.61) int -> r12 "CSE - moderate"
; V187 cse19 [V187,T76] ( 3, 0.03) long -> rdi "CSE - conservative"
;* V188 rat0 [V188,T52] ( 0, 0 ) ref -> zero-ref "delegate invoke call"
;
@@ -405,12 +405,12 @@ G_M3130_IG29: ; bbWeight=35.04, gcrefRegs=8000 {r15}, byrefRegs=0809 {rax
test ecx, ecx
jl SHORT G_M3130_IG31
;; size=4 bbWeight=35.04 PerfScore 43.80
-G_M3130_IG30: ; bbWeight=14.46, gcrefRegs=8000 {r15}, byrefRegs=0809 {rax rbx r11}, byref, isz
+G_M3130_IG30: ; bbWeight=14.46, gcrefRegs=8000 {r15}, byrefRegs=0809 {rax rbx r11}, byref
mov ecx, edx
mov edx, r9d
mov r9d, ecx
- jmp SHORT G_M3130_IG46
- ;; size=10 bbWeight=14.46 PerfScore 39.75
+ jmp G_M3130_IG46
+ ;; size=13 bbWeight=14.46 PerfScore 39.75
G_M3130_IG31: ; bbWeight=17.52, gcrefRegs=8000 {r15}, byrefRegs=0809 {rax rbx r11}, byref, isz
mov r9d, edx
jmp SHORT G_M3130_IG27
@@ -429,17 +429,17 @@ G_M3130_IG34: ; bbWeight=24.61, gcVars=00000000000000000000000000000000 {
; gcrRegs -[r15]
; byrRegs -[r8-r9 r11] +[rsi]
; GC ptr vars -{V41 V174 V182}
- lea edx, [r15+0x01]
+ lea edx, [r12+0x01]
cmp edx, r13d
jae G_M3130_IG150
mov eax, edx
mov esi, dword ptr [rsi]
; byrRegs -[rsi]
mov dword ptr [rbx+4*rax], esi
- dec r15d
- ;; size=23 bbWeight=24.61 PerfScore 129.21
+ dec r12d
+ ;; size=24 bbWeight=24.61 PerfScore 129.21
G_M3130_IG35: ; bbWeight=33.39, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- test r15d, r15d
+ test r12d, r12d
jl G_M3130_IG67
;; size=9 bbWeight=33.39 PerfScore 41.74
G_M3130_IG36: ; bbWeight=31.58, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
@@ -456,9 +456,9 @@ G_M3130_IG38: ; bbWeight=31.58, gcVars=00000000000000000000000000000000 {
; gcrRegs -[r15]
; byrRegs -[r8-r9 r11]
; GC ptr vars -{V41 V174 V182}
- cmp r15d, r13d
+ cmp r12d, r13d
jae G_M3130_IG150
- mov esi, r15d
+ mov esi, r12d
lea rsi, bword ptr [rbx+4*rsi]
; byrRegs +[rsi]
mov edx, dword ptr [rsi]
@@ -626,19 +626,19 @@ G_M3130_IG66: ; bbWeight=8.87, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, b
jae G_M3130_IG150
mov esi, edi
mov r14d, dword ptr [rbx+4*rsi]
- mov r15d, r12d
jmp G_M3130_IG35
- ;; size=28 bbWeight=8.87 PerfScore 55.45
+ ;; size=25 bbWeight=8.87 PerfScore 53.23
G_M3130_IG67: ; bbWeight=8.87, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- lea esi, [r15+0x01]
- cmp esi, r13d
+ inc r12d
+ cmp r12d, r13d
jae G_M3130_IG150
+ mov esi, r12d
mov dword ptr [rbx+4*rsi], r14d
mov r12d, edi
lea edi, [r13-0x01]
cmp r12d, edi
jl SHORT G_M3130_IG66
- ;; size=29 bbWeight=8.87 PerfScore 42.14
+ ;; size=31 bbWeight=8.87 PerfScore 42.14
G_M3130_IG68: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
jmp G_M3130_IG103
@@ -987,15 +987,15 @@ G_M3130_IG106: ; bbWeight=0.09, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx
; gcr arg pop 0
jmp SHORT G_M3130_IG103
;; size=74 bbWeight=0.09 PerfScore 1.28
-G_M3130_IG107: ; bbWeight=0.32, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0009 {rax rbx}, gcvars, byref, isz
+G_M3130_IG107: ; bbWeight=0.32, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0108 {rbx r8}, gcvars, byref, isz
; gcrRegs +[r15]
- ; byrRegs +[rax rbx]
+ ; byrRegs +[rbx r8]
; GC ptr vars +{V171}
- test esi, esi
+ test edi, edi
jl SHORT G_M3130_IG113
;; size=4 bbWeight=0.32 PerfScore 0.40
G_M3130_IG108: ; bbWeight=0.09, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz
- ; byrRegs -[rax]
+ ; byrRegs -[r8]
; GC ptr vars -{V171}
jmp SHORT G_M3130_IG111
;; size=2 bbWeight=0.09 PerfScore 0.18
@@ -1012,37 +1012,38 @@ G_M3130_IG110: ; bbWeight=0.00, gcrefRegs=8000 {r15}, byrefRegs=030C {rdx
G_M3130_IG111: ; bbWeight=0.09, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rdx r8-r9]
; GC ptr vars -{V179 V183}
- lea esi, [rdi+0x01]
- cmp esi, r13d
+ lea edi, [rax+0x01]
+ cmp edi, r13d
jae G_M3130_IG150
- inc edi
+ inc eax
+ mov edi, eax
mov dword ptr [rbx+4*rdi], r14d
inc r12d
lea edi, [r13-0x01]
cmp r12d, edi
jl G_M3130_IG126
- ;; size=34 bbWeight=0.09 PerfScore 0.45
+ ;; size=36 bbWeight=0.09 PerfScore 0.47
G_M3130_IG112: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
; byrRegs -[rbx]
jmp G_M3130_IG103
;; size=5 bbWeight=0.87 PerfScore 1.74
-G_M3130_IG113: ; bbWeight=0.25, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0009 {rax rbx}, gcvars, byref
+G_M3130_IG113: ; bbWeight=0.25, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0108 {rbx r8}, gcvars, byref
; gcrRegs +[r15]
- ; byrRegs +[rax rbx]
+ ; byrRegs +[rbx r8]
; GC ptr vars +{V171}
- lea esi, [rdi+0x01]
- cmp esi, r13d
+ lea edi, [rax+0x01]
+ cmp edi, r13d
jae G_M3130_IG150
- lea esi, [rdi+0x01]
- mov edx, dword ptr [rax]
- mov dword ptr [rbx+4*rsi], edx
- dec edi
- ;; size=22 bbWeight=0.25 PerfScore 1.38
+ lea edi, [rax+0x01]
+ mov esi, dword ptr [r8]
+ mov dword ptr [rbx+4*rdi], esi
+ dec eax
+ ;; size=23 bbWeight=0.25 PerfScore 1.38
G_M3130_IG114: ; bbWeight=0.34, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz
- ; byrRegs -[rax]
+ ; byrRegs -[r8]
; GC ptr vars -{V171}
- test edi, edi
+ test eax, eax
jl SHORT G_M3130_IG111
;; size=4 bbWeight=0.34 PerfScore 0.43
G_M3130_IG115: ; bbWeight=0.32, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
@@ -1057,28 +1058,28 @@ G_M3130_IG116: ; bbWeight=0.00, gcVars=00000000000009000000000000000000 {
G_M3130_IG117: ; bbWeight=0.32, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz
; byrRegs -[rdx r8-r9]
; GC ptr vars -{V179 V183}
- cmp edi, r13d
+ cmp eax, r13d
jae G_M3130_IG150
- mov eax, edi
- lea rax, bword ptr [rbx+4*rax]
- ; byrRegs +[rax]
- mov bword ptr [rbp-0x68], rax
+ mov edi, eax
+ lea r8, bword ptr [rbx+4*rdi]
+ ; byrRegs +[r8]
+ mov bword ptr [rbp-0x68], r8
; GC ptr vars +{V171}
- mov edx, dword ptr [rax]
- mov rsi, 0xD1FFAB1E ; function address
- cmp qword ptr [r15+0x18], rsi
+ mov edx, dword ptr [r8]
+ mov rdi, 0xD1FFAB1E ; function address
+ cmp qword ptr [r15+0x18], rdi
jne G_M3130_IG147
cmp r14d, edx
jge SHORT G_M3130_IG124
- ;; size=46 bbWeight=0.32 PerfScore 3.38
-G_M3130_IG118: ; bbWeight=0.21, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0009 {rax rbx}, gcvars, byref
- mov esi, -1
+ ;; size=47 bbWeight=0.32 PerfScore 3.38
+G_M3130_IG118: ; bbWeight=0.21, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0108 {rbx r8}, gcvars, byref
+ mov edi, -1
;; size=5 bbWeight=0.21 PerfScore 0.05
-G_M3130_IG119: ; bbWeight=0.32, gcrefRegs=8000 {r15}, byrefRegs=0009 {rax rbx}, byref
+G_M3130_IG119: ; bbWeight=0.32, gcrefRegs=8000 {r15}, byrefRegs=0108 {rbx r8}, byref
jmp G_M3130_IG107
;; size=5 bbWeight=0.32 PerfScore 0.64
G_M3130_IG120: ; bbWeight=0.13, gcVars=00000000000002080000000000000000 {V172 V177}, gcrefRegs=8000 {r15}, byrefRegs=0288 {rbx rdi r9}, gcvars, byref
- ; byrRegs -[rax] +[rdi r9]
+ ; byrRegs -[r8] +[rdi r9]
; GC ptr vars -{V171} +{V73 V172 V177}
cmp esi, r11d
jle G_M3130_IG139
@@ -1096,25 +1097,25 @@ G_M3130_IG123: ; bbWeight=0.12, gcrefRegs=8000 {r15}, byrefRegs=0088 {rbx
mov r11d, 1
jmp G_M3130_IG96
;; size=11 bbWeight=0.12 PerfScore 0.27
-G_M3130_IG124: ; bbWeight=0.12, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0009 {rax rbx}, gcvars, byref
- ; byrRegs -[rdi] +[rax]
+G_M3130_IG124: ; bbWeight=0.12, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0108 {rbx r8}, gcvars, byref
+ ; byrRegs -[rdi] +[r8]
; GC ptr vars -{V73 V172 V177} +{V171}
cmp r14d, edx
jle G_M3130_IG141
;; size=9 bbWeight=0.12 PerfScore 0.15
-G_M3130_IG125: ; bbWeight=0.12, gcrefRegs=8000 {r15}, byrefRegs=0009 {rax rbx}, byref, isz
- mov esi, 1
+G_M3130_IG125: ; bbWeight=0.12, gcrefRegs=8000 {r15}, byrefRegs=0108 {rbx r8}, byref, isz
+ mov edi, 1
jmp SHORT G_M3130_IG119
;; size=7 bbWeight=0.12 PerfScore 0.26
G_M3130_IG126: ; bbWeight=0.09, gcVars=00000000000000000000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref
- ; byrRegs -[rax]
+ ; byrRegs -[r8]
; GC ptr vars -{V171}
lea edi, [r12+0x01]
cmp edi, r13d
jae G_M3130_IG150
lea edi, [r12+0x01]
mov r14d, dword ptr [rbx+4*rdi]
- mov edi, r12d
+ mov eax, r12d
jmp G_M3130_IG114
;; size=31 bbWeight=0.09 PerfScore 0.58
G_M3130_IG127: ; bbWeight=0.02, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
@@ -1236,14 +1237,14 @@ G_M3130_IG140: ; bbWeight=0.00, gcrefRegs=8000 {r15}, byrefRegs=0088 {rbx
xor r11d, r11d
jmp G_M3130_IG96
;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M3130_IG141: ; bbWeight=0.00, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0009 {rax rbx}, gcvars, byref
- ; byrRegs -[rdi] +[rax]
+G_M3130_IG141: ; bbWeight=0.00, gcVars=00000000000000800000000000000000 {V171}, gcrefRegs=8000 {r15}, byrefRegs=0108 {rbx r8}, gcvars, byref
+ ; byrRegs -[rdi] +[r8]
; GC ptr vars -{V73 V172 V177} +{V171}
- xor esi, esi
+ xor edi, edi
jmp G_M3130_IG119
;; size=7 bbWeight=0.00 PerfScore 0.00
G_M3130_IG142: ; bbWeight=0.00, gcVars=00000000000005000000000000000000 {V179 V180}, gcrefRegs=8000 {r15}, byrefRegs=0B08 {rbx r8 r9 r11}, gcvars, byref
- ; byrRegs -[rax] +[r8-r9 r11]
+ ; byrRegs +[r9 r11]
; GC ptr vars -{V171} +{V179 V180}
xor edx, edx
...
+43 (+27.74%) : 4315.dasm - LinqBenchmarks:Count00ForX():ubyte:this (Tier1-OSR)
@@ -6,109 +6,115 @@
; optimized using Dynamic PGO
; rbp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 98.87
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 98.87
; 1 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <LinqBenchmarks>
-; V01 loc0 [V01,T11] ( 2, 2.57) ref -> rdx class-hnd <System.Collections.Generic.List`1[Product]>
-; V02 loc1 [V02,T08] ( 3, 12.82) int -> rax
-; V03 loc2 [V03,T10] ( 3, 3.85) int -> rcx
-; V04 loc3 [V04,T09] ( 4, 4 ) struct (24) [rbp+0x28] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
+; V01 loc0 [V01,T09] ( 2, 2.57) ref -> rbx class-hnd <System.Collections.Generic.List`1[Product]>
+; V02 loc1 [V02,T06] ( 3, 12.82) int -> rax
+; V03 loc2 [V03,T08] ( 3, 3.85) int -> rcx
+; V04 loc3 [V04,T07] ( 4, 4 ) struct (24) [rbp+0x28] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <Product>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V07 tmp1 [V07,T07] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Product]>
-; V09 tmp3 [V09,T03] ( 3,200 ) ubyte -> r11 "Inline return value spill temp"
+; V09 tmp3 [V09,T03] ( 3,200 ) ubyte -> rdi "Inline return value spill temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref "field V08._list (fldOffset=0x0)" P-INDEP
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref "field V08._current (fldOffset=0x8)" P-INDEP
;* V13 tmp7 [V13 ] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x10)" P-INDEP
-; V14 tmp8 [V14,T12] ( 2, 2.57) int -> r8 "field V08._version (fldOffset=0x14)" P-INDEP
-; V15 tmp9 [V15,T02] ( 6,210.38) ref -> rdi "V04.[000..008)"
-; V16 tmp10 [V16,T04] ( 3,198.72) ref -> r10 "V04.[008..016)"
-; V17 tmp11 [V17,T01] ( 8,498.44) int -> rsi "V04.[016..020)"
-; V18 tmp12 [V18,T06] ( 3,102.28) int -> r8 "V04.[020..024)"
-; V19 tmp13 [V19,T00] ( 3,592.32) ref -> r10 "arr expr"
-; V20 cse0 [V20,T05] ( 2,108.09) int -> r9 hoist "CSE - aggressive"
+; V14 tmp8 [V14,T10] ( 2, 2.57) int -> r13 "field V08._version (fldOffset=0x14)" P-INDEP
+; V15 tmp9 [V15,T02] ( 6,302.28) ref -> r15 "V04.[000..008)"
+; V16 tmp10 [V16,T04] ( 3,198.72) ref -> rdx "V04.[008..016)"
+; V17 tmp11 [V17,T01] ( 8,498.44) int -> r14 "V04.[016..020)"
+; V18 tmp12 [V18,T05] ( 3,102.28) int -> r13 "V04.[020..024)"
+; V19 tmp13 [V19,T00] ( 3,592.32) ref -> rdx "arr expr"
;
; Lcl frame size = 0
G_M51974_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
mov rax, qword ptr [rbp]
push rax
- mov rbp, rsp
- mov rdx, gword ptr [rbp+0x48]
- ; gcrRegs +[rdx]
+ sub rsp, 32
+ mov qword ptr [rsp+0x98], r15
+ mov qword ptr [rsp+0x90], r14
+ mov qword ptr [rsp+0x88], r13
+ mov qword ptr [rsp+0x80], rbx
+ lea rbp, [rsp+0x20]
+ mov rbx, gword ptr [rbp+0x48]
+ ; gcrRegs +[rbx]
mov eax, dword ptr [rbp+0x44]
mov ecx, dword ptr [rbp+0x40]
- ;; size=18 bbWeight=1 PerfScore 9.25
-G_M51974_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- mov rdi, gword ptr [rbp+0x28]
- ; gcrRegs +[rdi]
- mov esi, dword ptr [rbp+0x38]
- mov r8d, dword ptr [rbp+0x3C]
- jmp SHORT G_M51974_IG04
- ;; size=13 bbWeight=1 PerfScore 5.00
-G_M51974_IG03: ; bbWeight=1.28, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov r8d, dword ptr [rdx+0x14]
- mov rdi, rdx
- ; gcrRegs +[rdi]
- xor esi, esi
- ;; size=9 bbWeight=1.28 PerfScore 3.21
-G_M51974_IG04: ; bbWeight=8.09, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
- mov r9d, dword ptr [rdi+0x14]
- jmp SHORT G_M51974_IG06
- ;; size=6 bbWeight=8.09 PerfScore 32.37
-G_M51974_IG05: ; bbWeight=98.72, gcrefRegs=0484 {rdx rdi r10}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r10]
- cmp dword ptr [r10+0x1C], 0
- je SHORT G_M51974_IG10
- ;; size=7 bbWeight=98.72 PerfScore 394.86
-G_M51974_IG06: ; bbWeight=100, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r10]
- cmp r8d, r9d
- jne SHORT G_M51974_IG15
- cmp esi, dword ptr [rdi+0x10]
- jae SHORT G_M51974_IG11
- ;; size=10 bbWeight=100 PerfScore 525.00
-G_M51974_IG07: ; bbWeight=98.72, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
- mov r10, gword ptr [rdi+0x08]
- ; gcrRegs +[r10]
- cmp esi, dword ptr [r10+0x08]
+ ;; size=56 bbWeight=1 PerfScore 13.75
+G_M51974_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov r15, gword ptr [rbp+0x28]
+ ; gcrRegs +[r15]
+ mov r14d, dword ptr [rbp+0x38]
+ mov r13d, dword ptr [rbp+0x3C]
+ jmp SHORT G_M51974_IG05
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M51974_IG03: ; bbWeight=1.28, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r15]
+ mov r13d, dword ptr [rbx+0x14]
+ mov r15, rbx
+ ; gcrRegs +[r15]
+ xor r14d, r14d
+ jmp SHORT G_M51974_IG05
+ ;; size=12 bbWeight=1.28 PerfScore 5.78
+G_M51974_IG04: ; bbWeight=98.72, gcrefRegs=800C {rdx rbx r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rdx]
+ cmp dword ptr [rdx+0x1C], 0
+ je SHORT G_M51974_IG09
+ ;; size=6 bbWeight=98.72 PerfScore 394.86
+G_M51974_IG05: ; bbWeight=100, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdx]
+ cmp r13d, dword ptr [r15+0x14]
+ jne SHORT G_M51974_IG11
+ cmp r14d, dword ptr [r15+0x10]
+ jae SHORT G_M51974_IG10
+ ;; size=12 bbWeight=100 PerfScore 800.00
+G_M51974_IG06: ; bbWeight=98.72, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ mov rdx, gword ptr [r15+0x08]
+ ; gcrRegs +[rdx]
+ cmp r14d, dword ptr [rdx+0x08]
jae SHORT G_M51974_IG12
- mov r11d, esi
- mov r10, gword ptr [r10+8*r11+0x10]
- inc esi
- mov r11d, 1
+ mov edi, r14d
+ mov rdx, gword ptr [rdx+8*rdi+0x10]
+ inc r14d
+ mov edi, 1
;; size=26 bbWeight=98.72 PerfScore 863.80
-G_M51974_IG08: ; bbWeight=100, gcrefRegs=0484 {rdx rdi r10}, byrefRegs=0000 {}, byref, isz
- test r11d, r11d
- jne SHORT G_M51974_IG05
- ;; size=5 bbWeight=100 PerfScore 125.00
-G_M51974_IG09: ; bbWeight=1.28, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi r10]
+G_M51974_IG07: ; bbWeight=100, gcrefRegs=800C {rdx rbx r15}, byrefRegs=0000 {}, byref, isz
+ test edi, edi
+ jne SHORT G_M51974_IG04
+ ;; size=4 bbWeight=100 PerfScore 125.00
+G_M51974_IG08: ; bbWeight=1.28, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdx r15]
inc ecx
cmp ecx, 0xD1FFAB1E
jge SHORT G_M51974_IG13
jmp SHORT G_M51974_IG03
;; size=12 bbWeight=1.28 PerfScore 4.50
-G_M51974_IG10: ; bbWeight=6.41, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rdi]
+G_M51974_IG09: ; bbWeight=6.41, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r15]
inc eax
- jmp SHORT G_M51974_IG06
+ jmp SHORT G_M51974_IG05
;; size=4 bbWeight=6.41 PerfScore 14.43
-G_M51974_IG11: ; bbWeight=1.28, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
- mov esi, dword ptr [rdi+0x10]
- inc esi
- xor r10, r10
- ; gcrRegs +[r10]
- xor r11d, r11d
- jmp SHORT G_M51974_IG08
+G_M51974_IG10: ; bbWeight=1.28, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ mov r14d, dword ptr [r15+0x10]
+ inc r14d
+ xor rdx, rdx
+ ; gcrRegs +[rdx]
+ xor edi, edi
+ jmp SHORT G_M51974_IG07
;; size=13 bbWeight=1.28 PerfScore 6.08
+G_M51974_IG11: ; bbWeight=1.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdx rbx r15]
+ call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=1.28 PerfScore 4.16
G_M51974_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdx rdi r10]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
@@ -119,16 +125,15 @@ G_M51974_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=11 bbWeight=0 PerfScore 0.00
G_M51974_IG14: ; bbWeight=0, epilog, nogc, extend
add rsp, 128
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
pop rbp
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M51974_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-Total bytes of code 155, prolog size 18, PerfScore 1983.49, instruction count 50, allocated bytes for code 155 (MethodHash=877634f9) for method LinqBenchmarks:Count00ForX():ubyte:this (Tier1-OSR)
+Total bytes of code 198, prolog size 56, PerfScore 2237.36, instruction count 58, allocated bytes for code 198 (MethodHash=877634f9) for method LinqBenchmarks:Count00ForX():ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -136,11 +141,20 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x29
+ CountOfUnwindCodes: 12
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x29 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ Scaled Small Offset: 16 * 8 = 128 = 0x00080
+ CodeOffset: 0x21 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r13 (13)
+ Scaled Small Offset: 17 * 8 = 136 = 0x00088
+ CodeOffset: 0x19 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r14 (14)
+ Scaled Small Offset: 18 * 8 = 144 = 0x00090
+ CodeOffset: 0x11 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15)
+ Scaled Small Offset: 19 * 8 = 152 = 0x00098
+ CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 14 * 8 + 8 = 120 = 0x78
CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
benchmarks.run_tiered.linux.x64.checked.mch
-36 (-8.51%) : 46449.dasm - LinqBenchmarks:Where00ForX():ubyte:this (Tier1-OSR)
@@ -10,20 +10,20 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <LinqBenchmarks>
-; V01 loc0 [V01,T21] ( 2, 4 ) ref -> r13 class-hnd <System.Collections.Generic.List`1[Product]>
-; V02 loc1 [V02,T17] ( 3, 17 ) int -> r14
-; V03 loc2 [V03,T15] ( 3, 24 ) int -> r15
-; V04 loc3 [V04,T07] ( 9, 66 ) ref -> rbx class-hnd exact <System.Collections.Generic.List`1[Product]>
-; V05 loc4 [V05,T23] ( 4, 1.03) struct (24) [rbp+0x50] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
+; V01 loc0 [V01,T20] ( 2, 4 ) ref -> r13 class-hnd <System.Collections.Generic.List`1[Product]>
+; V02 loc1 [V02,T16] ( 3, 17 ) int -> r14
+; V03 loc2 [V03,T14] ( 3, 24 ) int -> r15
+; V04 loc3 [V04,T06] ( 9, 66 ) ref -> rbx class-hnd exact <System.Collections.Generic.List`1[Product]>
+; V05 loc4 [V05,T22] ( 4, 1.03) struct (24) [rbp+0x50] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <Product>
-; V07 loc6 [V07,T24] ( 1, 1 ) struct (24) [rbp+0x30] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
+; V07 loc6 [V07,T23] ( 1, 1 ) struct (24) [rbp+0x30] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
;* V08 loc7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <Product>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T19] ( 3, 12 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[Product]>
-; V11 tmp2 [V11,T05] ( 3, 72.01) int -> r12 "OSR entry state var"
+; V10 tmp1 [V10,T18] ( 3, 12 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[Product]>
+;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V12 tmp3 [V12 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Product]>
-; V13 tmp4 [V13,T14] ( 3, 24 ) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>>
-; V14 tmp5 [V14,T11] ( 4, 32 ) int -> r8 "Inline stloc first use temp"
+; V13 tmp4 [V13,T13] ( 3, 24 ) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>>
+; V14 tmp5 [V14,T10] ( 4, 32 ) int -> rcx "Inline stloc first use temp"
; V15 tmp6 [V15,T03] ( 3, 80 ) ubyte -> rdi "Inline return value spill temp"
;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
;* V17 tmp8 [V17 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Product]>
@@ -32,36 +32,36 @@
;* V20 tmp11 [V20 ] ( 0, 0 ) ref -> zero-ref "field V12._list (fldOffset=0x0)" P-INDEP
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref "field V12._current (fldOffset=0x8)" P-INDEP
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref "field V12._index (fldOffset=0x10)" P-INDEP
-; V23 tmp14 [V23,T22] ( 2, 4 ) int -> rcx "field V12._version (fldOffset=0x14)" P-INDEP
+; V23 tmp14 [V23,T21] ( 2, 4 ) int -> rax "field V12._version (fldOffset=0x14)" P-INDEP
;* V24 tmp15 [V24 ] ( 0, 0 ) ref -> zero-ref "field V17._list (fldOffset=0x0)" P-INDEP
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref "field V17._current (fldOffset=0x8)" P-INDEP
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x10)" P-INDEP
-;* V27 tmp18 [V27,T18] ( 0, 0 ) int -> zero-ref "field V17._version (fldOffset=0x14)" P-INDEP
-; V28 tmp19 [V28,T02] ( 5, 82.01) ref -> [rbp-0x38] "V05.[000..008)"
-; V29 tmp20 [V29,T10] ( 5, 40 ) ref -> rdx "V05.[008..016)"
-; V30 tmp21 [V30,T08] ( 8, 50.01) int -> [rbp-0x2C] "V05.[016..020)"
-; V31 tmp22 [V31,T06] ( 3, 66.01) int -> [rbp-0x30] "V05.[020..024)"
+;* V27 tmp18 [V27,T17] ( 0, 0 ) int -> zero-ref "field V17._version (fldOffset=0x14)" P-INDEP
+; V28 tmp19 [V28,T02] ( 5, 82.01) ref -> r12 "V05.[000..008)"
+; V29 tmp20 [V29,T09] ( 5, 40 ) ref -> rdx "V05.[008..016)"
+; V30 tmp21 [V30,T07] ( 8, 50.01) int -> [rbp-0x2C] "V05.[016..020)"
+; V31 tmp22 [V31,T05] ( 3, 66.01) int -> [rbp-0x30] "V05.[020..024)"
; V32 tmp23 [V32,T01] ( 4, 88 ) ref -> rbx "V07.[000..008)"
;* V33 tmp24 [V33 ] ( 0, 0 ) ref -> zero-ref "V07.[008..016)"
; V34 tmp25 [V34,T00] ( 6,104 ) int -> rdi "V07.[016..020)"
-;* V35 tmp26 [V35,T20] ( 0, 0 ) int -> zero-ref "V07.[020..024)"
-; V36 tmp27 [V36,T09] ( 3, 48 ) ref -> rdi "arr expr"
-; V37 tmp28 [V37,T13] ( 2, 32 ) ref -> rax "arr expr"
-; V38 cse0 [V38,T12] ( 2, 16 ) int -> rdi multi-def "CSE - aggressive"
-; V39 cse1 [V39,T16] ( 3, 24 ) int -> rdi "CSE - moderate"
+;* V35 tmp26 [V35,T19] ( 0, 0 ) int -> zero-ref "V07.[020..024)"
+; V36 tmp27 [V36,T08] ( 3, 48 ) ref -> rdi "arr expr"
+; V37 tmp28 [V37,T12] ( 2, 32 ) ref -> rax "arr expr"
+; V38 cse0 [V38,T11] ( 2, 16 ) int -> rdi multi-def "CSE - aggressive"
+; V39 cse1 [V39,T15] ( 3, 24 ) int -> rdi "CSE - moderate"
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M25128_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
mov rax, qword ptr [rbp]
push rax
- sub rsp, 64
- mov qword ptr [rsp+0xE8], r15
- mov qword ptr [rsp+0xE0], r14
- mov qword ptr [rsp+0xD8], r13
- mov qword ptr [rsp+0xD0], r12
- mov qword ptr [rsp+0xC8], rbx
- lea rbp, [rsp+0x40]
+ sub rsp, 48
+ mov qword ptr [rsp+0xD8], r15
+ mov qword ptr [rsp+0xD0], r14
+ mov qword ptr [rsp+0xC8], r13
+ mov qword ptr [rsp+0xC0], r12
+ mov qword ptr [rsp+0xB8], rbx
+ lea rbp, [rsp+0x30]
mov r13, gword ptr [rbp+0x78]
; gcrRegs +[r13]
mov r14d, dword ptr [rbp+0x74]
@@ -69,16 +69,15 @@ G_M25128_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov rbx, gword ptr [rbp+0x68]
; gcrRegs +[rbx]
;; size=70 bbWeight=0.01 PerfScore 0.17
-G_M25128_IG02: ; bbWeight=0.01, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
- xor r12d, r12d
- mov rax, gword ptr [rbp+0x50]
- ; gcrRegs +[rax]
+G_M25128_IG02: ; bbWeight=0.01, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+ mov r12, gword ptr [rbp+0x50]
+ ; gcrRegs +[r12]
mov esi, dword ptr [rbp+0x60]
- mov ecx, dword ptr [rbp+0x64]
- jmp SHORT G_M25128_IG04
+ mov eax, dword ptr [rbp+0x64]
+ jmp G_M25128_IG06
;; size=15 bbWeight=0.01 PerfScore 0.05
-G_M25128_IG03: ; bbWeight=2, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+G_M25128_IG03: ; bbWeight=2, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx r12]
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[Product]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -87,154 +86,132 @@ G_M25128_IG03: ; bbWeight=2, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byr
; gcrRegs +[rbx]
mov rax, 0xD1FFAB1E
mov gword ptr [rbx+0x08], rax
- mov ecx, dword ptr [r13+0x14]
- mov rax, r13
+ mov eax, dword ptr [r13+0x14]
+ ; gcrRegs -[rax]
+ mov r12, r13
+ ; gcrRegs +[r12]
xor esi, esi
- ;; size=41 bbWeight=2 PerfScore 10.50
-G_M25128_IG04: ; bbWeight=8, gcrefRegs=2009 {rax rbx r13}, byrefRegs=0000 {}, byref, isz
- test r12d, r12d
- je SHORT G_M25128_IG07
- jmp SHORT G_M25128_IG07
- ;; size=7 bbWeight=8 PerfScore 26.00
-G_M25128_IG05: ; bbWeight=8, gcVars=0000000000000004 {V28}, gcrefRegs=200C {rdx rbx r13}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax] +[rdx]
- ; GC ptr vars +{V02 V28}
+ jmp SHORT G_M25128_IG06
+ ;; size=43 bbWeight=2 PerfScore 14.50
+G_M25128_IG04: ; bbWeight=8, gcrefRegs=300C {rdx rbx r12 r13}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rdx]
cmp dword ptr [rdx+0x1C], 0
- mov rax, gword ptr [rbp-0x38]
- ; gcrRegs +[rax]
- mov ecx, dword ptr [rbp-0x30]
- jne SHORT G_M25128_IG07
+ mov eax, dword ptr [rbp-0x30]
+ jne SHORT G_M25128_IG06
mov edi, dword ptr [rbx+0x14]
inc edi
mov dword ptr [rbx+0x14], edi
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
- mov r8d, dword ptr [rbx+0x10]
- cmp dword ptr [rdi+0x08], r8d
- jbe SHORT G_M25128_IG06
- mov gword ptr [rbp-0x38], rax
- mov dword ptr [rbp-0x30], ecx
+ mov ecx, dword ptr [rbx+0x10]
+ cmp dword ptr [rdi+0x08], ecx
+ jbe SHORT G_M25128_IG05
+ mov dword ptr [rbp-0x30], eax
mov dword ptr [rbp-0x2C], esi
- lea r9d, [r8+0x01]
- mov dword ptr [rbx+0x10], r9d
- movsxd rsi, r8d
+ lea r8d, [rcx+0x01]
+ mov dword ptr [rbx+0x10], r8d
+ movsxd rsi, ecx
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[rax rdx rdi]
+ ; gcrRegs -[rdx rdi]
; gcr arg pop 0
- mov rax, gword ptr [rbp-0x38]
- ; gcrRegs +[rax]
- mov ecx, dword ptr [rbp-0x30]
+ mov eax, dword ptr [rbp-0x30]
mov esi, dword ptr [rbp-0x2C]
- jmp SHORT G_M25128_IG07
- ;; size=73 bbWeight=8 PerfScore 224.00
-G_M25128_IG06: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=200D {rax rdx rbx r13}, byrefRegs=0000 {}, gcvars, byref
+ jmp SHORT G_M25128_IG06
+ ;; size=59 bbWeight=8 PerfScore 200.00
+G_M25128_IG05: ; bbWeight=8, gcrefRegs=300C {rdx rbx r12 r13}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- ; GC ptr vars -{V02 V28}
- mov gword ptr [rbp-0x38], rax
- ; GC ptr vars +{V28}
- mov dword ptr [rbp-0x30], ecx
+ mov dword ptr [rbp-0x30], eax
mov dword ptr [rbp-0x2C], esi
mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, rdx
; gcrRegs +[rsi]
call [<unknown method>]
- ; gcrRegs -[rax rdx rsi rdi]
+ ; gcrRegs -[rdx rsi rdi]
; gcr arg pop 0
- mov rax, gword ptr [rbp-0x38]
- ; gcrRegs +[rax]
- mov ecx, dword ptr [rbp-0x30]
+ mov eax, dword ptr [rbp-0x30]
mov esi, dword ptr [rbp-0x2C]
- ;; size=32 bbWeight=8 PerfScore 76.00
-G_M25128_IG07: ; bbWeight=64, gcVars=0000000000000000 {}, gcrefRegs=2009 {rax rbx r13}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V28}
- mov r12d, 1
- mov dword ptr [rbp-0x30], ecx
- cmp ecx, dword ptr [rax+0x14]
- jne G_M25128_IG21
- ;; size=18 bbWeight=64 PerfScore 336.00
-G_M25128_IG08: ; bbWeight=8, gcrefRegs=2009 {rax rbx r13}, byrefRegs=0000 {}, byref, isz
- mov edi, dword ptr [rax+0x10]
+ ;; size=24 bbWeight=8 PerfScore 60.00
+G_M25128_IG06: ; bbWeight=64, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref
+ mov dword ptr [rbp-0x30], eax
+ cmp eax, dword ptr [r12+0x14]
+ jne G_M25128_IG20
+ ;; size=14 bbWeight=64 PerfScore 320.00
+G_M25128_IG07: ; bbWeight=8, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref, isz
+ mov edi, dword ptr [r12+0x10]
cmp esi, edi
- jae SHORT G_M25128_IG09
- mov gword ptr [rbp-0x38], rax
- ; GC ptr vars +{V28}
- mov rdi, gword ptr [rax+0x08]
+ jae SHORT G_M25128_IG08
+ mov rdi, gword ptr [r12+0x08]
; gcrRegs +[rdi]
cmp esi, dword ptr [rdi+0x08]
- jae G_M25128_IG20
+ jae G_M25128_IG19
mov edx, esi
mov rdx, gword ptr [rdi+8*rdx+0x10]
; gcrRegs +[rdx]
inc esi
mov edi, 1
; gcrRegs -[rdi]
- jmp SHORT G_M25128_IG10
- ;; size=40 bbWeight=8 PerfScore 120.00
-G_M25128_IG09: ; bbWeight=8, gcrefRegs=2009 {rax rbx r13}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M25128_IG09
+ ;; size=39 bbWeight=8 PerfScore 112.00
+G_M25128_IG08: ; bbWeight=8, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
- ; GC ptr vars -{V28}
lea esi, [rdi+0x01]
mov dword ptr [rbp-0x2C], esi
xor rdx, rdx
; gcrRegs +[rdx]
xor edi, edi
- mov gword ptr [rbp-0x38], rax
- ; GC ptr vars +{V28}
mov esi, dword ptr [rbp-0x2C]
- ;; size=17 bbWeight=8 PerfScore 32.00
...
-24 (-8.42%) : 31494.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
@@ -40,9 +40,9 @@ G_M23091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=30 bbWeight=1 PerfScore 6.50
G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=800A {rcx rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
cmp dword ptr [rbx+0x60], 0
- jne G_M23091_IG08
+ jne G_M23091_IG07
test rcx, rcx
- je G_M23091_IG09
+ je G_M23091_IG08
lea rdi, bword ptr [rcx+0xAC]
; byrRegs +[rdi]
mov esi, 1
@@ -50,7 +50,7 @@ G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=800
lock
cmpxchg dword ptr [rdi], esi
test eax, eax
- jne G_M23091_IG10
+ jne G_M23091_IG09
mov dword ptr [rcx+0x94], 4
lea rdi, bword ptr [rcx+0x60]
mov rsi, rbx
@@ -61,19 +61,10 @@ G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=800
mov rcx, gword ptr [rbp-0x18]
; gcrRegs +[rcx]
cmp byte ptr [rcx+0xBA], 0
- jne SHORT G_M23091_IG04
+ je SHORT G_M23091_IG04
;; size=80 bbWeight=1 PerfScore 33.25
-G_M23091_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M23091_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- mov rax, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rax]
- ; gcrRegs +[rax]
- cmp byte ptr [rax+0x9D], 0
- je SHORT G_M23091_IG05
- jmp SHORT G_M23091_IG05
- ;; size=24 bbWeight=0.50 PerfScore 4.12
-G_M23091_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call [System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext]
; gcrRegs +[rax]
; gcr arg pop 0
@@ -88,7 +79,7 @@ G_M23091_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; byrRegs -[rdi]
nop
;; size=23 bbWeight=0.50 PerfScore 3.00
-G_M23091_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M23091_IG04: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbp-0x18]
; gcrRegs +[rcx]
mov rsi, gword ptr [rbx+0x08]
@@ -102,20 +93,20 @@ G_M23091_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
; gcr arg pop 0
nop
;; size=21 bbWeight=1 PerfScore 6.75
-G_M23091_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
cmp eax, 997
sete al
movzx rax, al
;; size=11 bbWeight=1 PerfScore 1.50
-G_M23091_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M23091_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 16
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
-G_M23091_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -124,7 +115,7 @@ G_M23091_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
; gcr arg pop 0
int3
;; size=10 bbWeight=0 PerfScore 0.00
-G_M23091_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23091_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov edi, 0x1D12
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -137,7 +128,7 @@ G_M23091_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=30 bbWeight=0 PerfScore 0.00
-G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG09: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
; GC ptr vars +{V00 V01}
mov rdi, rcx
@@ -149,7 +140,7 @@ G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
; gcr arg pop 0
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
push rbp
push r15
@@ -159,7 +150,7 @@ G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x20]
;; size=19 bbWeight=0 PerfScore 0.00
-G_M23091_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rdi, gword ptr [rbp-0x18]
; gcrRegs +[rdi]
; GC ptr vars -{V00 V01}
@@ -171,7 +162,7 @@ G_M23091_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
int3
;; size=16 bbWeight=0 PerfScore 0.00
-Total bytes of code 285, prolog size 30, PerfScore 57.88, instruction count 77, allocated bytes for code 285 (MethodHash=03bba5cc) for method System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
+Total bytes of code 261, prolog size 30, PerfScore 53.75, instruction count 72, allocated bytes for code 261 (MethodHash=03bba5cc) for method System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -204,4 +195,4 @@ Unwind Info:
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
*************** EH table for System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M23091_IG05..G_M23091_IG06) handled by [G_M23091_IG11..END) (class: 1000001)
+EH#0: try [G_M23091_IG04..G_M23091_IG05) handled by [G_M23091_IG10..END) (class: 1000001)
-24 (-8.42%) : 31615.dasm - System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
@@ -40,9 +40,9 @@ G_M29540_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=30 bbWeight=1 PerfScore 6.50
G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=800A {rcx rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
cmp dword ptr [rbx+0x60], 0
- jne G_M29540_IG08
+ jne G_M29540_IG07
test rcx, rcx
- je G_M29540_IG09
+ je G_M29540_IG08
lea rdi, bword ptr [rcx+0xAC]
; byrRegs +[rdi]
mov esi, 1
@@ -50,7 +50,7 @@ G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=800
lock
cmpxchg dword ptr [rdi], esi
test eax, eax
- jne G_M29540_IG10
+ jne G_M29540_IG09
mov dword ptr [rcx+0x94], 7
lea rdi, bword ptr [rcx+0x60]
mov rsi, rbx
@@ -61,19 +61,10 @@ G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=800
mov rcx, gword ptr [rbp-0x18]
; gcrRegs +[rcx]
cmp byte ptr [rcx+0xBA], 0
- jne SHORT G_M29540_IG04
+ je SHORT G_M29540_IG04
;; size=80 bbWeight=1 PerfScore 33.25
-G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- mov rax, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rax]
- ; gcrRegs +[rax]
- cmp byte ptr [rax+0x9D], 0
- je SHORT G_M29540_IG05
- jmp SHORT G_M29540_IG05
- ;; size=24 bbWeight=0.50 PerfScore 4.12
-G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call [System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext]
; gcrRegs +[rax]
; gcr arg pop 0
@@ -88,7 +79,7 @@ G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; byrRegs -[rdi]
nop
;; size=23 bbWeight=0.50 PerfScore 3.00
-G_M29540_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M29540_IG04: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbp-0x18]
; gcrRegs +[rcx]
mov rsi, gword ptr [rbx+0x08]
@@ -102,20 +93,20 @@ G_M29540_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
; gcr arg pop 0
nop
;; size=21 bbWeight=1 PerfScore 6.75
-G_M29540_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
cmp eax, 997
sete al
movzx rax, al
;; size=11 bbWeight=1 PerfScore 1.50
-G_M29540_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M29540_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 16
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
-G_M29540_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -124,7 +115,7 @@ G_M29540_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
; gcr arg pop 0
int3
;; size=10 bbWeight=0 PerfScore 0.00
-G_M29540_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29540_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov edi, 0x1D12
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -137,7 +128,7 @@ G_M29540_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=30 bbWeight=0 PerfScore 0.00
-G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG09: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
; GC ptr vars +{V00 V01}
mov rdi, rcx
@@ -149,7 +140,7 @@ G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
; gcr arg pop 0
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
push rbp
push r15
@@ -159,7 +150,7 @@ G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x20]
;; size=19 bbWeight=0 PerfScore 0.00
-G_M29540_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rdi, gword ptr [rbp-0x18]
; gcrRegs +[rdi]
; GC ptr vars -{V00 V01}
@@ -171,7 +162,7 @@ G_M29540_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
int3
;; size=16 bbWeight=0 PerfScore 0.00
-Total bytes of code 285, prolog size 30, PerfScore 57.88, instruction count 77, allocated bytes for code 285 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
+Total bytes of code 261, prolog size 30, PerfScore 53.75, instruction count 72, allocated bytes for code 261 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -204,4 +195,4 @@ Unwind Info:
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
*************** EH table for System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M29540_IG05..G_M29540_IG06) handled by [G_M29540_IG11..END) (class: 1000001)
+EH#0: try [G_M29540_IG04..G_M29540_IG05) handled by [G_M29540_IG10..END) (class: 1000001)
+7 (+1.84%) : 45542.dasm - LinqBenchmarks:Where00LinqQueryX():ubyte:this (Tier1-OSR)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <LinqBenchmarks>
-; V01 loc0 [V01,T08] ( 1, 2 ) ref -> r14 class-hnd <System.Collections.Generic.List`1[Product]>
+; V01 loc0 [V01,T09] ( 1, 2 ) ref -> r14 class-hnd <System.Collections.Generic.List`1[Product]>
; V02 loc1 [V02,T01] ( 3, 33 ) int -> rbx
; V03 loc2 [V03,T02] ( 3, 24 ) int -> r15
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
@@ -20,13 +20,14 @@
; V08 tmp1 [V08,T05] ( 2, 8 ) ref -> rdx class-hnd "dup spill" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref
; V10 tmp3 [V10,T04] ( 4, 8 ) ref -> rdx
-; V11 tmp4 [V11,T03] ( 5, 20 ) ref -> r13 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V11 tmp4 [V11,T03] ( 5, 20 ) ref -> r12 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V12 tmp5 [V12 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
; V13 tmp6 [V13,T06] ( 2, 8 ) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>>
; V14 tmp7 [V14,T07] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V15 PSPSym [V15,T09] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
+; V15 PSPSym [V15,T10] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
+; V16 cse0 [V16,T08] ( 3, 6 ) long -> r13 "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M15171_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
mov rax, qword ptr [rbp]
@@ -35,22 +36,23 @@ G_M15171_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov qword ptr [rsp+0xC8], r15
mov qword ptr [rsp+0xC0], r14
mov qword ptr [rsp+0xB8], r13
- mov qword ptr [rsp+0xB0], rbx
+ mov qword ptr [rsp+0xB0], r12
+ mov qword ptr [rsp+0xA8], rbx
lea rbp, [rsp+0x30]
mov qword ptr [rbp-0x30], rsp
mov r14, gword ptr [rbp+0x68]
; gcrRegs +[r14]
mov ebx, dword ptr [rbp+0x64]
mov r15d, dword ptr [rbp+0x60]
- ;; size=61 bbWeight=0.01 PerfScore 0.15
+ ;; size=69 bbWeight=0.01 PerfScore 0.16
G_M15171_IG02: ; bbWeight=0.01, gcVars=0000000000000001 {V05}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V05}
jmp G_M15171_IG05
;; size=5 bbWeight=0.01 PerfScore 0.02
G_M15171_IG03: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V05}
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rdx, gword ptr [rdi]
+ mov r13, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ mov rdx, gword ptr [r13]
; gcrRegs +[rdx]
test rdx, rdx
jne SHORT G_M15171_IG04
@@ -58,28 +60,28 @@ G_M15171_IG03: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=4000 {
call CORINFO_HELP_NEWSFAST
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- mov r13, rax
- ; gcrRegs +[r13]
+ mov r12, rax
+ ; gcrRegs +[r12]
mov rdi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rdi]
; gcrRegs +[rsi]
- lea rdi, bword ptr [r13+0x08]
+ lea rdi, bword ptr [r12+0x08]
; byrRegs +[rdi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
mov rdi, 0xD1FFAB1E ; code for <unknown method>
- mov qword ptr [r13+0x18], rdi
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rsi, r13
+ mov qword ptr [r12+0x18], rdi
+ mov rdi, r13
+ mov rsi, r12
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rsi]
- mov rdx, r13
+ mov rdx, r12
; gcrRegs +[rdx]
- ;; size=93 bbWeight=2 PerfScore 23.50
+ ;; size=89 bbWeight=2 PerfScore 23.50
G_M15171_IG04: ; bbWeight=2, gcrefRegs=4004 {rdx r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13]
+ ; gcrRegs -[r12]
mov rsi, r14
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; <unknown method>
@@ -142,26 +144,28 @@ G_M15171_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sete al
;; size=11 bbWeight=1 PerfScore 1.50
G_M15171_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 176
+ add rsp, 168
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=16 bbWeight=1 PerfScore 3.75
+ ;; size=18 bbWeight=1 PerfScore 4.25
G_M15171_IG10: ; bbWeight=0, gcVars=0000000000000001 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V05}
push rbp
push r15
push r14
push r13
+ push r12
push rbx
- sub rsp, 16
+ push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x30]
- ;; size=23 bbWeight=0 PerfScore 0.00
+ ;; size=22 bbWeight=0 PerfScore 0.00
G_M15171_IG11: ; bbWeight=0, gcVars=0000000000000001 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp+0x50], 0
je SHORT G_M15171_IG12
@@ -177,16 +181,17 @@ G_M15171_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
G_M15171_IG13: ; bbWeight=0, funclet epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
-Total bytes of code 380, prolog size 61, PerfScore 294.92, instruction count 89, allocated bytes for code 380 (MethodHash=7c63c4bc) for method LinqBenchmarks:Where00LinqQueryX():ubyte:this (Tier1-OSR)
+Total bytes of code 387, prolog size 69, PerfScore 295.43, instruction count 93, allocated bytes for code 387 (MethodHash=7c63c4bc) for method LinqBenchmarks:Where00LinqQueryX():ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -194,12 +199,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x29
- CountOfUnwindCodes: 13
+ SizeOfProlog : 0x31
+ CountOfUnwindCodes: 15
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x29 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ CodeOffset: 0x31 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ Scaled Small Offset: 21 * 8 = 168 = 0x000A8
+ CodeOffset: 0x29 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r12 (12)
Scaled Small Offset: 22 * 8 = 176 = 0x000B0
CodeOffset: 0x21 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r13 (13)
Scaled Small Offset: 23 * 8 = 184 = 0x000B8
@@ -217,13 +224,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0C
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x0B
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+7 (+1.84%) : 46090.dasm - LinqBenchmarks:Where00LinqMethodX():ubyte:this (Tier1-OSR)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <LinqBenchmarks>
-; V01 loc0 [V01,T08] ( 1, 2 ) ref -> r14 class-hnd <System.Collections.Generic.List`1[Product]>
+; V01 loc0 [V01,T09] ( 1, 2 ) ref -> r14 class-hnd <System.Collections.Generic.List`1[Product]>
; V02 loc1 [V02,T01] ( 3, 33 ) int -> rbx
; V03 loc2 [V03,T02] ( 3, 24 ) int -> r15
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
@@ -20,13 +20,14 @@
; V08 tmp1 [V08,T05] ( 2, 8 ) ref -> rdx class-hnd "dup spill" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref
; V10 tmp3 [V10,T04] ( 4, 8 ) ref -> rdx
-; V11 tmp4 [V11,T03] ( 5, 20 ) ref -> r13 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V11 tmp4 [V11,T03] ( 5, 20 ) ref -> r12 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V12 tmp5 [V12 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
; V13 tmp6 [V13,T06] ( 2, 8 ) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>>
; V14 tmp7 [V14,T07] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V15 PSPSym [V15,T09] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
+; V15 PSPSym [V15,T10] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
+; V16 cse0 [V16,T08] ( 3, 6 ) long -> r13 "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M64534_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
mov rax, qword ptr [rbp]
@@ -35,22 +36,23 @@ G_M64534_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov qword ptr [rsp+0xC8], r15
mov qword ptr [rsp+0xC0], r14
mov qword ptr [rsp+0xB8], r13
- mov qword ptr [rsp+0xB0], rbx
+ mov qword ptr [rsp+0xB0], r12
+ mov qword ptr [rsp+0xA8], rbx
lea rbp, [rsp+0x30]
mov qword ptr [rbp-0x30], rsp
mov r14, gword ptr [rbp+0x68]
; gcrRegs +[r14]
mov ebx, dword ptr [rbp+0x64]
mov r15d, dword ptr [rbp+0x60]
- ;; size=61 bbWeight=0.01 PerfScore 0.15
+ ;; size=69 bbWeight=0.01 PerfScore 0.16
G_M64534_IG02: ; bbWeight=0.01, gcVars=0000000000000001 {V05}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V05}
jmp G_M64534_IG05
;; size=5 bbWeight=0.01 PerfScore 0.02
G_M64534_IG03: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V05}
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rdx, gword ptr [rdi]
+ mov r13, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ mov rdx, gword ptr [r13]
; gcrRegs +[rdx]
test rdx, rdx
jne SHORT G_M64534_IG04
@@ -58,28 +60,28 @@ G_M64534_IG03: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=4000 {
call CORINFO_HELP_NEWSFAST
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- mov r13, rax
- ; gcrRegs +[r13]
+ mov r12, rax
+ ; gcrRegs +[r12]
mov rdi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rdi]
; gcrRegs +[rsi]
- lea rdi, bword ptr [r13+0x08]
+ lea rdi, bword ptr [r12+0x08]
; byrRegs +[rdi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
mov rdi, 0xD1FFAB1E ; code for <unknown method>
- mov qword ptr [r13+0x18], rdi
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rsi, r13
+ mov qword ptr [r12+0x18], rdi
+ mov rdi, r13
+ mov rsi, r12
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rsi]
- mov rdx, r13
+ mov rdx, r12
; gcrRegs +[rdx]
- ;; size=93 bbWeight=2 PerfScore 23.50
+ ;; size=89 bbWeight=2 PerfScore 23.50
G_M64534_IG04: ; bbWeight=2, gcrefRegs=4004 {rdx r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13]
+ ; gcrRegs -[r12]
mov rsi, r14
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; <unknown method>
@@ -142,26 +144,28 @@ G_M64534_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sete al
;; size=11 bbWeight=1 PerfScore 1.50
G_M64534_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 176
+ add rsp, 168
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=16 bbWeight=1 PerfScore 3.75
+ ;; size=18 bbWeight=1 PerfScore 4.25
G_M64534_IG10: ; bbWeight=0, gcVars=0000000000000001 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V05}
push rbp
push r15
push r14
push r13
+ push r12
push rbx
- sub rsp, 16
+ push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x30]
- ;; size=23 bbWeight=0 PerfScore 0.00
+ ;; size=22 bbWeight=0 PerfScore 0.00
G_M64534_IG11: ; bbWeight=0, gcVars=0000000000000001 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp+0x50], 0
je SHORT G_M64534_IG12
@@ -177,16 +181,17 @@ G_M64534_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
G_M64534_IG13: ; bbWeight=0, funclet epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
-Total bytes of code 380, prolog size 61, PerfScore 294.92, instruction count 89, allocated bytes for code 380 (MethodHash=d57103e9) for method LinqBenchmarks:Where00LinqMethodX():ubyte:this (Tier1-OSR)
+Total bytes of code 387, prolog size 69, PerfScore 295.43, instruction count 93, allocated bytes for code 387 (MethodHash=d57103e9) for method LinqBenchmarks:Where00LinqMethodX():ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -194,12 +199,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x29
- CountOfUnwindCodes: 13
+ SizeOfProlog : 0x31
+ CountOfUnwindCodes: 15
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x29 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ CodeOffset: 0x31 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ Scaled Small Offset: 21 * 8 = 168 = 0x000A8
+ CodeOffset: 0x29 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r12 (12)
Scaled Small Offset: 22 * 8 = 176 = 0x000B0
CodeOffset: 0x21 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r13 (13)
Scaled Small Offset: 23 * 8 = 184 = 0x000B8
@@ -217,13 +224,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0C
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x0B
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+7 (+1.84%) : 48335.dasm - LinqBenchmarks:Where01LinqMethodX():ubyte:this (Tier1-OSR)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <LinqBenchmarks>
-; V01 loc0 [V01,T08] ( 1, 2 ) ref -> r14 class-hnd <System.Collections.Generic.List`1[Product]>
+; V01 loc0 [V01,T09] ( 1, 2 ) ref -> r14 class-hnd <System.Collections.Generic.List`1[Product]>
; V02 loc1 [V02,T01] ( 3, 33 ) int -> rbx
; V03 loc2 [V03,T02] ( 3, 24 ) int -> r15
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
@@ -20,13 +20,14 @@
; V08 tmp1 [V08,T05] ( 2, 8 ) ref -> rdx class-hnd "dup spill" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref
; V10 tmp3 [V10,T04] ( 4, 8 ) ref -> rdx
-; V11 tmp4 [V11,T03] ( 5, 20 ) ref -> r13 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V11 tmp4 [V11,T03] ( 5, 20 ) ref -> r12 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V12 tmp5 [V12 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
; V13 tmp6 [V13,T06] ( 2, 8 ) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>>
; V14 tmp7 [V14,T07] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V15 PSPSym [V15,T09] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
+; V15 PSPSym [V15,T10] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
+; V16 cse0 [V16,T08] ( 3, 6 ) long -> r13 "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M24727_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
mov rax, qword ptr [rbp]
@@ -35,22 +36,23 @@ G_M24727_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov qword ptr [rsp+0xC8], r15
mov qword ptr [rsp+0xC0], r14
mov qword ptr [rsp+0xB8], r13
- mov qword ptr [rsp+0xB0], rbx
+ mov qword ptr [rsp+0xB0], r12
+ mov qword ptr [rsp+0xA8], rbx
lea rbp, [rsp+0x30]
mov qword ptr [rbp-0x30], rsp
mov r14, gword ptr [rbp+0x68]
; gcrRegs +[r14]
mov ebx, dword ptr [rbp+0x64]
mov r15d, dword ptr [rbp+0x60]
- ;; size=61 bbWeight=0.01 PerfScore 0.15
+ ;; size=69 bbWeight=0.01 PerfScore 0.16
G_M24727_IG02: ; bbWeight=0.01, gcVars=0000000000000001 {V05}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V05}
jmp G_M24727_IG05
;; size=5 bbWeight=0.01 PerfScore 0.02
G_M24727_IG03: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V05}
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rdx, gword ptr [rdi]
+ mov r13, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ mov rdx, gword ptr [r13]
; gcrRegs +[rdx]
test rdx, rdx
jne SHORT G_M24727_IG04
@@ -58,28 +60,28 @@ G_M24727_IG03: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=4000 {
call CORINFO_HELP_NEWSFAST
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- mov r13, rax
- ; gcrRegs +[r13]
+ mov r12, rax
+ ; gcrRegs +[r12]
mov rdi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rdi]
; gcrRegs +[rsi]
- lea rdi, bword ptr [r13+0x08]
+ lea rdi, bword ptr [r12+0x08]
; byrRegs +[rdi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
mov rdi, 0xD1FFAB1E ; code for <unknown method>
- mov qword ptr [r13+0x18], rdi
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rsi, r13
+ mov qword ptr [r12+0x18], rdi
+ mov rdi, r13
+ mov rsi, r12
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rsi]
- mov rdx, r13
+ mov rdx, r12
; gcrRegs +[rdx]
- ;; size=93 bbWeight=2 PerfScore 23.50
+ ;; size=89 bbWeight=2 PerfScore 23.50
G_M24727_IG04: ; bbWeight=2, gcrefRegs=4004 {rdx r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13]
+ ; gcrRegs -[r12]
mov rsi, r14
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; <unknown method>
@@ -142,26 +144,28 @@ G_M24727_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sete al
;; size=11 bbWeight=1 PerfScore 1.50
G_M24727_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 176
+ add rsp, 168
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=16 bbWeight=1 PerfScore 3.75
+ ;; size=18 bbWeight=1 PerfScore 4.25
G_M24727_IG10: ; bbWeight=0, gcVars=0000000000000001 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V05}
push rbp
push r15
push r14
push r13
+ push r12
push rbx
- sub rsp, 16
+ push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x30]
- ;; size=23 bbWeight=0 PerfScore 0.00
+ ;; size=22 bbWeight=0 PerfScore 0.00
G_M24727_IG11: ; bbWeight=0, gcVars=0000000000000001 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp+0x50], 0
je SHORT G_M24727_IG12
@@ -177,16 +181,17 @@ G_M24727_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
G_M24727_IG13: ; bbWeight=0, funclet epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
-Total bytes of code 380, prolog size 61, PerfScore 294.92, instruction count 89, allocated bytes for code 380 (MethodHash=51429f68) for method LinqBenchmarks:Where01LinqMethodX():ubyte:this (Tier1-OSR)
+Total bytes of code 387, prolog size 69, PerfScore 295.43, instruction count 93, allocated bytes for code 387 (MethodHash=51429f68) for method LinqBenchmarks:Where01LinqMethodX():ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -194,12 +199,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x29
- CountOfUnwindCodes: 13
+ SizeOfProlog : 0x31
+ CountOfUnwindCodes: 15
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x29 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ CodeOffset: 0x31 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ Scaled Small Offset: 21 * 8 = 168 = 0x000A8
+ CodeOffset: 0x29 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r12 (12)
Scaled Small Offset: 22 * 8 = 176 = 0x000B0
CodeOffset: 0x21 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r13 (13)
Scaled Small Offset: 23 * 8 = 184 = 0x000B8
@@ -217,13 +224,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0C
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x0B
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
coreclr_tests.run.linux.x64.checked.mch
-37 (-69.81%) : 227734.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -2,51 +2,33 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 6, 4.50) float -> mm0 single-def
+;* V00 loc0 [V00 ] ( 0, 0 ) float -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 4 ) float -> mm0 "Single return block return value"
-; V03 cse0 [V03,T02] ( 5, 3.50) float -> mm1 "CSE - aggressive"
+; V02 tmp1 [V02,T00] ( 2, 4 ) float -> mm0 "Single return block return value"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M53791_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
+ push rax
vzeroupper
- mov rbp, rsp
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float]
- vmovss xmm1, dword ptr [reloc @RWD00]
- vucomiss xmm0, xmm1
- jbe SHORT G_M53791_IG04
- ;; size=20 bbWeight=1 PerfScore 9.00
-G_M53791_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M53791_IG05
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M53791_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- vucomiss xmm1, xmm0
- ja SHORT G_M53791_IG03
- vucomiss xmm0, xmm1
- jp SHORT G_M53791_IG03
- jne SHORT G_M53791_IG03
- vucomiss xmm1, xmm0
- jbe SHORT G_M53791_IG03
- jmp SHORT G_M53791_IG03
- ;; size=22 bbWeight=0.50 PerfScore 6.00
-G_M53791_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop rbp
+ ; gcr arg pop 0
+ nop
+ ;; size=7 bbWeight=1 PerfScore 3.25
+G_M53791_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
-RWD00 dd 41200000h ; 10
+ ;; size=5 bbWeight=1 PerfScore 1.25
-
-Total bytes of code 53, prolog size 7, PerfScore 20.75, instruction count 18, allocated bytes for code 53 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 16, prolog size 4, PerfScore 6.50, instruction count 6, allocated bytes for code 16 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -59,4 +41,4 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-29 (-64.44%) : 223591.dasm - Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
@@ -2,47 +2,35 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 5, 4 ) float -> mm0 single-def
+; V00 loc0 [V00,T00] ( 2, 2 ) float -> mm0 single-def
;* V01 loc1 [V01 ] ( 0, 0 ) float -> zero-ref
;* V02 loc2 [V02 ] ( 0, 0 ) float -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T01] ( 4, 3 ) float -> mm1 "CSE - aggressive"
+;* V04 cse0 [V04,T01] ( 0, 0 ) float -> zero-ref "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M53663_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
+ push rax
vzeroupper
- mov rbp, rsp
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float]
- vmovss xmm1, dword ptr [reloc @RWD00]
- vucomiss xmm1, xmm0
- jbe SHORT G_M53663_IG04
- ;; size=20 bbWeight=1 PerfScore 9.00
-G_M53663_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop rbp
+ ; gcr arg pop 0
+ nop
+ ;; size=7 bbWeight=1 PerfScore 3.25
+G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
-G_M53663_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- vucomiss xmm0, xmm1
- jp SHORT G_M53663_IG03
- jne SHORT G_M53663_IG03
- vucomiss xmm0, xmm1
- jbe SHORT G_M53663_IG03
- jmp SHORT G_M53663_IG03
- ;; size=16 bbWeight=0.50 PerfScore 4.50
-RWD00 dd 41200000h ; 10
+ ;; size=5 bbWeight=1 PerfScore 1.25
-
-Total bytes of code 45, prolog size 7, PerfScore 17.25, instruction count 15, allocated bytes for code 45 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 16, prolog size 4, PerfScore 6.50, instruction count 6, allocated bytes for code 16 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -55,4 +43,4 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-23 (-58.97%) : 227682.dasm - Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
@@ -2,43 +2,32 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 4, 3.50) float -> mm0 single-def
+;* V00 loc0 [V00 ] ( 0, 0 ) float -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 cse0 [V02,T01] ( 3, 2.50) float -> mm1 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M53663_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
+ push rax
vzeroupper
- mov rbp, rsp
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float]
- vmovss xmm1, dword ptr [reloc @RWD00]
- vucomiss xmm1, xmm0
- jbe SHORT G_M53663_IG04
- ;; size=20 bbWeight=1 PerfScore 9.00
-G_M53663_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop rbp
+ ; gcr arg pop 0
+ nop
+ ;; size=7 bbWeight=1 PerfScore 3.25
+G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
-G_M53663_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- vucomiss xmm0, xmm1
- jp SHORT G_M53663_IG03
- jne SHORT G_M53663_IG03
- jmp SHORT G_M53663_IG03
- ;; size=10 bbWeight=0.50 PerfScore 3.00
-RWD00 dd 41200000h ; 10
+ ;; size=5 bbWeight=1 PerfScore 1.25
-
-Total bytes of code 39, prolog size 7, PerfScore 15.75, instruction count 13, allocated bytes for code 39 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 16, prolog size 4, PerfScore 6.50, instruction count 6, allocated bytes for code 16 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -51,4 +40,4 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+7 (+4.05%) : 16328.dasm - testout1:Sub_Funclet_183():int (FullOpts)
@@ -18,49 +18,49 @@
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref single-def
;* V08 tmp4 [V08 ] ( 0, 0 ) int -> zero-ref
;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref
-; V10 tmp6 [V10,T10] ( 2, 2 ) int -> rcx single-def
+; V10 tmp6 [V10,T11] ( 2, 2 ) int -> rdx single-def
;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref
-; V13 tmp9 [V13,T11] ( 2, 2 ) int -> rcx single-def
+; V13 tmp9 [V13,T12] ( 2, 2 ) int -> rdx single-def
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref
-; V16 tmp12 [V16,T12] ( 2, 2 ) int -> rcx single-def
+; V16 tmp12 [V16,T13] ( 2, 2 ) int -> rdx single-def
;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref
-; V19 tmp15 [V19,T13] ( 2, 2 ) int -> rcx single-def
+;* V19 tmp15 [V19,T14] ( 0, 0 ) int -> zero-ref single-def
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref
-; V22 tmp18 [V22,T14] ( 2, 2 ) int -> rcx single-def
+;* V22 tmp18 [V22,T15] ( 0, 0 ) int -> zero-ref single-def
;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref
-;* V25 tmp21 [V25,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp24 [V28,T24] ( 0, 0 ) int -> zero-ref single-def
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref
-;* V31 tmp27 [V31,T16] ( 0, 0 ) int -> zero-ref single-def
+; V31 tmp27 [V31,T16] ( 2, 2 ) int -> rdx single-def
;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp29 [V33 ] ( 0, 0 ) int -> zero-ref
-;* V34 tmp30 [V34,T17] ( 0, 0 ) int -> zero-ref single-def
+; V34 tmp30 [V34,T17] ( 2, 2 ) int -> rcx single-def
;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref
-;* V37 tmp33 [V37,T18] ( 0, 0 ) int -> zero-ref single-def
+; V37 tmp33 [V37,T18] ( 2, 2 ) int -> rcx single-def
;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp35 [V39 ] ( 0, 0 ) int -> zero-ref
-;* V40 tmp36 [V40,T25] ( 0, 0 ) int -> zero-ref single-def
+; V40 tmp36 [V40,T19] ( 2, 2 ) int -> rcx single-def
;* V41 tmp37 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp38 [V42 ] ( 0, 0 ) int -> zero-ref
-; V43 tmp39 [V43,T19] ( 2, 2 ) int -> rcx single-def
+; V43 tmp39 [V43,T20] ( 2, 2 ) int -> rax single-def
;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp41 [V45 ] ( 0, 0 ) int -> zero-ref
-; V46 tmp42 [V46,T20] ( 2, 2 ) int -> rcx single-def
+; V46 tmp42 [V46,T21] ( 2, 2 ) int -> rax single-def
;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref
;* V48 tmp44 [V48 ] ( 0, 0 ) int -> zero-ref
-;* V49 tmp45 [V49,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V49 tmp45 [V49,T25] ( 0, 0 ) int -> zero-ref single-def
;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp47 [V51 ] ( 0, 0 ) int -> zero-ref
-;* V52 tmp48 [V52,T26] ( 0, 0 ) int -> zero-ref single-def
+;* V52 tmp48 [V52 ] ( 0, 0 ) int -> zero-ref
;* V53 tmp49 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp50 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp51 [V55,T22] ( 0, 0 ) int -> zero-ref single-def
@@ -69,19 +69,20 @@
;* V58 tmp54 [V58,T23] ( 0, 0 ) int -> zero-ref single-def
;* V59 tmp55 [V59 ] ( 0, 0 ) int -> zero-ref
;* V60 tmp56 [V60 ] ( 0, 0 ) int -> zero-ref
-;* V61 tmp57 [V61,T27] ( 0, 0 ) int -> zero-ref single-def
+;* V61 tmp57 [V61,T26] ( 0, 0 ) int -> zero-ref single-def
;* V62 tmp58 [V62 ] ( 0, 0 ) int -> zero-ref
;* V63 tmp59 [V63 ] ( 0, 0 ) int -> zero-ref
-;* V64 tmp60 [V64,T28] ( 0, 0 ) int -> zero-ref single-def
+;* V64 tmp60 [V64,T27] ( 0, 0 ) int -> zero-ref single-def
;* V65 tmp61 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp62 [V66 ] ( 0, 0 ) int -> zero-ref
-; V67 cse0 [V67,T06] ( 2, 2 ) int -> rcx "CSE - aggressive"
-; V68 cse1 [V68,T03] ( 2, 2 ) int -> rcx "CSE - aggressive"
+; V67 cse0 [V67,T05] ( 2, 2 ) int -> rdx "CSE - aggressive"
+; V68 cse1 [V68,T06] ( 2, 2 ) int -> rax "CSE - aggressive"
; V69 cse2 [V69,T07] ( 2, 2 ) int -> rax "CSE - aggressive"
-; V70 cse3 [V70,T04] ( 2, 2 ) int -> rdx "CSE - aggressive"
-; V71 cse4 [V71,T05] ( 2, 2 ) int -> rcx "CSE - aggressive"
-; V72 cse5 [V72,T08] ( 2, 2 ) long -> rcx "CSE - aggressive"
-; V73 cse6 [V73,T09] ( 2, 2 ) long -> rdi "CSE - aggressive"
+; V70 cse3 [V70,T03] ( 3, 3 ) int -> rdi "CSE - aggressive"
+; V71 cse4 [V71,T04] ( 3, 3 ) int -> rcx "CSE - aggressive"
+; V72 cse5 [V72,T08] ( 3, 3 ) int -> rax "CSE - aggressive"
+; V73 cse6 [V73,T09] ( 2, 2 ) long -> rcx "CSE - aggressive"
+; V74 cse7 [V74,T10] ( 2, 2 ) long -> rdi "CSE - aggressive"
;
; Lcl frame size = 8
@@ -115,16 +116,20 @@ G_M39164_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov dword ptr [rbx+0x08], -13
mov word ptr [rbx+0x0C], 256
mov ecx, dword ptr [rbx+0x08]
- add ecx, 17
- mov edx, dword ptr [rax+0x14]
- add ecx, edx
- add ecx, dword ptr [rax+0x10]
- add ecx, 3
- add ecx, -5
- add ecx, 3
- lea eax, [rcx-0x05]
+ mov edx, ecx
+ add edx, 17
+ mov edi, dword ptr [rax+0x14]
+ add edx, edi
+ mov eax, dword ptr [rax+0x10]
; gcrRegs -[rax]
- ;; size=158 bbWeight=1 PerfScore 22.75
+ add edx, eax
+ add ecx, edx
+ add ecx, 17
+ add ecx, edi
+ add eax, ecx
+ add eax, 3
+ add eax, -5
+ ;; size=165 bbWeight=1 PerfScore 22.50
G_M39164_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
@@ -132,7 +137,7 @@ G_M39164_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=7 bbWeight=1 PerfScore 2.25
-Total bytes of code 173, prolog size 8, PerfScore 28.50, instruction count 37, allocated bytes for code 173 (MethodHash=17766703) for method testout1:Sub_Funclet_183():int (FullOpts)
+Total bytes of code 180, prolog size 8, PerfScore 28.25, instruction count 41, allocated bytes for code 180 (MethodHash=17766703) for method testout1:Sub_Funclet_183():int (FullOpts)
; ============================================================
Unwind Info:
+7 (+4.19%) : 15835.dasm - testout1:SubFunclet106():int (FullOpts)
@@ -15,14 +15,14 @@
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
; V05 loc5 [V05,T01] ( 4, 4 ) ref -> rbx class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T03] ( 3, 3 ) ref -> rax class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T02] ( 3, 3 ) ref -> rax class-hnd exact single-def <<unknown class>>
; V08 loc8 [V08,T00] ( 5, 5 ) ref -> rax class-hnd exact single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref single-def
+;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref single-def
@@ -31,60 +31,60 @@
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref single-def
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-;* V23 tmp14 [V23,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V23 tmp14 [V23,T20] ( 0, 0 ) int -> zero-ref single-def
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T08] ( 2, 2 ) int -> rcx single-def
+; V26 tmp17 [V26,T09] ( 2, 2 ) int -> rdx single-def
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-; V29 tmp20 [V29,T09] ( 2, 2 ) int -> rcx single-def
+; V29 tmp20 [V29,T10] ( 2, 2 ) int -> rdx single-def
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
-; V32 tmp23 [V32,T10] ( 2, 2 ) int -> rcx single-def
+; V32 tmp23 [V32,T11] ( 2, 2 ) int -> rdx single-def
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp26 [V35,T11] ( 2, 2 ) int -> rcx single-def
+;* V35 tmp26 [V35,T12] ( 0, 0 ) int -> zero-ref single-def
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
-; V38 tmp29 [V38,T12] ( 2, 2 ) int -> rcx single-def
+;* V38 tmp29 [V38,T13] ( 0, 0 ) int -> zero-ref single-def
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T13] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V44 tmp35 [V44,T21] ( 0, 0 ) int -> zero-ref single-def
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
-;* V47 tmp38 [V47,T14] ( 0, 0 ) int -> zero-ref single-def
+; V47 tmp38 [V47,T14] ( 2, 2 ) int -> rdx single-def
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
-;* V50 tmp41 [V50,T15] ( 0, 0 ) int -> zero-ref single-def
+; V50 tmp41 [V50,T15] ( 2, 2 ) int -> rcx single-def
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp44 [V53,T16] ( 0, 0 ) int -> zero-ref single-def
+; V53 tmp44 [V53,T16] ( 2, 2 ) int -> rcx single-def
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T23] ( 0, 0 ) int -> zero-ref single-def
+; V56 tmp47 [V56,T17] ( 2, 2 ) int -> rcx single-def
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp50 [V59,T18] ( 0, 0 ) int -> zero-ref single-def
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp53 [V62,T19] ( 0, 0 ) int -> zero-ref single-def
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp56 [V65,T22] ( 0, 0 ) int -> zero-ref single-def
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
-;* V68 tmp59 [V68,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref
-; V71 cse0 [V71,T04] ( 2, 2 ) int -> rcx "CSE - aggressive"
-;* V72 cse1 [V72,T20] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V73 cse2 [V73,T02] ( 2, 2 ) int -> rax "CSE - aggressive"
-; V74 cse3 [V74,T05] ( 2, 2 ) int -> rcx "CSE - aggressive"
-; V75 cse4 [V75,T06] ( 2, 2 ) int -> rdx "CSE - aggressive"
-; V76 cse5 [V76,T07] ( 2, 2 ) long -> rcx "CSE - aggressive"
+; V71 cse0 [V71,T03] ( 2, 2 ) int -> rdx "CSE - aggressive"
+; V72 cse1 [V72,T04] ( 2, 2 ) int -> rax "CSE - aggressive"
+; V73 cse2 [V73,T05] ( 3, 3 ) int -> rcx "CSE - aggressive"
+; V74 cse3 [V74,T06] ( 3, 3 ) int -> rdi "CSE - aggressive"
+; V75 cse4 [V75,T07] ( 3, 3 ) int -> rax "CSE - aggressive"
+; V76 cse5 [V76,T08] ( 2, 2 ) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 8
@@ -118,14 +118,18 @@ G_M50161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov dword ptr [rbx+0x08], -13
mov word ptr [rbx+0x0C], 256
mov ecx, dword ptr [rbx+0x08]
- add ecx, 17
- mov edx, dword ptr [rax+0x14]
- add ecx, edx
- add ecx, dword ptr [rax+0x10]
- add ecx, 3
- lea eax, [rcx-0x05]
+ mov edx, ecx
+ add edx, 17
+ mov edi, dword ptr [rax+0x14]
+ add edx, edi
+ mov eax, dword ptr [rax+0x10]
; gcrRegs -[rax]
- ;; size=152 bbWeight=1 PerfScore 22.25
+ add edx, eax
+ add ecx, edx
+ add ecx, 17
+ add ecx, edi
+ add eax, ecx
+ ;; size=159 bbWeight=1 PerfScore 22.00
G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
@@ -133,7 +137,7 @@ G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=7 bbWeight=1 PerfScore 2.25
-Total bytes of code 167, prolog size 8, PerfScore 28.00, instruction count 35, allocated bytes for code 167 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
+Total bytes of code 174, prolog size 8, PerfScore 27.75, instruction count 39, allocated bytes for code 174 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
; ============================================================
Unwind Info:
+7 (+4.19%) : 16252.dasm - testout1:SubFunclet106():int (FullOpts)
@@ -19,7 +19,7 @@
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref single-def
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref
-;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref single-def
+;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref single-def
@@ -28,61 +28,61 @@
;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref single-def
;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref
;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref
-;* V20 tmp15 [V20,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V20 tmp15 [V20,T21] ( 0, 0 ) int -> zero-ref single-def
;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp18 [V23,T09] ( 2, 2 ) int -> rcx single-def
+; V23 tmp18 [V23,T10] ( 2, 2 ) int -> rdx single-def
;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp21 [V26,T10] ( 2, 2 ) int -> rcx single-def
+; V26 tmp21 [V26,T11] ( 2, 2 ) int -> rdx single-def
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp23 [V28 ] ( 0, 0 ) int -> zero-ref
-; V29 tmp24 [V29,T11] ( 2, 2 ) int -> rcx single-def
+; V29 tmp24 [V29,T12] ( 2, 2 ) int -> rdx single-def
;* V30 tmp25 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp26 [V31 ] ( 0, 0 ) int -> zero-ref
-; V32 tmp27 [V32,T12] ( 2, 2 ) int -> rcx single-def
+;* V32 tmp27 [V32,T13] ( 0, 0 ) int -> zero-ref single-def
;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp30 [V35,T13] ( 2, 2 ) int -> rcx single-def
+;* V35 tmp30 [V35,T14] ( 0, 0 ) int -> zero-ref single-def
;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref
-;* V38 tmp33 [V38,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp35 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp36 [V41,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp36 [V41,T22] ( 0, 0 ) int -> zero-ref single-def
;* V42 tmp37 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp38 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp39 [V44,T15] ( 0, 0 ) int -> zero-ref single-def
+; V44 tmp39 [V44,T15] ( 2, 2 ) int -> rdx single-def
;* V45 tmp40 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp41 [V46 ] ( 0, 0 ) int -> zero-ref
-;* V47 tmp42 [V47,T16] ( 0, 0 ) int -> zero-ref single-def
+; V47 tmp42 [V47,T16] ( 2, 2 ) int -> rcx single-def
;* V48 tmp43 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp44 [V49 ] ( 0, 0 ) int -> zero-ref
-;* V50 tmp45 [V50,T17] ( 0, 0 ) int -> zero-ref single-def
+; V50 tmp45 [V50,T17] ( 2, 2 ) int -> rcx single-def
;* V51 tmp46 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp47 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp48 [V53,T24] ( 0, 0 ) int -> zero-ref single-def
+; V53 tmp48 [V53,T18] ( 2, 2 ) int -> rcx single-def
;* V54 tmp49 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp50 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp51 [V56,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp51 [V56,T19] ( 0, 0 ) int -> zero-ref single-def
;* V57 tmp52 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp53 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp54 [V59,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp54 [V59,T20] ( 0, 0 ) int -> zero-ref single-def
;* V60 tmp55 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp56 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp57 [V62,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp57 [V62,T23] ( 0, 0 ) int -> zero-ref single-def
;* V63 tmp58 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp59 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp60 [V65,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp60 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp61 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp62 [V67 ] ( 0, 0 ) int -> zero-ref
-; V68 cse0 [V68,T04] ( 2, 2 ) int -> rcx "CSE - aggressive"
-;* V69 cse1 [V69,T21] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V70 cse2 [V70,T03] ( 2, 2 ) int -> rax "CSE - aggressive"
-; V71 cse3 [V71,T05] ( 2, 2 ) int -> rcx "CSE - aggressive"
-; V72 cse4 [V72,T06] ( 2, 2 ) int -> rdx "CSE - aggressive"
-; V73 cse5 [V73,T07] ( 2, 2 ) long -> rcx "CSE - aggressive"
-; V74 cse6 [V74,T08] ( 2, 2 ) long -> rdi "CSE - aggressive"
+; V68 cse0 [V68,T03] ( 2, 2 ) int -> rdx "CSE - aggressive"
+; V69 cse1 [V69,T04] ( 2, 2 ) int -> rax "CSE - aggressive"
+; V70 cse2 [V70,T05] ( 3, 3 ) int -> rcx "CSE - aggressive"
+; V71 cse3 [V71,T06] ( 3, 3 ) int -> rdi "CSE - aggressive"
+; V72 cse4 [V72,T07] ( 3, 3 ) int -> rax "CSE - aggressive"
+; V73 cse5 [V73,T08] ( 2, 2 ) long -> rcx "CSE - aggressive"
+; V74 cse6 [V74,T09] ( 2, 2 ) long -> rdi "CSE - aggressive"
;
; Lcl frame size = 8
@@ -116,14 +116,18 @@ G_M50161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov dword ptr [rbx+0x08], -13
mov word ptr [rbx+0x0C], 256
mov ecx, dword ptr [rbx+0x08]
- add ecx, 17
- mov edx, dword ptr [rax+0x14]
- add ecx, edx
- add ecx, dword ptr [rax+0x10]
- add ecx, 3
- lea eax, [rcx-0x05]
+ mov edx, ecx
+ add edx, 17
+ mov edi, dword ptr [rax+0x14]
+ add edx, edi
+ mov eax, dword ptr [rax+0x10]
; gcrRegs -[rax]
- ;; size=152 bbWeight=1 PerfScore 22.25
+ add edx, eax
+ add ecx, edx
+ add ecx, 17
+ add ecx, edi
+ add eax, ecx
+ ;; size=159 bbWeight=1 PerfScore 22.00
G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
@@ -131,7 +135,7 @@ G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=7 bbWeight=1 PerfScore 2.25
-Total bytes of code 167, prolog size 8, PerfScore 28.00, instruction count 35, allocated bytes for code 167 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
+Total bytes of code 174, prolog size 8, PerfScore 27.75, instruction count 39, allocated bytes for code 174 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
; ============================================================
Unwind Info:
libraries.pmi.linux.x64.checked.mch
-41 (-22.04%) : 261635.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
@@ -7,7 +7,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 9, 4 ) int -> rbx single-def
+; V00 arg0 [V00,T00] ( 6, 4 ) int -> rbx single-def
; V01 arg1 [V01,T01] ( 4, 2 ) ref -> r15 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -29,10 +29,10 @@ G_M20631_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=17 bbWeight=1 PerfScore 6.00
G_M20631_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
cmp ebx, 452
- jg G_M20631_IG07
+ jg SHORT G_M20631_IG04
cmp ebx, 250
- jne SHORT G_M20631_IG06
- ;; size=20 bbWeight=1 PerfScore 2.50
+ jne SHORT G_M20631_IG04
+ ;; size=16 bbWeight=1 PerfScore 2.50
G_M20631_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
@@ -82,23 +82,10 @@ G_M20631_IG05: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byr
; gcrRegs +[rdi]
call CORINFO_HELP_THROW
; gcrRegs -[rdi r14]
- ;; size=45 bbWeight=0 PerfScore 0.00
-G_M20631_IG06: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r15]
- lea edi, [rbx-0x1C3]
- cmp edi, 1
- jbe SHORT G_M20631_IG04
- jmp SHORT G_M20631_IG04
- ;; size=13 bbWeight=0 PerfScore 0.00
-G_M20631_IG07: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- cmp ebx, 552
- je SHORT G_M20631_IG04
- cmp ebx, 554
- je G_M20631_IG04
- jmp G_M20631_IG04
- ;; size=25 bbWeight=0 PerfScore 0.00
+ int3
+ ;; size=46 bbWeight=0 PerfScore 0.00
-Total bytes of code 186, prolog size 12, PerfScore 11.75, instruction count 49, allocated bytes for code 186 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
+Total bytes of code 145, prolog size 12, PerfScore 11.75, instruction count 41, allocated bytes for code 145 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
; ============================================================
Unwind Info:
-4 (-20.00%) : 267812.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
@@ -2,7 +2,7 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
@@ -13,12 +13,11 @@
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M40773_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M40773_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
test sil, sil
@@ -26,17 +25,16 @@ G_M40773_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
;; size=5 bbWeight=1 PerfScore 1.25
G_M40773_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi]
- pop rbp
+ add rsp, 8
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=5 bbWeight=1 PerfScore 1.25
G_M40773_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rdi]
- cmp gword ptr [rdi+0x10], 0
- je SHORT G_M40773_IG03
+ mov eax, dword ptr [rdi+0x10]
jmp SHORT G_M40773_IG03
- ;; size=9 bbWeight=0.50 PerfScore 3.00
+ ;; size=5 bbWeight=0.50 PerfScore 2.00
-Total bytes of code 20, prolog size 4, PerfScore 7.00, instruction count 9, allocated bytes for code 20 (MethodHash=8a3760ba) for method System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
+Total bytes of code 16, prolog size 1, PerfScore 5.50, instruction count 7, allocated bytes for code 16 (MethodHash=8a3760ba) for method System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
; ============================================================
Unwind Info:
@@ -49,4 +47,4 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-12 (-16.44%) : 253550.dasm - System.Net.Sockets.UdpReceiveResult:Equals(System.Net.Sockets.UdpReceiveResult):ubyte:this (FullOpts)
@@ -12,12 +12,12 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Net.Sockets.UdpReceiveResult>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V04 tmp2 [V04,T01] ( 3, 4.81) ref -> rax class-hnd single-def "Inlining Arg" <<unknown class>>
+; V04 tmp2 [V04,T01] ( 2, 4 ) ref -> rax class-hnd single-def "Inlining Arg" <<unknown class>>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <<unknown class>>
; V06 tmp4 [V06,T05] ( 3, 0.92) ubyte -> rax "Inline return value spill temp"
; V07 tmp5 [V07,T04] ( 5, 3.14) ref -> rdi class-hnd single-def "Inlining Arg" <System.Net.IPEndPoint>
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Net.IPEndPoint>
-; V09 tmp7 [V09,T02] ( 3, 2.41) ref -> rsi single-def "field V01._buffer (fldOffset=0x0)" P-INDEP
+; V09 tmp7 [V09,T02] ( 2, 2 ) ref -> rsi single-def "field V01._buffer (fldOffset=0x0)" P-INDEP
; V10 tmp8 [V10,T03] ( 4, 1.99) ref -> rdx single-def "field V01._remoteEndPoint (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
@@ -32,73 +32,57 @@ G_M58887_IG02: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0080 {rd
mov rax, gword ptr [rdi]
; gcrRegs +[rax]
cmp rax, rsi
- je SHORT G_M58887_IG06
+ jne SHORT G_M58887_IG11
;; size=8 bbWeight=1 PerfScore 3.25
-G_M58887_IG03: ; bbWeight=0.41, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdx]
- ; byrRegs -[rdi]
- test rax, rax
- je SHORT G_M58887_IG14
- ;; size=5 bbWeight=0.41 PerfScore 0.51
-G_M58887_IG04: ; bbWeight=0.41, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- test rsi, rsi
- jne SHORT G_M58887_IG14
- ;; size=5 bbWeight=0.41 PerfScore 0.51
-G_M58887_IG05: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- jmp SHORT G_M58887_IG14
- ;; size=2 bbWeight=0.32 PerfScore 0.65
-G_M58887_IG06: ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, byref, isz
- ; gcrRegs +[rdx]
- ; byrRegs +[rdi]
+G_M58887_IG03: ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs -[rax rsi]
mov rdi, gword ptr [rdi+0x08]
; gcrRegs +[rdi]
; byrRegs -[rdi]
cmp rdi, rdx
- je SHORT G_M58887_IG12
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M58887_IG07: ; bbWeight=0.41, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
- test rdi, rdi
je SHORT G_M58887_IG09
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M58887_IG04: ; bbWeight=0.41, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
+ test rdi, rdi
+ je SHORT G_M58887_IG06
;; size=5 bbWeight=0.41 PerfScore 0.51
-G_M58887_IG08: ; bbWeight=0.41, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
+G_M58887_IG05: ; bbWeight=0.41, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
test rdx, rdx
- jne SHORT G_M58887_IG10
+ jne SHORT G_M58887_IG07
;; size=5 bbWeight=0.41 PerfScore 0.51
-G_M58887_IG09: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M58887_IG06: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx rdi]
xor eax, eax
- jmp SHORT G_M58887_IG13
+ jmp SHORT G_M58887_IG10
;; size=4 bbWeight=0.32 PerfScore 0.73
-G_M58887_IG10: ; bbWeight=0.08, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
+G_M58887_IG07: ; bbWeight=0.08, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx rdi]
mov rsi, rdx
; gcrRegs +[rsi]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
;; size=10 bbWeight=0.08 PerfScore 0.35
-G_M58887_IG11: ; bbWeight=0.08, epilog, nogc, extend
+G_M58887_IG08: ; bbWeight=0.08, epilog, nogc, extend
pop rbp
tail.jmp [rax+0x10]System.Object:Equals(System.Object):ubyte:this
;; size=5 bbWeight=0.08 PerfScore 0.20
-G_M58887_IG12: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M58887_IG09: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdx rsi rdi]
mov eax, 1
;; size=5 bbWeight=0.09 PerfScore 0.02
-G_M58887_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M58887_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M58887_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M58887_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M58887_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M58887_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-Total bytes of code 73, prolog size 4, PerfScore 11.73, instruction count 30, allocated bytes for code 73 (MethodHash=e2d519f8) for method System.Net.Sockets.UdpReceiveResult:Equals(System.Net.Sockets.UdpReceiveResult):ubyte:this (FullOpts)
+Total bytes of code 61, prolog size 4, PerfScore 10.07, instruction count 25, allocated bytes for code 61 (MethodHash=e2d519f8) for method System.Net.Sockets.UdpReceiveResult:Equals(System.Net.Sockets.UdpReceiveResult):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
+12 (+2.12%) : 138382.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
@@ -56,16 +56,16 @@ G_M11729_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r13d, edx
mov r15d, ecx
;; size=29 bbWeight=1 PerfScore 6.75
-G_M11729_IG02: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M11729_IG02: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x54]
cmp edi, 10
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG16
lea rax, [reloc @RWD00]
mov eax, dword ptr [rax+4*rdi]
lea rcx, G_M11729_IG02
add rax, rcx
jmp rax
- ;; size=30 bbWeight=1 PerfScore 9.00
+ ;; size=34 bbWeight=1 PerfScore 9.00
G_M11729_IG03: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x68], 0
jne SHORT G_M11729_IG04
@@ -84,34 +84,20 @@ G_M11729_IG04: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
mov eax, dword ptr [rax+0x30]
; gcrRegs -[rax]
;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
dec eax
cmp eax, 2
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG16
mov edi, eax
lea rax, [reloc @RWD44]
mov eax, dword ptr [rax+4*rdi]
lea rcx, G_M11729_IG02
add rax, rcx
jmp rax
- ;; size=31 bbWeight=0.50 PerfScore 3.75
-G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r14]
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M11729_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
- pop rbx
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
-G_M11729_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx r14]
+ ;; size=35 bbWeight=0.50 PerfScore 3.75
+G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x5C], -1
- je G_M11729_IG12
+ je G_M11729_IG10
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
mov rax, qword ptr [rdi]
@@ -120,7 +106,7 @@ G_M11729_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400
; gcrRegs -[rdi]
; gcr arg pop 0
test eax, eax
- je G_M11729_IG12
+ je G_M11729_IG10
mov rdi, r14
; gcrRegs +[rdi]
mov esi, r13d
@@ -129,27 +115,27 @@ G_M11729_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400
; gcrRegs -[rdi]
; gcr arg pop 0
test r15d, r15d
- je SHORT G_M11729_IG06
+ je G_M11729_IG16
cmp dword ptr [rbx+0x60], 0
- jne SHORT G_M11729_IG10
+ jne SHORT G_M11729_IG08
mov rdi, gword ptr [rbx+0x38]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M11729_IG09
+ je SHORT G_M11729_IG07
mov rax, rdi
; gcrRegs +[rax]
mov rax, qword ptr [rax]
; gcrRegs -[rax]
mov rcx, 0xD1FFAB1E ; System.Xml.Base64Decoder
cmp rax, rcx
- jne SHORT G_M11729_IG09
+ jne SHORT G_M11729_IG07
mov rax, qword ptr [rax+0x50]
call [rax+0x08]<unknown method>
; gcrRegs -[rdi]
; gcr arg pop 0
- jmp SHORT G_M11729_IG10
- ;; size=100 bbWeight=0.50 PerfScore 18.62
-G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M11729_IG08
+ ;; size=104 bbWeight=0.50 PerfScore 18.62
+G_M11729_IG07: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.Xml.Base64Decoder
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -162,13 +148,13 @@ G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
;; size=27 bbWeight=0.50 PerfScore 1.50
-G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M11729_IG08: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x60]
mov rsi, gword ptr [rbx+0x40]
; gcrRegs +[rsi]
mov rsi, gword ptr [rsi+0x28]
cmp edi, dword ptr [rsi+0x08]
- je G_M11729_IG06
+ je G_M11729_IG16
mov rdi, gword ptr [rbx+0x38]
; gcrRegs +[rdi]
mov rsi, r14
@@ -202,7 +188,7 @@ G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
;; size=92 bbWeight=0.50 PerfScore 23.50
-G_M11729_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M11729_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 16
pop rbx
pop r13
@@ -211,7 +197,7 @@ G_M11729_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
tail.jmp [rax+0x20]<unknown method>
;; size=16 bbWeight=0.50 PerfScore 2.38
-G_M11729_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
+G_M11729_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi] +[r14]
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
@@ -222,7 +208,7 @@ G_M11729_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x90]
;; size=23 bbWeight=0.50 PerfScore 3.38
-G_M11729_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M11729_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 16
pop rbx
pop r13
@@ -231,11 +217,11 @@ G_M11729_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
tail.jmp [rax+0x20]<unknown method>
;; size=16 bbWeight=0.50 PerfScore 2.38
-G_M11729_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
+G_M11729_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rsi rdi]
mov dword ptr [rbx+0x54], 9
;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M11729_IG15: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M11729_IG13: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
mov rsi, r14
@@ -249,7 +235,7 @@ G_M11729_IG15: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
; gcr arg pop 0
mov r14d, eax
test r14d, r14d
- jne SHORT G_M11729_IG16
+ jne SHORT G_M11729_IG14
mov dword ptr [rbx+0x54], 1
mov rdi, rbx
; gcrRegs +[rdi]
@@ -257,9 +243,21 @@ G_M11729_IG15: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
; gcrRegs -[rbx rdi]
; gcr arg pop 0
;; size=50 bbWeight=0.50 PerfScore 7.75
-G_M11729_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M11729_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, r14d
;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M11729_IG15: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 16
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=13 bbWeight=0.50 PerfScore 1.88
+G_M11729_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M11729_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 16
pop rbx
@@ -312,23 +310,23 @@ G_M11729_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=45 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M11729_IG06 - G_M11729_IG02
- dd G_M11729_IG14 - G_M11729_IG02
- dd G_M11729_IG06 - G_M11729_IG02
- dd G_M11729_IG06 - G_M11729_IG02
- dd G_M11729_IG06 - G_M11729_IG02
+RWD00 dd G_M11729_IG16 - G_M11729_IG02
+ dd G_M11729_IG12 - G_M11729_IG02
+ dd G_M11729_IG16 - G_M11729_IG02
+ dd G_M11729_IG16 - G_M11729_IG02
+ dd G_M11729_IG16 - G_M11729_IG02
dd G_M11729_IG03 - G_M11729_IG02
dd G_M11729_IG03 - G_M11729_IG02
dd G_M11729_IG19 - G_M11729_IG02
dd G_M11729_IG19 - G_M11729_IG02
- dd G_M11729_IG15 - G_M11729_IG02
+ dd G_M11729_IG13 - G_M11729_IG02
dd G_M11729_IG19 - G_M11729_IG02
RWD44 dd G_M11729_IG18 - G_M11729_IG02
- dd G_M11729_IG08 - G_M11729_IG02
- dd G_M11729_IG12 - G_M11729_IG02
+ dd G_M11729_IG06 - G_M11729_IG02
+ dd G_M11729_IG10 - G_M11729_IG02
-Total bytes of code 566, prolog size 29, PerfScore 93.00, instruction count 164, allocated bytes for code 566 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
+Total bytes of code 578, prolog size 29, PerfScore 93.00, instruction count 164, allocated bytes for code 578 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
; ============================================================
Unwind Info:
+12 (+2.12%) : 138384.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
@@ -56,16 +56,16 @@ G_M57654_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r13d, edx
mov r15d, ecx
;; size=29 bbWeight=1 PerfScore 6.75
-G_M57654_IG02: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M57654_IG02: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x54]
cmp edi, 10
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG16
lea rax, [reloc @RWD00]
mov eax, dword ptr [rax+4*rdi]
lea rcx, G_M57654_IG02
add rax, rcx
jmp rax
- ;; size=30 bbWeight=1 PerfScore 9.00
+ ;; size=34 bbWeight=1 PerfScore 9.00
G_M57654_IG03: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x68], 0
jne SHORT G_M57654_IG04
@@ -84,34 +84,20 @@ G_M57654_IG04: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
mov eax, dword ptr [rax+0x30]
; gcrRegs -[rax]
;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
dec eax
cmp eax, 2
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG16
mov edi, eax
lea rax, [reloc @RWD44]
mov eax, dword ptr [rax+4*rdi]
lea rcx, G_M57654_IG02
add rax, rcx
jmp rax
- ;; size=31 bbWeight=0.50 PerfScore 3.75
-G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r14]
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M57654_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
- pop rbx
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
-G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx r14]
+ ;; size=35 bbWeight=0.50 PerfScore 3.75
+G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x5C], -1
- je G_M57654_IG12
+ je G_M57654_IG10
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
mov rax, qword ptr [rdi]
@@ -120,7 +106,7 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400
; gcrRegs -[rdi]
; gcr arg pop 0
test eax, eax
- je G_M57654_IG12
+ je G_M57654_IG10
mov rdi, r14
; gcrRegs +[rdi]
mov esi, r13d
@@ -129,27 +115,27 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400
; gcrRegs -[rdi]
; gcr arg pop 0
test r15d, r15d
- je SHORT G_M57654_IG06
+ je G_M57654_IG16
cmp dword ptr [rbx+0x60], 0
- jne SHORT G_M57654_IG10
+ jne SHORT G_M57654_IG08
mov rdi, gword ptr [rbx+0x38]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M57654_IG09
+ je SHORT G_M57654_IG07
mov rax, rdi
; gcrRegs +[rax]
mov rax, qword ptr [rax]
; gcrRegs -[rax]
mov rcx, 0xD1FFAB1E ; System.Xml.BinHexDecoder
cmp rax, rcx
- jne SHORT G_M57654_IG09
+ jne SHORT G_M57654_IG07
mov rax, qword ptr [rax+0x50]
call [rax+0x08]<unknown method>
; gcrRegs -[rdi]
; gcr arg pop 0
- jmp SHORT G_M57654_IG10
- ;; size=100 bbWeight=0.50 PerfScore 18.62
-G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M57654_IG08
+ ;; size=104 bbWeight=0.50 PerfScore 18.62
+G_M57654_IG07: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.Xml.BinHexDecoder
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -162,13 +148,13 @@ G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
;; size=27 bbWeight=0.50 PerfScore 1.50
-G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M57654_IG08: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x60]
mov rsi, gword ptr [rbx+0x40]
; gcrRegs +[rsi]
mov rsi, gword ptr [rsi+0x28]
cmp edi, dword ptr [rsi+0x08]
- je G_M57654_IG06
+ je G_M57654_IG16
mov rdi, gword ptr [rbx+0x38]
; gcrRegs +[rdi]
mov rsi, r14
@@ -202,7 +188,7 @@ G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
;; size=92 bbWeight=0.50 PerfScore 23.50
-G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M57654_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 16
pop rbx
pop r13
@@ -211,7 +197,7 @@ G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
tail.jmp [rax+0x20]<unknown method>
;; size=16 bbWeight=0.50 PerfScore 2.38
-G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
+G_M57654_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi] +[r14]
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
@@ -222,7 +208,7 @@ G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x90]
;; size=23 bbWeight=0.50 PerfScore 3.38
-G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 16
pop rbx
pop r13
@@ -231,11 +217,11 @@ G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
tail.jmp [rax+0x30]<unknown method>
;; size=16 bbWeight=0.50 PerfScore 2.38
-G_M57654_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
+G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rsi rdi]
mov dword ptr [rbx+0x54], 10
;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M57654_IG13: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
mov rsi, r14
@@ -249,7 +235,7 @@ G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
; gcr arg pop 0
mov r14d, eax
test r14d, r14d
- jne SHORT G_M57654_IG16
+ jne SHORT G_M57654_IG14
mov dword ptr [rbx+0x54], 1
mov rdi, rbx
; gcrRegs +[rdi]
@@ -257,9 +243,21 @@ G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
; gcrRegs -[rbx rdi]
; gcr arg pop 0
;; size=50 bbWeight=0.50 PerfScore 7.75
-G_M57654_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57654_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, r14d
;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M57654_IG15: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 16
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=13 bbWeight=0.50 PerfScore 1.88
+G_M57654_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M57654_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 16
pop rbx
@@ -312,23 +310,23 @@ G_M57654_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=45 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG14 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG03 - G_M57654_IG02
- dd G_M57654_IG03 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG15 - G_M57654_IG02
-RWD44 dd G_M57654_IG18 - G_M57654_IG02
- dd G_M57654_IG08 - G_M57654_IG02
+RWD00 dd G_M57654_IG16 - G_M57654_IG02
dd G_M57654_IG12 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG03 - G_M57654_IG02
+ dd G_M57654_IG03 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG13 - G_M57654_IG02
+RWD44 dd G_M57654_IG18 - G_M57654_IG02
+ dd G_M57654_IG06 - G_M57654_IG02
+ dd G_M57654_IG10 - G_M57654_IG02
-Total bytes of code 566, prolog size 29, PerfScore 93.00, instruction count 164, allocated bytes for code 566 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
+Total bytes of code 578, prolog size 29, PerfScore 93.00, instruction count 164, allocated bytes for code 578 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
; ============================================================
Unwind Info:
+1 (+5.56%) : 54203.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.GCFitBucketInfoTraceData:Validate():this (FullOpts)
@@ -14,7 +14,7 @@
;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg"
;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V06 tmp4 [V06,T01] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;
; Lcl frame size = 0
@@ -25,13 +25,13 @@ G_M32950_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
mov rax, qword ptr [rdi+0x58]
movsx rax, word ptr [rax+0x0C]
mov rax, qword ptr [rdi+0x50]
- movzx rax, byte ptr [rax+0x04]
- ;; size=17 bbWeight=1 PerfScore 10.00
+ movsx rax, word ptr [rax+0x04]
+ ;; size=18 bbWeight=1 PerfScore 12.00
G_M32950_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
-Total bytes of code 18, prolog size 0, PerfScore 11.00, instruction count 5, allocated bytes for code 18 (MethodHash=f47e7f49) for method Microsoft.Diagnostics.Tracing.Parsers.Clr.GCFitBucketInfoTraceData:Validate():this (FullOpts)
+Total bytes of code 19, prolog size 0, PerfScore 13.00, instruction count 5, allocated bytes for code 19 (MethodHash=f47e7f49) for method Microsoft.Diagnostics.Tracing.Parsers.Clr.GCFitBucketInfoTraceData:Validate():this (FullOpts)
; ============================================================
Unwind Info:
libraries_tests.run.linux.x64.Release.mch
-38 (-66.67%) : 576968.dasm - System.Security.Cryptography.IncrementalHash:CheckSha3Support(System.String) (Tier1)
@@ -9,64 +9,45 @@
; 0 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 4.50) ref -> rdi class-hnd single-def <System.String>
+; V00 arg0 [V00,T00] ( 4, 3.50) ref -> rdi class-hnd single-def <System.String>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-; V07 tmp5 [V07,T01] ( 2, 4 ) int -> rcx "spilling unroll qmark"
+;* V07 tmp5 [V07,T01] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V09 tmp7 [V09,T02] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V11 tmp9 [V11 ] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V12 cse0 [V12,T03] ( 3, 2 ) int -> rax "CSE - aggressive"
-; V13 rat0 [V13,T04] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V12 cse0 [V12,T03] ( 2, 1 ) int -> rax "CSE - aggressive"
+;* V13 rat0 [V13,T04] ( 0, 0 ) simd16 -> zero-ref "ReplaceWithLclVar is creating a new local variable"
;* V14 rat1 [V14,T05] ( 0, 0 ) simd16 -> zero-ref "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 0
G_M17450_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- vzeroupper
mov rbp, rsp
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M17450_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M17450_IG05
+ je SHORT G_M17450_IG04
;; size=5 bbWeight=1 PerfScore 1.25
G_M17450_IG03: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [rdi+0x08]
cmp eax, 8
- jne SHORT G_M17450_IG06
+ jne SHORT G_M17450_IG04
;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M17450_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- vmovups xmm0, xmmword ptr [rdi+0x0C]
- vpxor xmm0, xmm0, xmmword ptr [reloc @RWD00]
- vptest xmm0, xmm0
- sete cl
- movzx rcx, cl
- test ecx, ecx
- je SHORT G_M17450_IG06
- ;; size=28 bbWeight=1 PerfScore 11.50
-G_M17450_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M17450_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi]
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
-G_M17450_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp eax, 8
- je SHORT G_M17450_IG05
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M17450_IG07: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M17450_IG05
- ;; size=2 bbWeight=0.25 PerfScore 0.50
-RWD00 dq 0033004100480053h, 003600350032002Dh
-
-Total bytes of code 57, prolog size 7, PerfScore 19.88, instruction count 20, allocated bytes for code 57 (MethodHash=2101bbd5) for method System.Security.Cryptography.IncrementalHash:CheckSha3Support(System.String) (Tier1)
+Total bytes of code 19, prolog size 4, PerfScore 5.62, instruction count 9, allocated bytes for code 19 (MethodHash=2101bbd5) for method System.Security.Cryptography.IncrementalHash:CheckSha3Support(System.String) (Tier1)
; ============================================================
Unwind Info:
-47 (-35.07%) : 56434.dasm - Roslyn.Utilities.AsyncLazy1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task1[System.Canon]):System.Threading.Tasks.Task`1[System.Canon]:this (Tier1)
@@ -12,7 +12,7 @@
; V00 this [V00,T00] ( 6, 4.71) ref -> rbx this class-hnd single-def <Roslyn.Utilities.AsyncLazy`1[System.__Canon]>
; V01 arg1 [V01,T01] ( 5, 3.71) ref -> r15 class-hnd single-def <System.Threading.Tasks.Task`1[System.__Canon]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 8, 2.37) int -> r14 "Inline stloc first use temp"
+; V03 tmp1 [V03,T03] ( 4, 2.28) int -> rdi "Inline stloc first use temp"
;* V04 tmp2 [V04,T04] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V05 cse0 [V05,T02] ( 3, 2.43) ref -> rax "CSE - aggressive"
;
@@ -21,14 +21,13 @@
G_M21386_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
- push r14
push rbx
- lea rbp, [rsp+0x18]
+ lea rbp, [rsp+0x10]
mov rbx, rdi
; gcrRegs +[rbx]
mov r15, rsi
; gcrRegs +[r15]
- ;; size=17 bbWeight=1 PerfScore 5.00
+ ;; size=15 bbWeight=1 PerfScore 4.00
G_M21386_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rbx+0x18]
; gcrRegs +[rax]
@@ -38,20 +37,19 @@ G_M21386_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
G_M21386_IG03: ; bbWeight=0.43, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx r15]
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=7 bbWeight=0.43 PerfScore 1.29
+ ;; size=5 bbWeight=0.43 PerfScore 1.08
G_M21386_IG04: ; bbWeight=0.57, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx r15]
- mov r14d, dword ptr [r15+0x34]
- test r14d, 0xD1FFAB1E
+ mov edi, dword ptr [r15+0x34]
+ test edi, 0xD1FFAB1E
jne SHORT G_M21386_IG06
- test r14d, 0xD1FFAB1E
+ test edi, 0xD1FFAB1E
jne SHORT G_M21386_IG06
- test r14d, 0xD1FFAB1E
- je SHORT G_M21386_IG08
+ test edi, 0xD1FFAB1E
+ je SHORT G_M21386_IG06
lea rdi, bword ptr [rbx+0x18]
; byrRegs +[rdi]
mov rsi, r15
@@ -62,7 +60,7 @@ G_M21386_IG04: ; bbWeight=0.57, gcVars=0000000000000000 {}, gcrefRegs=800
xor rax, rax
; gcrRegs +[rax]
mov gword ptr [rbx+0x08], rax
- ;; size=49 bbWeight=0.57 PerfScore 4.98
+ ;; size=46 bbWeight=0.57 PerfScore 4.98
G_M21386_IG05: ; bbWeight=0.57, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov gword ptr [rbx+0x10], rax
@@ -74,25 +72,12 @@ G_M21386_IG06: ; bbWeight=0.57, gcrefRegs=8000 {r15}, byrefRegs=0000 {},
;; size=3 bbWeight=0.57 PerfScore 0.14
G_M21386_IG07: ; bbWeight=0.57, epilog, nogc, extend
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=7 bbWeight=0.57 PerfScore 1.71
-G_M21386_IG08: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
- test r14d, 0xD1FFAB1E
- jne SHORT G_M21386_IG06
- test r14d, 0x20000
- jne SHORT G_M21386_IG06
- test r14d, 0x10000
- jne SHORT G_M21386_IG06
- test r14d, 0xD1FFAB1E
- je SHORT G_M21386_IG06
- jmp SHORT G_M21386_IG06
- ;; size=38 bbWeight=0.02 PerfScore 0.16
+ ;; size=5 bbWeight=0.57 PerfScore 1.42
-Total bytes of code 134, prolog size 11, PerfScore 17.10, instruction count 43, allocated bytes for code 134 (MethodHash=7308ac75) for method Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
+Total bytes of code 87, prolog size 9, PerfScore 15.44, instruction count 31, allocated bytes for code 87 (MethodHash=7308ac75) for method Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
; ============================================================
Unwind Info:
@@ -100,12 +85,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-47 (-35.07%) : 91735.dasm - Roslyn.Utilities.AsyncLazy1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task1[System.Canon]):System.Threading.Tasks.Task`1[System.Canon]:this (Tier1)
@@ -12,23 +12,22 @@
; V00 this [V00,T00] ( 6, 4.67) ref -> rbx this class-hnd single-def <Roslyn.Utilities.AsyncLazy`1[System.__Canon]>
; V01 arg1 [V01,T01] ( 5, 3.67) ref -> r15 class-hnd single-def <System.Threading.Tasks.Task`1[System.__Canon]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 8, 2.27) int -> r14 "Inline stloc first use temp"
+; V03 tmp1 [V03,T03] ( 4, 2.23) int -> rdi "Inline stloc first use temp"
;* V04 tmp2 [V04,T04] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V05 cse0 [V05,T02] ( 3, 2.44) ref -> rax "CSE - aggressive"
;
; Lcl frame size = 0
-G_M21386_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M21386_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
push r15
- push r14
push rbx
- lea rbp, [rsp+0x18]
+ lea rbp, [rsp+0x10]
mov rbx, rdi
; gcrRegs +[rbx]
mov r15, rsi
; gcrRegs +[r15]
- ;; size=17 bbWeight=1 PerfScore 5.00
+ ;; size=15 bbWeight=1 PerfScore 4.00
G_M21386_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rbx+0x18]
; gcrRegs +[rax]
@@ -37,13 +36,13 @@ G_M21386_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
;; size=9 bbWeight=1 PerfScore 3.25
G_M21386_IG03: ; bbWeight=0.56, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- mov r14d, dword ptr [r15+0x34]
- test r14d, 0xD1FFAB1E
+ mov edi, dword ptr [r15+0x34]
+ test edi, 0xD1FFAB1E
jne SHORT G_M21386_IG05
- test r14d, 0xD1FFAB1E
+ test edi, 0xD1FFAB1E
jne SHORT G_M21386_IG05
- test r14d, 0xD1FFAB1E
- je SHORT G_M21386_IG08
+ test edi, 0xD1FFAB1E
+ je SHORT G_M21386_IG05
lea rdi, bword ptr [rbx+0x18]
; byrRegs +[rdi]
mov rsi, r15
@@ -54,7 +53,7 @@ G_M21386_IG03: ; bbWeight=0.56, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
xor rax, rax
; gcrRegs +[rax]
mov gword ptr [rbx+0x08], rax
- ;; size=49 bbWeight=0.56 PerfScore 4.88
+ ;; size=46 bbWeight=0.56 PerfScore 4.88
G_M21386_IG04: ; bbWeight=0.56, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov gword ptr [rbx+0x10], rax
@@ -66,33 +65,19 @@ G_M21386_IG05: ; bbWeight=0.56, gcrefRegs=8000 {r15}, byrefRegs=0000 {},
;; size=3 bbWeight=0.56 PerfScore 0.14
G_M21386_IG06: ; bbWeight=0.56, epilog, nogc, extend
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=7 bbWeight=0.56 PerfScore 1.67
+ ;; size=5 bbWeight=0.56 PerfScore 1.39
G_M21386_IG07: ; bbWeight=0.44, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r15]
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=7 bbWeight=0.44 PerfScore 1.33
-G_M21386_IG08: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax] +[r15]
- test r14d, 0xD1FFAB1E
- jne SHORT G_M21386_IG05
- test r14d, 0x20000
- jne SHORT G_M21386_IG05
- test r14d, 0x10000
- jne SHORT G_M21386_IG05
- test r14d, 0xD1FFAB1E
- je SHORT G_M21386_IG05
- jmp SHORT G_M21386_IG05
- ;; size=38 bbWeight=0.01 PerfScore 0.08
+ ;; size=5 bbWeight=0.44 PerfScore 1.11
-Total bytes of code 134, prolog size 11, PerfScore 16.90, instruction count 43, allocated bytes for code 134 (MethodHash=7308ac75) for method Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
+Total bytes of code 87, prolog size 9, PerfScore 15.32, instruction count 31, allocated bytes for code 87 (MethodHash=7308ac75) for method Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
; ============================================================
Unwind Info:
@@ -100,12 +85,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+17 (+5.69%) : 708166.dasm - Microsoft.CodeAnalysis.BitVector:AllSet(int):Microsoft.CodeAnalysis.BitVector (Tier1)
@@ -44,14 +44,14 @@ G_M40875_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=21 bbWeight=1 PerfScore 8.00
G_M40875_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
test ebx, ebx
- je G_M40875_IG12
+ je G_M40875_IG10
lea r14d, [rbx-0x01]
sar r14d, 6
xor edi, edi
test ebx, ebx
cmovle r14d, edi
test r14d, r14d
- jne G_M40875_IG14
+ jne G_M40875_IG12
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
;; size=43 bbWeight=1 PerfScore 4.50
@@ -60,21 +60,34 @@ G_M40875_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15},
mov r12, -1
xor edi, edi
test r13d, r13d
- jg SHORT G_M40875_IG07
+ jg SHORT G_M40875_IG05
;; size=21 bbWeight=1 PerfScore 2.25
G_M40875_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref, isz
mov edi, ebx
and edi, 63
- jle SHORT G_M40875_IG10
+ jle G_M40875_IG14
mov rax, -1
shlx rdi, rax, rdi
mov rax, rdi
not rax
test r13d, r13d
- jge SHORT G_M40875_IG09
+ jge G_M40875_IG13
mov r12, rax
- ;; size=36 bbWeight=1 PerfScore 4.25
-G_M40875_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref
+ jmp SHORT G_M40875_IG07
+ ;; size=46 bbWeight=1 PerfScore 6.25
+G_M40875_IG05: ; bbWeight=0.04, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref, isz
+ cmp edi, dword ptr [rsi+0x08]
+ jae SHORT G_M40875_IG09
+ mov eax, edi
+ mov qword ptr [rsi+8*rax+0x10], -1
+ inc edi
+ cmp edi, r13d
+ jl SHORT G_M40875_IG05
+ ;; size=23 bbWeight=0.04 PerfScore 0.25
+G_M40875_IG06: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref, isz
+ jmp SHORT G_M40875_IG04
+ ;; size=2 bbWeight=1 PerfScore 2.00
+G_M40875_IG07: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref
mov rdi, r15
; byrRegs +[rdi]
call CORINFO_HELP_CHECKED_ASSIGN_REF
@@ -85,7 +98,7 @@ G_M40875_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15},
mov rax, r15
; byrRegs +[rax]
;; size=19 bbWeight=1 PerfScore 3.50
-G_M40875_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M40875_IG08: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -95,43 +108,12 @@ G_M40875_IG06: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M40875_IG07: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, gcvars, byref, isz
- ; gcrRegs +[rsi]
- ; byrRegs -[rax]
- cmp edi, dword ptr [rsi+0x08]
- jae SHORT G_M40875_IG11
- mov eax, edi
- mov qword ptr [rsi+8*rax+0x10], -1
- inc edi
- cmp edi, r13d
- jl SHORT G_M40875_IG07
- ;; size=23 bbWeight=0.04 PerfScore 0.25
-G_M40875_IG08: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref, isz
- jmp SHORT G_M40875_IG04
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M40875_IG09: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref, isz
- cmp r13d, dword ptr [rsi+0x08]
- jae SHORT G_M40875_IG11
- mov ecx, r13d
- mov qword ptr [rsi+8*rcx+0x10], rax
- jmp SHORT G_M40875_IG05
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M40875_IG10: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref, isz
- test r14d, r14d
- jle SHORT G_M40875_IG05
- cmp r13d, dword ptr [rsi+0x08]
- jae SHORT G_M40875_IG11
- mov eax, r13d
- mov qword ptr [rsi+8*rax+0x10], -1
- jmp SHORT G_M40875_IG05
- ;; size=25 bbWeight=0 PerfScore 0.00
-G_M40875_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi]
- ; byrRegs -[r15]
+G_M40875_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; byrRegs -[rax r15]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M40875_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
+G_M40875_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
; byrRegs +[r15]
mov rdi, 0xD1FFAB1E ; box for <unknown class>:<unknown field>
mov rsi, gword ptr [rdi]
@@ -147,7 +129,7 @@ G_M40875_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr
mov rax, r15
; byrRegs +[rax]
;; size=32 bbWeight=0 PerfScore 0.00
-G_M40875_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M40875_IG11: ; bbWeight=0, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -157,7 +139,7 @@ G_M40875_IG13: ; bbWeight=0, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
-G_M40875_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
+G_M40875_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
; byrRegs -[rax rsi rdi]
movsxd rsi, r14d
mov rdi, 0xD1FFAB1E ; ulong[]
@@ -168,8 +150,25 @@ G_M40875_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs +[rsi]
jmp G_M40875_IG03
;; size=26 bbWeight=0 PerfScore 0.00
+G_M40875_IG13: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref, isz
+ ; gcrRegs -[rax]
+ cmp r13d, dword ptr [rsi+0x08]
+ jae SHORT G_M40875_IG09
+ mov ecx, r13d
+ mov qword ptr [rsi+8*rcx+0x10], rax
+ jmp SHORT G_M40875_IG07
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M40875_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref, isz
+ test r14d, r14d
+ jle G_M40875_IG07
+ cmp r13d, dword ptr [rsi+0x08]
+ jae SHORT G_M40875_IG09
+ mov eax, r13d
+ mov qword ptr [rsi+8*rax+0x10], -1
+ jmp G_M40875_IG07
+ ;; size=32 bbWeight=0 PerfScore 0.00
-Total bytes of code 299, prolog size 21, PerfScore 29.00, instruction count 90, allocated bytes for code 299 (MethodHash=4a676054) for method Microsoft.CodeAnalysis.BitVector:AllSet(int):Microsoft.CodeAnalysis.BitVector (Tier1)
+Total bytes of code 316, prolog size 21, PerfScore 31.00, instruction count 91, allocated bytes for code 316 (MethodHash=4a676054) for method Microsoft.CodeAnalysis.BitVector:AllSet(int):Microsoft.CodeAnalysis.BitVector (Tier1)
; ============================================================
Unwind Info:
+18 (+6.45%) : 477094.dasm - System.Xml.XmlConvert:CreateInvalidNameCharException(System.String,int,int):System.Exception (Tier1)
@@ -9,17 +9,17 @@
; 1 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 3, 3 ) ref -> r15 class-hnd single-def <System.String>
-; V01 arg1 [V01,T01] ( 5, 5 ) int -> rbx single-def
-; V02 arg2 [V02,T05] ( 3, 3 ) int -> r14 single-def
+; V00 arg0 [V00,T04] ( 4, 3 ) ref -> r15 class-hnd single-def <System.String>
+; V01 arg1 [V01,T01] ( 6, 5 ) int -> rbx single-def
+; V02 arg2 [V02,T05] ( 4, 3 ) int -> r14 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T07] ( 5, 3 ) ref -> r13
; V05 tmp2 [V05,T08] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.Exception>
-; V06 tmp3 [V06,T02] ( 4, 6 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.String[]>
+; V06 tmp3 [V06,T02] ( 5, 6 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.String[]>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
; V08 tmp5 [V08,T09] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V10 tmp7 [V10,T00] ( 11, 22 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlException>
+; V10 tmp7 [V10,T00] ( 11, 22 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlException>
;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V12 tmp9 [V12,T03] ( 3, 6 ) int -> rbx "Inlining Arg"
; V13 tmp10 [V13,T06] ( 2, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
@@ -48,22 +48,23 @@ G_M2230_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byre
; gcrRegs +[rax]
mov r13, rax
; gcrRegs +[r13]
- ;; size=17 bbWeight=1 PerfScore 4.50
-G_M2230_IG03: ; bbWeight=1, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
mov rdi, r15
; gcrRegs +[rdi]
mov esi, ebx
call [<unknown method>]
- ; gcrRegs -[rdi r15] +[rax]
+ ; gcrRegs -[rdi r15]
mov r12, rax
; gcrRegs +[r12]
test r14d, r14d
je G_M2230_IG07
+ ;; size=40 bbWeight=1 PerfScore 9.50
+G_M2230_IG03: ; bbWeight=1, gcrefRegs=3000 {r12 r13}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; System.Xml.XmlException
call CORINFO_HELP_NEWSFAST
- mov r15, rax
- ; gcrRegs +[r15]
+ ; gcrRegs +[rax]
+ mov r14, rax
+ ; gcrRegs +[r14]
inc ebx
mov rdi, r13
; gcrRegs +[rdi]
@@ -74,8 +75,8 @@ G_M2230_IG03: ; bbWeight=1, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {},
call [<unknown method>]
; gcrRegs -[rsi rdi]
mov rdi, 0xD1FFAB1E
- mov qword ptr [r15+0x70], rdi
- lea rdi, bword ptr [r15+0x10]
+ mov qword ptr [r14+0x70], rdi
+ lea rdi, bword ptr [r14+0x10]
; byrRegs +[rdi]
mov rsi, rax
; gcrRegs +[rsi]
@@ -84,9 +85,9 @@ G_M2230_IG03: ; bbWeight=1, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {},
; byrRegs -[rdi]
xor rdi, rdi
; gcrRegs +[rdi]
- mov gword ptr [r15+0x20], rdi
- mov dword ptr [r15+0x74], 0xD1FFAB1E
- lea rdi, bword ptr [r15+0x78]
+ mov gword ptr [r14+0x20], rdi
+ mov dword ptr [r14+0x74], 0xD1FFAB1E
+ lea rdi, bword ptr [r14+0x78]
; gcrRegs -[rdi]
; byrRegs +[rdi]
mov rsi, r13
@@ -94,7 +95,7 @@ G_M2230_IG03: ; bbWeight=1, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {},
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rsi r13]
; byrRegs -[rdi]
- lea rdi, bword ptr [r15+0x80]
+ lea rdi, bword ptr [r14+0x80]
; byrRegs +[rdi]
mov rsi, r12
; gcrRegs +[rsi]
@@ -103,17 +104,17 @@ G_M2230_IG03: ; bbWeight=1, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {},
; byrRegs -[rdi]
xor rax, rax
; gcrRegs +[rax]
- mov gword ptr [r15+0x88], rax
- ;; size=135 bbWeight=1 PerfScore 20.75
-G_M2230_IG04: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ mov gword ptr [r14+0x88], rax
+ ;; size=112 bbWeight=1 PerfScore 15.75
+G_M2230_IG04: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov dword ptr [r15+0x98], eax
- mov dword ptr [r15+0x9C], ebx
- mov rax, r15
+ mov dword ptr [r14+0x98], eax
+ mov dword ptr [r14+0x9C], ebx
+ mov rax, r14
; gcrRegs +[rax]
;; size=17 bbWeight=1 PerfScore 2.25
G_M2230_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r15]
+ ; gcrRegs -[r14]
add rsp, 8
pop rbx
pop r12
@@ -131,10 +132,18 @@ G_M2230_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r
; gcrRegs -[rdi] +[rax]
mov r13, rax
; gcrRegs +[r13]
- jmp G_M2230_IG03
- ;; size=24 bbWeight=0 PerfScore 0.00
+ mov rdi, r15
+ ; gcrRegs +[rdi]
+ mov esi, ebx
+ call [<unknown method>]
+ ; gcrRegs -[rdi r15]
+ mov r12, rax
+ ; gcrRegs +[r12]
+ test r14d, r14d
+ jne G_M2230_IG03
+ ;; size=42 bbWeight=0 PerfScore 0.00
G_M2230_IG07: ; bbWeight=0, gcrefRegs=3000 {r12 r13}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax r15] +[r12]
+ ; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -157,7 +166,7 @@ G_M2230_IG07: ; bbWeight=0, gcrefRegs=3000 {r12 r13}, byrefRegs=0000 {},
jmp SHORT G_M2230_IG05
;; size=47 bbWeight=0 PerfScore 0.00
-Total bytes of code 279, prolog size 16, PerfScore 40.00, instruction count 72, allocated bytes for code 279 (MethodHash=55e8f749) for method System.Xml.XmlConvert:CreateInvalidNameCharException(System.String,int,int):System.Exception (Tier1)
+Total bytes of code 297, prolog size 16, PerfScore 40.00, instruction count 77, allocated bytes for code 297 (MethodHash=55e8f749) for method System.Xml.XmlConvert:CreateInvalidNameCharException(System.String,int,int):System.Exception (Tier1)
; ============================================================
Unwind Info:
+10 (+7.87%) : 543035.dasm - System.Xml.XmlBufferReader:ReadRawByteslong:long:this (Tier1)
@@ -8,13 +8,13 @@
; 4 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 10, 7.03) ref -> rbx this class-hnd single-def <System.Xml.XmlBufferReader>
+; V00 this [V00,T00] ( 11, 7.03) ref -> rbx this class-hnd single-def <System.Xml.XmlBufferReader>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ubyte]>
-; V02 loc1 [V02,T02] ( 5, 3.02) int -> r15 ld-addr-op
+; V02 loc1 [V02,T02] ( 4, 3.02) int -> r15 ld-addr-op
; V03 loc2 [V03,T05] ( 2, 2 ) long -> rax
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
-; V06 tmp2 [V06,T01] ( 4, 4 ) ref -> rdi class-hnd single-def "Inline return value spill temp" <ubyte[]>
+; V06 tmp2 [V06,T01] ( 6, 4 ) ref -> r14 class-hnd single-def "Inline return value spill temp" <ubyte[]>
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
@@ -27,7 +27,7 @@
;* V16 tmp12 [V16 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V19 tmp15 [V19,T04] ( 2, 2 ) byref -> r15 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V19 tmp15 [V19,T04] ( 2, 2 ) byref -> r14 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
@@ -37,51 +37,57 @@
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
;* V27 tmp23 [V27 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
;* V28 tmp24 [V28 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
-; V29 cse0 [V29,T03] ( 3, 3 ) long -> rcx "CSE - aggressive"
+; V29 cse0 [V29,T03] ( 3, 3 ) long -> rax "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M65134_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
push rbx
- lea rbp, [rsp+0x10]
+ push rax
+ lea rbp, [rsp+0x20]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
+ ;; size=15 bbWeight=1 PerfScore 5.75
G_M65134_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r15d, dword ptr [rbx+0x50]
mov edi, dword ptr [rbx+0x4C]
add edi, -8
cmp r15d, edi
- jg SHORT G_M65134_IG05
+ jg SHORT G_M65134_IG06
;; size=15 bbWeight=1 PerfScore 5.50
G_M65134_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdi, gword ptr [rbx+0x20]
- ; gcrRegs +[rdi]
- test rdi, rdi
+ mov r14, gword ptr [rbx+0x20]
+ ; gcrRegs +[r14]
+ test r14, r14
je SHORT G_M65134_IG08
- mov eax, dword ptr [rdi+0x08]
- mov ecx, r15d
- lea rdx, [rcx+0x08]
- cmp rax, rdx
- jb SHORT G_M65134_IG07
- lea r15, bword ptr [rdi+rcx+0x10]
- ; byrRegs +[r15]
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M65134_IG04: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ mov edi, dword ptr [r14+0x08]
+ mov eax, r15d
+ lea rcx, [rax+0x08]
+ cmp rdi, rcx
+ jb SHORT G_M65134_IG08
+ lea r14, bword ptr [r14+rax+0x10]
+ ; gcrRegs -[r14]
+ ; byrRegs +[r14]
mov edi, 1
- ; gcrRegs -[rdi]
call [<unknown method>]
- mov rax, qword ptr [r15]
+ mov rax, qword ptr [r14]
add dword ptr [rbx+0x50], 8
- ;; size=47 bbWeight=1 PerfScore 16.50
-G_M65134_IG04: ; bbWeight=1, epilog, nogc, extend
+ ;; size=39 bbWeight=1 PerfScore 13.25
+G_M65134_IG05: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
-G_M65134_IG05: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; byrRegs -[r15]
+ ;; size=11 bbWeight=1 PerfScore 3.25
+G_M65134_IG06: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; byrRegs -[r14]
mov r15d, dword ptr [rbx+0x50]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -91,25 +97,23 @@ G_M65134_IG05: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=000
test eax, eax
jne SHORT G_M65134_IG03
;; size=22 bbWeight=0.02 PerfScore 0.10
-G_M65134_IG06: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M65134_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
call [System.Xml.XmlExceptionHelper:ThrowUnexpectedEndOfFile(System.Xml.XmlDictionaryReader)]
; gcrRegs -[rdi]
- jmp SHORT G_M65134_IG03
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M65134_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
+ mov r14, gword ptr [rbx+0x20]
+ ; gcrRegs +[r14]
+ test r14, r14
+ jne SHORT G_M65134_IG04
+ ;; size=19 bbWeight=0 PerfScore 0.00
+G_M65134_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx r14]
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M65134_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test r15d, r15d
- jne SHORT G_M65134_IG07
- jmp SHORT G_M65134_IG07
- ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 127, prolog size 9, PerfScore 28.35, instruction count 41, allocated bytes for code 127 (MethodHash=0c3a0191) for method System.Xml.XmlBufferReader:ReadRawBytes[long]():long:this (Tier1)
+Total bytes of code 137, prolog size 12, PerfScore 31.10, instruction count 44, allocated bytes for code 137 (MethodHash=0c3a0191) for method System.Xml.XmlBufferReader:ReadRawBytes[long]():long:this (Tier1)
; ============================================================
Unwind Info:
@@ -117,11 +121,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
librariestestsnotieredcompilation.run.linux.x64.Release.mch
-26 (-26.00%) : 48837.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
@@ -8,7 +8,7 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
; V02 loc0 [V02,T06] ( 3, 1.50) int -> rcx ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
@@ -20,9 +20,9 @@
; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> rax single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V11 tmp6 [V11,T07] ( 3, 1.50) ref -> rdx single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) long -> rax "Spilling to split statement for tree"
+;* V12 rat0 [V12,T05] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) long -> rax "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -31,10 +31,9 @@ G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
push rax
lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x10], rdi
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.75
+ ;; size=11 bbWeight=1 PerfScore 3.75
G_M43979_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
mov rdi, gword ptr [rbx+0x20]
@@ -44,55 +43,47 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcrRegs -[rsi rdi]
; byrRegs +[rax]
test rax, rax
- je SHORT G_M43979_IG05
+ je SHORT G_M43979_IG04
;; size=18 bbWeight=1 PerfScore 9.25
G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0001 {rax}, byref, isz
mov ecx, dword ptr [rax]
mov rdx, gword ptr [rbx+0x80]
; gcrRegs +[rdx]
- mov rax, qword ptr [rbx]
- ; byrRegs -[rax]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax]
- mov rax, qword ptr [rax+0xC0]
- test rax, rax
- jne SHORT G_M43979_IG07
- ;; size=31 bbWeight=0.50 PerfScore 6.62
-G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M43979_IG07
- ;; size=2 bbWeight=0.10 PerfScore 0.20
-G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M43979_IG06
+ ;; size=11 bbWeight=0.50 PerfScore 3.00
+G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
+ ; byrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M43979_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43979_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rdx]
cmp ecx, dword ptr [rdx+0x08]
- jae SHORT G_M43979_IG09
+ jae SHORT G_M43979_IG08
mov eax, ecx
mov rax, gword ptr [rdx+8*rax+0x10]
; gcrRegs +[rax]
;; size=12 bbWeight=0.50 PerfScore 3.12
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M43979_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rdx]
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 100, prolog size 12, PerfScore 26.32, instruction count 35, allocated bytes for code 100 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
+Total bytes of code 74, prolog size 8, PerfScore 21.50, instruction count 28, allocated bytes for code 74 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
-26 (-26.00%) : 43263.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
@@ -8,7 +8,7 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
; V02 loc0 [V02,T06] ( 3, 1.50) int -> rcx ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
@@ -20,9 +20,9 @@
; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> rax single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V11 tmp6 [V11,T07] ( 3, 1.50) ref -> rdx single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) long -> rax "Spilling to split statement for tree"
+;* V12 rat0 [V12,T05] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) long -> rax "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -31,10 +31,9 @@ G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
push rax
lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x10], rdi
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.75
+ ;; size=11 bbWeight=1 PerfScore 3.75
G_M43979_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
mov rdi, gword ptr [rbx+0x20]
@@ -44,55 +43,47 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcrRegs -[rsi rdi]
; byrRegs +[rax]
test rax, rax
- je SHORT G_M43979_IG05
+ je SHORT G_M43979_IG04
;; size=18 bbWeight=1 PerfScore 9.25
G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0001 {rax}, byref, isz
mov ecx, dword ptr [rax]
mov rdx, gword ptr [rbx+0x80]
; gcrRegs +[rdx]
- mov rax, qword ptr [rbx]
- ; byrRegs -[rax]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax]
- mov rax, qword ptr [rax+0xC0]
- test rax, rax
- jne SHORT G_M43979_IG07
- ;; size=31 bbWeight=0.50 PerfScore 6.62
-G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M43979_IG07
- ;; size=2 bbWeight=0.10 PerfScore 0.20
-G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M43979_IG06
+ ;; size=11 bbWeight=0.50 PerfScore 3.00
+G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
+ ; byrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M43979_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43979_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rdx]
cmp ecx, dword ptr [rdx+0x08]
- jae SHORT G_M43979_IG09
+ jae SHORT G_M43979_IG08
mov eax, ecx
mov rax, gword ptr [rdx+8*rax+0x10]
; gcrRegs +[rax]
;; size=12 bbWeight=0.50 PerfScore 3.12
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M43979_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rdx]
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 100, prolog size 12, PerfScore 26.32, instruction count 35, allocated bytes for code 100 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
+Total bytes of code 74, prolog size 8, PerfScore 21.50, instruction count 28, allocated bytes for code 74 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
-26 (-26.00%) : 5408.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
@@ -8,7 +8,7 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
; V02 loc0 [V02,T06] ( 3, 1.50) int -> rcx ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
@@ -20,9 +20,9 @@
; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> rax single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V11 tmp6 [V11,T07] ( 3, 1.50) ref -> rdx single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) long -> rax "Spilling to split statement for tree"
+;* V12 rat0 [V12,T05] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) long -> rax "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -31,10 +31,9 @@ G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
push rax
lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x10], rdi
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.75
+ ;; size=11 bbWeight=1 PerfScore 3.75
G_M43979_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
mov rdi, gword ptr [rbx+0x20]
@@ -44,55 +43,47 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcrRegs -[rsi rdi]
; byrRegs +[rax]
test rax, rax
- je SHORT G_M43979_IG05
+ je SHORT G_M43979_IG04
;; size=18 bbWeight=1 PerfScore 9.25
G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0001 {rax}, byref, isz
mov ecx, dword ptr [rax]
mov rdx, gword ptr [rbx+0x80]
; gcrRegs +[rdx]
- mov rax, qword ptr [rbx]
- ; byrRegs -[rax]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax]
- mov rax, qword ptr [rax+0x108]
- test rax, rax
- jne SHORT G_M43979_IG07
- ;; size=31 bbWeight=0.50 PerfScore 6.62
-G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M43979_IG07
- ;; size=2 bbWeight=0.10 PerfScore 0.20
-G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M43979_IG06
+ ;; size=11 bbWeight=0.50 PerfScore 3.00
+G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
+ ; byrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M43979_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43979_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rdx]
cmp ecx, dword ptr [rdx+0x08]
- jae SHORT G_M43979_IG09
+ jae SHORT G_M43979_IG08
mov eax, ecx
mov rax, gword ptr [rdx+8*rax+0x10]
; gcrRegs +[rax]
;; size=12 bbWeight=0.50 PerfScore 3.12
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M43979_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rdx]
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 100, prolog size 12, PerfScore 26.32, instruction count 35, allocated bytes for code 100 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
+Total bytes of code 74, prolog size 8, PerfScore 21.50, instruction count 28, allocated bytes for code 74 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
+10 (+0.98%) : 101649.dasm - System.Drawing.ColorTranslator:ToHtml(System.Drawing.Color):System.String (FullOpts)
@@ -10,21 +10,21 @@
;
; V00 arg0 [V00,T03] ( 4, 4 ) struct (24) [rbp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.Drawing.Color>
; V01 loc0 [V01,T00] ( 29, 15.50) ref -> r8 class-hnd <System.String>
-; V02 loc1 [V02,T21] ( 3, 1.50) int -> rcx
+; V02 loc1 [V02,T19] ( 3, 1.50) int -> rcx
; V03 loc2 [V03 ] ( 17, 8.00) struct (40) [rbp-0x50] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (24) zero-ref "impAppendStmt" <System.Drawing.Color>
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (24) zero-ref "spilled call-like call argument" <System.Drawing.Color>
-;* V07 tmp3 [V07,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp3 [V07,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
; V09 tmp5 [V09,T08] ( 3, 3 ) int -> rsi "Inlining Arg"
;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V11 tmp7 [V11,T32] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V11 tmp7 [V11,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Drawing.Color>
-; V13 tmp9 [V13,T22] ( 2, 1 ) ubyte -> r8 "Inline return value spill temp"
+; V13 tmp9 [V13,T20] ( 2, 1 ) ubyte -> r8 "Inline return value spill temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V16 tmp12 [V16,T26] ( 2, 1 ) ubyte -> r8 "Inline return value spill temp"
+; V16 tmp12 [V16,T24] ( 2, 1 ) ubyte -> r8 "Inline return value spill temp"
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
@@ -36,32 +36,32 @@
; V25 tmp21 [V25,T12] ( 4, 2 ) ref -> r8 class-hnd "Inline return value spill temp" <System.String>
;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V28 tmp24 [V28,T25] ( 2, 1 ) ref -> r8 class-hnd single-def "Inline return value spill temp" <System.String>
+; V28 tmp24 [V28,T23] ( 2, 1 ) ref -> r8 class-hnd single-def "Inline return value spill temp" <System.String>
;* V29 tmp25 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V30 tmp26 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V31 tmp27 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
-; V32 tmp28 [V32,T17] ( 2, 2 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
+; V32 tmp28 [V32,T15] ( 2, 2 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
;* V33 tmp29 [V33 ] ( 0, 0 ) int -> zero-ref "spilling ret_expr"
-; V34 tmp30 [V34,T01] ( 5, 5 ) ref -> rax class-hnd single-def "dup spill" <ushort[]>
+; V34 tmp30 [V34,T02] ( 5, 5 ) ref -> rax class-hnd single-def "dup spill" <ushort[]>
;* V35 tmp31 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
-;* V36 tmp32 [V36,T33] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V36 tmp32 [V36,T31] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V37 tmp33 [V37 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V38 tmp34 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V39 tmp35 [V39 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V40 tmp36 [V40,T04] ( 4, 4.00) int -> rdi "Inlining Arg"
;* V41 tmp37 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V42 tmp38 [V42,T09] ( 3, 3.00) int -> r12 "Inlining Arg"
-; V43 tmp39 [V43,T19] ( 2, 2.00) byref -> r13 single-def "Inlining Arg"
+; V43 tmp39 [V43,T17] ( 2, 2.00) byref -> r13 single-def "Inlining Arg"
;* V44 tmp40 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V45 tmp41 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V46 tmp42 [V46,T30] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V46 tmp42 [V46,T28] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V47 tmp43 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V48 tmp44 [V48 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V49 tmp45 [V49,T20] ( 2, 1.99) byref -> rdi single-def "Inlining Arg"
+; V49 tmp45 [V49,T18] ( 2, 1.99) byref -> rdi single-def "Inlining Arg"
;* V50 tmp46 [V50 ] ( 0, 0 ) long -> zero-ref "spilling arg"
-; V51 tmp47 [V51,T27] ( 2, 1 ) long -> rsi "Inline return value spill temp"
-; V52 tmp48 [V52,T28] ( 2, 1 ) long -> rsi "Inline return value spill temp"
-; V53 tmp49 [V53,T29] ( 2, 1 ) long -> rsi "Inline return value spill temp"
+; V51 tmp47 [V51,T25] ( 2, 1 ) long -> rsi "Inline return value spill temp"
+; V52 tmp48 [V52,T26] ( 2, 1 ) long -> rsi "Inline return value spill temp"
+; V53 tmp49 [V53,T27] ( 2, 1 ) long -> rsi "Inline return value spill temp"
;* V54 tmp50 [V54 ] ( 0, 0 ) ref -> zero-ref single-def "field V05.name (fldOffset=0x0)" P-INDEP
;* V55 tmp51 [V55 ] ( 0, 0 ) long -> zero-ref "field V05.value (fldOffset=0x8)" P-INDEP
;* V56 tmp52 [V56 ] ( 0, 0 ) short -> zero-ref "field V05.knownColor (fldOffset=0x10)" P-INDEP
@@ -78,26 +78,24 @@
;* V67 tmp63 [V67 ] ( 0, 0 ) long -> zero-ref "field V12.value (fldOffset=0x8)" P-INDEP
;* V68 tmp64 [V68 ] ( 0, 0 ) short -> zero-ref "field V12.knownColor (fldOffset=0x10)" P-INDEP
;* V69 tmp65 [V69 ] ( 0, 0 ) short -> zero-ref "field V12.state (fldOffset=0x12)" P-INDEP
-; V70 tmp66 [V70,T23] ( 3, 1.00) byref -> r12 "field V38._reference (fldOffset=0x0)" P-INDEP
-; V71 tmp67 [V71,T24] ( 3, 1.00) int -> rax "field V38._length (fldOffset=0x8)" P-INDEP
+; V70 tmp66 [V70,T21] ( 3, 1.00) byref -> r12 "field V38._reference (fldOffset=0x0)" P-INDEP
+; V71 tmp67 [V71,T22] ( 3, 1.00) int -> rax "field V38._length (fldOffset=0x8)" P-INDEP
;* V72 tmp68 [V72 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP
;* V73 tmp69 [V73 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
;* V74 tmp70 [V74 ] ( 0, 0 ) byref -> zero-ref single-def "field V41._reference (fldOffset=0x0)" P-INDEP
;* V75 tmp71 [V75 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
;* V76 tmp72 [V76 ] ( 0, 0 ) byref -> zero-ref single-def "field V47._reference (fldOffset=0x0)" P-INDEP
;* V77 tmp73 [V77 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
-; V78 tmp74 [V78,T16] ( 3, 2 ) ref -> rax single-def "V00.[000..008)"
+; V78 tmp74 [V78,T14] ( 3, 2 ) ref -> rax single-def "V00.[000..008)"
; V79 tmp75 [V79,T05] ( 6, 3.50) long -> rbx "V00.[008..016)"
; V80 tmp76 [V80,T06] ( 6, 3.50) short -> rcx "V00.[016..018)"
-; V81 tmp77 [V81,T02] ( 7, 4.50) short -> r15 "V00.[018..020)"
+; V81 tmp77 [V81,T01] ( 9, 5.50) short -> r15 "V00.[018..020)"
;* V82 tmp78 [V82 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V83 tmp79 [V83,T18] ( 2, 2 ) ref -> rdi single-def "arr expr"
-; V84 cse0 [V84,T14] ( 4, 2 ) int -> rdi "CSE - moderate"
+; V83 tmp79 [V83,T16] ( 2, 2 ) ref -> rdi single-def "arr expr"
+; V84 cse0 [V84,T13] ( 4, 2 ) int -> rdi "CSE - moderate"
; V85 cse1 [V85,T07] ( 4, 3.00) ref -> r14 "CSE - moderate"
-; V86 cse2 [V86,T15] ( 4, 2 ) int -> r15 "CSE - moderate"
-; V87 cse3 [V87,T13] ( 4, 2 ) ref -> r14 "CSE - moderate"
-; V88 rat0 [V88,T10] ( 3, 3 ) int -> r13 "ReplaceWithLclVar is creating a new local variable"
-; V89 rat1 [V89,T11] ( 3, 3 ) int -> rcx "ReplaceWithLclVar is creating a new local variable"
+; V86 rat0 [V86,T10] ( 3, 3 ) int -> r13 "ReplaceWithLclVar is creating a new local variable"
+; V87 rat1 [V87,T11] ( 3, 3 ) int -> rcx "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 40
@@ -390,45 +388,42 @@ G_M19421_IG35: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13},
;; size=26 bbWeight=0.50 PerfScore 2.74
G_M19421_IG36: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r13]
- and r15d, 2
xor esi, esi
- test r15d, r15d
+ test r15b, 2
cmovne rsi, rbx
sar rsi, 16
movzx rsi, sil
lea rdi, [rbp-0x50]
- mov r14, 0xD1FFAB1E
- ; gcrRegs +[r14]
- mov rdx, r14
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rdx]
xor esi, esi
- test r15d, r15d
+ test r15b, 2
cmovne rsi, rbx
sar rsi, 8
movzx rsi, sil
lea rdi, [rbp-0x50]
- mov rdx, r14
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rdx]
xor esi, esi
- test r15d, r15d
+ test r15b, 2
cmovne rsi, rbx
movzx rsi, sil
lea rdi, [rbp-0x50]
- mov rdx, r14
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rdx r14]
+ ; gcrRegs -[rdx]
lea rdi, [rbp-0x50]
call [System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this]
; gcrRegs +[rax]
mov r8, rax
; gcrRegs +[r8]
jmp G_M19421_IG03
- ;; size=118 bbWeight=0.50 PerfScore 10.75
+ ;; size=128 bbWeight=0.50 PerfScore 10.50
G_M19421_IG37: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8]
test rbx, rbx
@@ -542,7 +537,7 @@ RWD104 dd G_M19421_IG08 - G_M19421_IG02
dd G_M19421_IG17 - G_M19421_IG02
-Total bytes of code 1019, prolog size 35, PerfScore 105.83, instruction count 216, allocated bytes for code 1019 (MethodHash=f078b422) for method System.Drawing.ColorTranslator:ToHtml(System.Drawing.Color):System.String (FullOpts)
+Total bytes of code 1029, prolog size 35, PerfScore 105.58, instruction count 214, allocated bytes for code 1029 (MethodHash=f078b422) for method System.Drawing.ColorTranslator:ToHtml(System.Drawing.Color):System.String (FullOpts)
; ============================================================
Unwind Info:
+12 (+2.12%) : 176749.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
@@ -56,16 +56,16 @@ G_M11729_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r13d, edx
mov r15d, ecx
;; size=29 bbWeight=1 PerfScore 6.75
-G_M11729_IG02: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M11729_IG02: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x54]
cmp edi, 10
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG16
lea rax, [reloc @RWD00]
mov eax, dword ptr [rax+4*rdi]
lea rcx, G_M11729_IG02
add rax, rcx
jmp rax
- ;; size=30 bbWeight=1 PerfScore 9.00
+ ;; size=34 bbWeight=1 PerfScore 9.00
G_M11729_IG03: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x68], 0
jne SHORT G_M11729_IG04
@@ -84,34 +84,20 @@ G_M11729_IG04: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
mov eax, dword ptr [rax+0x30]
; gcrRegs -[rax]
;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
dec eax
cmp eax, 2
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG16
mov edi, eax
lea rax, [reloc @RWD44]
mov eax, dword ptr [rax+4*rdi]
lea rcx, G_M11729_IG02
add rax, rcx
jmp rax
- ;; size=31 bbWeight=0.50 PerfScore 3.75
-G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r14]
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M11729_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
- pop rbx
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
-G_M11729_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx r14]
+ ;; size=35 bbWeight=0.50 PerfScore 3.75
+G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x5C], -1
- je G_M11729_IG12
+ je G_M11729_IG10
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
mov rax, qword ptr [rdi]
@@ -120,7 +106,7 @@ G_M11729_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400
; gcrRegs -[rdi]
; gcr arg pop 0
test eax, eax
- je G_M11729_IG12
+ je G_M11729_IG10
mov rdi, r14
; gcrRegs +[rdi]
mov esi, r13d
@@ -129,27 +115,27 @@ G_M11729_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400
; gcrRegs -[rdi]
; gcr arg pop 0
test r15d, r15d
- je SHORT G_M11729_IG06
+ je G_M11729_IG16
cmp dword ptr [rbx+0x60], 0
- jne SHORT G_M11729_IG10
+ jne SHORT G_M11729_IG08
mov rdi, gword ptr [rbx+0x38]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M11729_IG09
+ je SHORT G_M11729_IG07
mov rax, rdi
; gcrRegs +[rax]
mov rax, qword ptr [rax]
; gcrRegs -[rax]
mov rcx, 0xD1FFAB1E ; System.Xml.Base64Decoder
cmp rax, rcx
- jne SHORT G_M11729_IG09
+ jne SHORT G_M11729_IG07
mov rax, qword ptr [rax+0x50]
call [rax+0x08]<unknown method>
; gcrRegs -[rdi]
; gcr arg pop 0
- jmp SHORT G_M11729_IG10
- ;; size=100 bbWeight=0.50 PerfScore 18.62
-G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M11729_IG08
+ ;; size=104 bbWeight=0.50 PerfScore 18.62
+G_M11729_IG07: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.Xml.Base64Decoder
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -162,13 +148,13 @@ G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
;; size=27 bbWeight=0.50 PerfScore 1.50
-G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M11729_IG08: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x60]
mov rsi, gword ptr [rbx+0x40]
; gcrRegs +[rsi]
mov rsi, gword ptr [rsi+0x28]
cmp edi, dword ptr [rsi+0x08]
- je G_M11729_IG06
+ je G_M11729_IG16
mov rdi, gword ptr [rbx+0x38]
; gcrRegs +[rdi]
mov rsi, r14
@@ -202,7 +188,7 @@ G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
;; size=92 bbWeight=0.50 PerfScore 23.50
-G_M11729_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M11729_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 16
pop rbx
pop r13
@@ -211,7 +197,7 @@ G_M11729_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
tail.jmp [rax+0x20]<unknown method>
;; size=16 bbWeight=0.50 PerfScore 2.38
-G_M11729_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
+G_M11729_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi] +[r14]
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
@@ -222,7 +208,7 @@ G_M11729_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x90]
;; size=23 bbWeight=0.50 PerfScore 3.38
-G_M11729_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M11729_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 16
pop rbx
pop r13
@@ -231,11 +217,11 @@ G_M11729_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
tail.jmp [rax+0x20]<unknown method>
;; size=16 bbWeight=0.50 PerfScore 2.38
-G_M11729_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
+G_M11729_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rsi rdi]
mov dword ptr [rbx+0x54], 9
;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M11729_IG15: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M11729_IG13: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
mov rsi, r14
@@ -249,7 +235,7 @@ G_M11729_IG15: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
; gcr arg pop 0
mov r14d, eax
test r14d, r14d
- jne SHORT G_M11729_IG16
+ jne SHORT G_M11729_IG14
mov dword ptr [rbx+0x54], 1
mov rdi, rbx
; gcrRegs +[rdi]
@@ -257,9 +243,21 @@ G_M11729_IG15: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
; gcrRegs -[rbx rdi]
; gcr arg pop 0
;; size=50 bbWeight=0.50 PerfScore 7.75
-G_M11729_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M11729_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, r14d
;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M11729_IG15: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 16
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=13 bbWeight=0.50 PerfScore 1.88
+G_M11729_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M11729_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 16
pop rbx
@@ -312,23 +310,23 @@ G_M11729_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=45 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M11729_IG06 - G_M11729_IG02
- dd G_M11729_IG14 - G_M11729_IG02
- dd G_M11729_IG06 - G_M11729_IG02
- dd G_M11729_IG06 - G_M11729_IG02
- dd G_M11729_IG06 - G_M11729_IG02
+RWD00 dd G_M11729_IG16 - G_M11729_IG02
+ dd G_M11729_IG12 - G_M11729_IG02
+ dd G_M11729_IG16 - G_M11729_IG02
+ dd G_M11729_IG16 - G_M11729_IG02
+ dd G_M11729_IG16 - G_M11729_IG02
dd G_M11729_IG03 - G_M11729_IG02
dd G_M11729_IG03 - G_M11729_IG02
dd G_M11729_IG19 - G_M11729_IG02
dd G_M11729_IG19 - G_M11729_IG02
- dd G_M11729_IG15 - G_M11729_IG02
+ dd G_M11729_IG13 - G_M11729_IG02
dd G_M11729_IG19 - G_M11729_IG02
RWD44 dd G_M11729_IG18 - G_M11729_IG02
- dd G_M11729_IG08 - G_M11729_IG02
- dd G_M11729_IG12 - G_M11729_IG02
+ dd G_M11729_IG06 - G_M11729_IG02
+ dd G_M11729_IG10 - G_M11729_IG02
-Total bytes of code 566, prolog size 29, PerfScore 93.00, instruction count 164, allocated bytes for code 566 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
+Total bytes of code 578, prolog size 29, PerfScore 93.00, instruction count 164, allocated bytes for code 578 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
; ============================================================
Unwind Info:
+12 (+2.12%) : 176751.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
@@ -56,16 +56,16 @@ G_M57654_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r13d, edx
mov r15d, ecx
;; size=29 bbWeight=1 PerfScore 6.75
-G_M57654_IG02: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M57654_IG02: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x54]
cmp edi, 10
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG16
lea rax, [reloc @RWD00]
mov eax, dword ptr [rax+4*rdi]
lea rcx, G_M57654_IG02
add rax, rcx
jmp rax
- ;; size=30 bbWeight=1 PerfScore 9.00
+ ;; size=34 bbWeight=1 PerfScore 9.00
G_M57654_IG03: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x68], 0
jne SHORT G_M57654_IG04
@@ -84,34 +84,20 @@ G_M57654_IG04: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
mov eax, dword ptr [rax+0x30]
; gcrRegs -[rax]
;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
dec eax
cmp eax, 2
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG16
mov edi, eax
lea rax, [reloc @RWD44]
mov eax, dword ptr [rax+4*rdi]
lea rcx, G_M57654_IG02
add rax, rcx
jmp rax
- ;; size=31 bbWeight=0.50 PerfScore 3.75
-G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r14]
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M57654_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
- pop rbx
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
-G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx r14]
+ ;; size=35 bbWeight=0.50 PerfScore 3.75
+G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x5C], -1
- je G_M57654_IG12
+ je G_M57654_IG10
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
mov rax, qword ptr [rdi]
@@ -120,7 +106,7 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400
; gcrRegs -[rdi]
; gcr arg pop 0
test eax, eax
- je G_M57654_IG12
+ je G_M57654_IG10
mov rdi, r14
; gcrRegs +[rdi]
mov esi, r13d
@@ -129,27 +115,27 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400
; gcrRegs -[rdi]
; gcr arg pop 0
test r15d, r15d
- je SHORT G_M57654_IG06
+ je G_M57654_IG16
cmp dword ptr [rbx+0x60], 0
- jne SHORT G_M57654_IG10
+ jne SHORT G_M57654_IG08
mov rdi, gword ptr [rbx+0x38]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M57654_IG09
+ je SHORT G_M57654_IG07
mov rax, rdi
; gcrRegs +[rax]
mov rax, qword ptr [rax]
; gcrRegs -[rax]
mov rcx, 0xD1FFAB1E ; System.Xml.BinHexDecoder
cmp rax, rcx
- jne SHORT G_M57654_IG09
+ jne SHORT G_M57654_IG07
mov rax, qword ptr [rax+0x50]
call [rax+0x08]<unknown method>
; gcrRegs -[rdi]
; gcr arg pop 0
- jmp SHORT G_M57654_IG10
- ;; size=100 bbWeight=0.50 PerfScore 18.62
-G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M57654_IG08
+ ;; size=104 bbWeight=0.50 PerfScore 18.62
+G_M57654_IG07: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.Xml.BinHexDecoder
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -162,13 +148,13 @@ G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
;; size=27 bbWeight=0.50 PerfScore 1.50
-G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M57654_IG08: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x60]
mov rsi, gword ptr [rbx+0x40]
; gcrRegs +[rsi]
mov rsi, gword ptr [rsi+0x28]
cmp edi, dword ptr [rsi+0x08]
- je G_M57654_IG06
+ je G_M57654_IG16
mov rdi, gword ptr [rbx+0x38]
; gcrRegs +[rdi]
mov rsi, r14
@@ -202,7 +188,7 @@ G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
;; size=92 bbWeight=0.50 PerfScore 23.50
-G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M57654_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 16
pop rbx
pop r13
@@ -211,7 +197,7 @@ G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
tail.jmp [rax+0x20]<unknown method>
;; size=16 bbWeight=0.50 PerfScore 2.38
-G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
+G_M57654_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi] +[r14]
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
@@ -222,7 +208,7 @@ G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x90]
;; size=23 bbWeight=0.50 PerfScore 3.38
-G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 16
pop rbx
pop r13
@@ -231,11 +217,11 @@ G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
tail.jmp [rax+0x30]<unknown method>
;; size=16 bbWeight=0.50 PerfScore 2.38
-G_M57654_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
+G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rsi rdi]
mov dword ptr [rbx+0x54], 10
;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M57654_IG13: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
mov rsi, r14
@@ -249,7 +235,7 @@ G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
; gcr arg pop 0
mov r14d, eax
test r14d, r14d
- jne SHORT G_M57654_IG16
+ jne SHORT G_M57654_IG14
mov dword ptr [rbx+0x54], 1
mov rdi, rbx
; gcrRegs +[rdi]
@@ -257,9 +243,21 @@ G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
; gcrRegs -[rbx rdi]
; gcr arg pop 0
;; size=50 bbWeight=0.50 PerfScore 7.75
-G_M57654_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57654_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, r14d
;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M57654_IG15: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 16
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=13 bbWeight=0.50 PerfScore 1.88
+G_M57654_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M57654_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 16
pop rbx
@@ -312,23 +310,23 @@ G_M57654_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=45 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG14 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG03 - G_M57654_IG02
- dd G_M57654_IG03 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG15 - G_M57654_IG02
-RWD44 dd G_M57654_IG18 - G_M57654_IG02
- dd G_M57654_IG08 - G_M57654_IG02
+RWD00 dd G_M57654_IG16 - G_M57654_IG02
dd G_M57654_IG12 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG03 - G_M57654_IG02
+ dd G_M57654_IG03 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG13 - G_M57654_IG02
+RWD44 dd G_M57654_IG18 - G_M57654_IG02
+ dd G_M57654_IG06 - G_M57654_IG02
+ dd G_M57654_IG10 - G_M57654_IG02
-Total bytes of code 566, prolog size 29, PerfScore 93.00, instruction count 164, allocated bytes for code 566 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
+Total bytes of code 578, prolog size 29, PerfScore 93.00, instruction count 164, allocated bytes for code 578 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
; ============================================================
Unwind Info:
realworld.run.linux.x64.checked.mch
-25 (-24.04%) : 11448.dasm - FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
@@ -8,8 +8,8 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 7, 5 ) ref -> rbx this class-hnd single-def <FSharp.Compiler.Infos+PropInfo>
-;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <FSharp.Compiler.Infos+PropInfo>
+; V00 this [V00,T00] ( 6, 4.50) ref -> rbx this class-hnd single-def <FSharp.Compiler.Infos+PropInfo>
+;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <FSharp.Compiler.Infos+PropInfo>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
; V03 loc2 [V03,T04] ( 2, 1 ) ref -> rdi class-hnd exact single-def <<unknown class>>
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <FSharp.Compiler.TypedTree+ValRef>
@@ -37,51 +37,39 @@ G_M3270_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
test rax, rax
- jne SHORT G_M3270_IG04
+ je SHORT G_M3270_IG05
;; size=23 bbWeight=1 PerfScore 2.75
G_M3270_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rbx rsi] +[rax]
- ; gcr arg pop 0
- test rax, rax
- jne SHORT G_M3270_IG06
- jmp SHORT G_M3270_IG06
- ;; size=25 bbWeight=0.50 PerfScore 2.38
-G_M3270_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rbx]
mov rdi, gword ptr [rbx+0x18]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M3270_IG06
+ je SHORT G_M3270_IG05
cmp gword ptr [rbx+0x20], 0
- jne SHORT G_M3270_IG06
+ jne SHORT G_M3270_IG05
mov rdi, gword ptr [rdi+0x08]
mov rsi, gword ptr [rbx+0x08]
; gcrRegs +[rsi]
;; size=24 bbWeight=0.50 PerfScore 5.62
-G_M3270_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M3270_IG04: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
tail.jmp [FSharp.Compiler.Infos:ValRef.IsFSharpEventProperty(FSharp.Compiler.TypedTree+ValRef,FSharp.Compiler.TcGlobals+TcGlobals):ubyte]
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 1.62
-G_M3270_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3270_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx rsi rdi]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3270_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M3270_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-Total bytes of code 104, prolog size 11, PerfScore 17.38, instruction count 32, allocated bytes for code 104 (MethodHash=cb2ef339) for method FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
+Total bytes of code 79, prolog size 11, PerfScore 15.00, instruction count 26, allocated bytes for code 79 (MethodHash=cb2ef339) for method FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
-19 (-11.11%) : 24484.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)
@@ -25,10 +25,10 @@
; V14 tmp8 [V14,T05] ( 3, 6 ) ref -> rax "Field obj"
; V15 tmp9 [V15,T01] ( 2, 8 ) byref -> rdx "argument with side effect"
;* V16 cse0 [V16,T12] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V17 cse1 [V17,T08] ( 3, 3 ) long -> [rbp-0x38] spill-single-def "CSE - moderate"
-; V18 rat0 [V18,T10] ( 2, 2 ) long -> rdi "Spilling to split statement for tree"
+; V17 cse1 [V17,T08] ( 2, 2.50) long -> [rbp-0x38] spill-single-def "CSE - moderate"
+;* V18 rat0 [V18,T10] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V19 rat1 [V19,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V20 rat2 [V20,T09] ( 2, 2 ) long -> rdi "fgMakeTemp is creating a new local variable"
+;* V20 rat2 [V20,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
@@ -73,14 +73,8 @@ G_M9562_IG03: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {
mov rax, qword ptr [rbx]
; gcrRegs -[rax]
mov qword ptr [rbp-0x38], rax
- mov rdi, rax
- mov rdi, qword ptr [rdi+0x38]
- mov rdi, qword ptr [rdi]
- mov rdi, qword ptr [rdi+0x38]
- test rdi, rdi
- jne SHORT G_M9562_IG05
jmp SHORT G_M9562_IG05
- ;; size=43 bbWeight=0.50 PerfScore 8.12
+ ;; size=24 bbWeight=0.50 PerfScore 4.38
G_M9562_IG04: ; bbWeight=2, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=8000 {r15}, byref
mov rdi, r13
; gcrRegs +[rdi]
@@ -130,7 +124,7 @@ G_M9562_IG08: ; bbWeight=1, epilog, nogc, extend
ret
;; size=15 bbWeight=1 PerfScore 4.25
-Total bytes of code 171, prolog size 23, PerfScore 84.25, instruction count 56, allocated bytes for code 171 (MethodHash=57bfdaa5) for method Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)
+Total bytes of code 152, prolog size 23, PerfScore 80.50, instruction count 50, allocated bytes for code 152 (MethodHash=57bfdaa5) for method Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)
; ============================================================
Unwind Info:
-37 (-10.82%) : 27239.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
@@ -8,12 +8,12 @@
; 0 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 6, 4 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator>
+; V00 this [V00,T01] ( 6, 4 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator>
; V01 arg1 [V01,T00] ( 6, 5 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator>
-; V02 arg2 [V02,T03] ( 6, 4 ) ubyte -> r15 single-def
+; V02 arg2 [V02,T02] ( 6, 4 ) ubyte -> r15 single-def
; V03 loc0 [V03,T06] ( 4, 2 ) ref -> rdi class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V04 loc1 [V04 ] ( 0, 0 ) byte -> zero-ref
-; V05 loc2 [V05,T01] ( 10, 6 ) int -> rdi single-def
+; V05 loc2 [V05,T03] ( 7, 4.50) int -> rdi single-def
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V08 tmp2 [V08 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -45,48 +45,37 @@ G_M22690_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
;; size=23 bbWeight=1 PerfScore 5.75
G_M22690_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp edi, 0x1115
- je SHORT G_M22690_IG06
+ je SHORT G_M22690_IG05
cmp edi, 0x1116
- je SHORT G_M22690_IG07
+ je SHORT G_M22690_IG06
add edi, -0x1214
cmp edi, 1
- jbe SHORT G_M22690_IG06
- jmp G_M22690_IG17
+ jbe SHORT G_M22690_IG05
+ jmp G_M22690_IG16
;; size=32 bbWeight=0.50 PerfScore 3.00
G_M22690_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp edi, 0x1D14
- jg SHORT G_M22690_IG05
+ jg G_M22690_IG16
cmp edi, 0x1216
- je SHORT G_M22690_IG07
- cmp edi, 0x1D14
- je G_M22690_IG17
- jmp G_M22690_IG17
- ;; size=33 bbWeight=0.50 PerfScore 2.88
-G_M22690_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi]
- cmp edi, 0x1E14
- je G_M22690_IG17
- cmp edi, 0x1F14
- je G_M22690_IG17
- jmp G_M22690_IG17
- ;; size=29 bbWeight=0.50 PerfScore 2.25
-G_M22690_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rsi]
+ je SHORT G_M22690_IG06
+ jmp G_M22690_IG16
+ ;; size=25 bbWeight=0.50 PerfScore 2.25
+G_M22690_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rsi+0x20]
mov rdi, gword ptr [rsi+0x18]
; gcrRegs +[rdi]
- jmp SHORT G_M22690_IG08
+ jmp SHORT G_M22690_IG07
;; size=10 bbWeight=0.50 PerfScore 3.00
-G_M22690_IG07: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M22690_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
mov rdi, gword ptr [rsi+0x28]
; gcrRegs +[rdi]
mov rdi, gword ptr [rdi+0x18]
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M22690_IG08: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M22690_IG07: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
test rdi, rdi
- je G_M22690_IG17
+ je G_M22690_IG16
call [Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:GetEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
; gcrRegs -[rdi] +[rax]
mov rdi, rax
@@ -98,7 +87,7 @@ G_M22690_IG08: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcrRegs -[rdi]
add eax, -9
cmp eax, 3
- ja G_M22690_IG17
+ ja G_M22690_IG16
mov edi, eax
lea rcx, [reloc @RWD00]
mov ecx, dword ptr [rcx+4*rdi]
@@ -106,7 +95,7 @@ G_M22690_IG08: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
add rcx, rsi
jmp rcx
;; size=67 bbWeight=0.50 PerfScore 9.50
-G_M22690_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M22690_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x20]
; gcrRegs +[rdi]
movzx rcx, r15b
@@ -114,13 +103,13 @@ G_M22690_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov edx, 12
cmp dword ptr [rdi], edi
;; size=20 bbWeight=0.50 PerfScore 2.88
-G_M22690_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M22690_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
pop r15
pop rbp
tail.jmp [<unknown method>]
;; size=10 bbWeight=0.50 PerfScore 1.75
-G_M22690_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M22690_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
mov rdi, gword ptr [rbx+0x20]
; gcrRegs +[rdi]
@@ -129,13 +118,13 @@ G_M22690_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov edx, 2
cmp dword ptr [rdi], edi
;; size=20 bbWeight=0.50 PerfScore 2.88
-G_M22690_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M22690_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
pop r15
pop rbp
tail.jmp [<unknown method>]
;; size=10 bbWeight=0.50 PerfScore 1.75
-G_M22690_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M22690_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
mov rdi, gword ptr [rbx+0x20]
; gcrRegs +[rdi]
@@ -144,13 +133,13 @@ G_M22690_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov edx, 5
cmp dword ptr [rdi], edi
;; size=20 bbWeight=0.50 PerfScore 2.88
-G_M22690_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M22690_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
pop r15
pop rbp
tail.jmp [<unknown method>]
;; size=10 bbWeight=0.50 PerfScore 1.75
-G_M22690_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M22690_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
mov rdi, gword ptr [rbx+0x20]
; gcrRegs +[rdi]
@@ -159,26 +148,26 @@ G_M22690_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov edx, 13
cmp dword ptr [rdi], edi
;; size=20 bbWeight=0.50 PerfScore 2.88
-G_M22690_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M22690_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
pop r15
pop rbp
tail.jmp [<unknown method>]
;; size=10 bbWeight=0.50 PerfScore 1.75
-G_M22690_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M22690_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rdi]
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
-RWD00 dd G_M22690_IG11 - G_M22690_IG02
- dd G_M22690_IG09 - G_M22690_IG02
- dd G_M22690_IG13 - G_M22690_IG02
- dd G_M22690_IG15 - G_M22690_IG02
+RWD00 dd G_M22690_IG10 - G_M22690_IG02
+ dd G_M22690_IG08 - G_M22690_IG02
+ dd G_M22690_IG12 - G_M22690_IG02
+ dd G_M22690_IG14 - G_M22690_IG02
-Total bytes of code 342, prolog size 9, PerfScore 52.12, instruction count 93, allocated bytes for code 342 (MethodHash=a8a6a75d) for method Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
+Total bytes of code 305, prolog size 9, PerfScore 49.25, instruction count 86, allocated bytes for code 305 (MethodHash=a8a6a75d) for method Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
; ============================================================
Unwind Info:
-8 (-0.15%) : 8928.dasm - FSharp.Compiler.ConstraintSolver:ResolveOverloading(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,FSharp.Compiler.ConstraintSolver+OptionalTrace,System.String,int,Microsoft.FSharp.Core.FSharpOption1[FSharp.Compiler.TypedTree+TraitConstraintInfo],FSharp.Compiler.MethodCalls+CallerArgs1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.AccessibilityLogic+AccessorDomain,Microsoft.FSharp.Collections.FSharpList1[FSharp.Compiler.MethodCalls+CalledMeth1[FSharp.Compiler.TypedTree+Expr]],ubyte,Microsoft.FSharp.Core.FSharpOption1[FSharp.Compiler.ConstraintSolver+OverallTy]):System.Tuple2[Microsoft.FSharp.Core.FSharpOption1[FSharp.Compiler.MethodCalls+CalledMeth1[FSharp.Compiler.TypedTree+Expr]],FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit]] (FullOpts)
@@ -370,12 +370,12 @@ G_M45942_IG11: ; bbWeight=0.50, gcrefRegs=B00A {rcx rbx r12 r13 r15}, byr
je SHORT G_M45942_IG12
mov rdx, gword ptr [rbp+0x20]
; gcrRegs +[rdx]
- cmp gword ptr [rdx+0x10], 0
- jne G_M45942_IG22
+ mov edi, dword ptr [rdx+0x10]
+ ; gcrRegs -[rdi]
jmp G_M45942_IG22
- ;; size=42 bbWeight=0.50 PerfScore 7.62
+ ;; size=34 bbWeight=0.50 PerfScore 6.62
G_M45942_IG12: ; bbWeight=0.50, gcVars=00000000000000180210080000000000 {V01 V10 V15 V17 V18}, gcrefRegs=300A {rcx rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rdx rdi r15]
+ ; gcrRegs -[rdx r15]
; GC ptr vars -{V11 V13}
mov r15, gword ptr [rcx+0x08]
; gcrRegs +[r15]
@@ -2377,7 +2377,7 @@ RWD32 dq 0049005F0070006Fh, 0069006C0070006Dh
RWD48 dq 006C0070006D0049h, 0074006900630069h
-Total bytes of code 5280, prolog size 64, PerfScore 987.51, instruction count 1074, allocated bytes for code 5280 (MethodHash=444a4c89) for method FSharp.Compiler.ConstraintSolver:ResolveOverloading(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,FSharp.Compiler.ConstraintSolver+OptionalTrace,System.String,int,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TraitConstraintInfo],FSharp.Compiler.MethodCalls+CallerArgs`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.AccessibilityLogic+AccessorDomain,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodCalls+CalledMeth`1[FSharp.Compiler.TypedTree+Expr]],ubyte,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.ConstraintSolver+OverallTy]):System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.MethodCalls+CalledMeth`1[FSharp.Compiler.TypedTree+Expr]],FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit]] (FullOpts)
+Total bytes of code 5272, prolog size 64, PerfScore 986.51, instruction count 1073, allocated bytes for code 5272 (MethodHash=444a4c89) for method FSharp.Compiler.ConstraintSolver:ResolveOverloading(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,FSharp.Compiler.ConstraintSolver+OptionalTrace,System.String,int,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TraitConstraintInfo],FSharp.Compiler.MethodCalls+CallerArgs`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.AccessibilityLogic+AccessorDomain,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodCalls+CalledMeth`1[FSharp.Compiler.TypedTree+Expr]],ubyte,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.ConstraintSolver+OverallTy]):System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.MethodCalls+CalledMeth`1[FSharp.Compiler.TypedTree+Expr]],FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit]] (FullOpts)
; ============================================================
Unwind Info:
-5 (-0.06%) : 19830.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,ubyte):this (FullOpts)
@@ -3115,10 +3115,8 @@ G_M12170_IG126: ; bbWeight=2, gcrefRegs=4806 {rcx rdx r11 r14}, byrefRegs
call [r11]<unknown method>
; gcrRegs -[rdi]
; gcr arg pop 0
- cmp eax, 5
- jne SHORT G_M12170_IG130
jmp SHORT G_M12170_IG130
- ;; size=112 bbWeight=2 PerfScore 81.00
+ ;; size=107 bbWeight=2 PerfScore 78.50
G_M12170_IG127: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
mov rbx, gword ptr [rbp-0x38]
; gcrRegs +[rbx]
@@ -3822,7 +3820,7 @@ RWD00 dq 0070006100720057h, 0045006E006F004Eh, 0070006500630078h, 006E006F0069
RWD32 dq 006300780045006Eh, 0069007400700065h, 00680054006E006Fh, 00730077006F0072h
-Total bytes of code 7798, prolog size 60, PerfScore 1060.08, instruction count 1841, allocated bytes for code 7798 (MethodHash=068ad075) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,ubyte):this (FullOpts)
+Total bytes of code 7793, prolog size 60, PerfScore 1057.58, instruction count 1839, allocated bytes for code 7793 (MethodHash=068ad075) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,ubyte):this (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 22127.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNativeIntegerOverflowingUnaryOperator(int,Microsoft.CodeAnalysis.ConstantValue):System.Object (FullOpts)
@@ -24,21 +24,9 @@ G_M35943_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 3.75
G_M35943_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, 0x1509
- je SHORT G_M35943_IG05
+ jne SHORT G_M35943_IG05
;; size=8 bbWeight=1 PerfScore 1.25
-G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
- pop rbp
- ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax] +[rbx]
+G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -58,6 +46,17 @@ G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov rax, r15
; gcrRegs +[rax]
;; size=44 bbWeight=0.50 PerfScore 5.75
+G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax r15]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M35943_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
pop r15
@@ -65,7 +64,7 @@ G_M35943_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
G_M35943_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax r15]
+ ; gcrRegs -[rax]
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.linux.x64.checked.mch |
26 |
26 |
0 |
0 |
-452 |
+0 |
| benchmarks.run_pgo.linux.x64.checked.mch |
270 |
175 |
7 |
88 |
-5,051 |
+71 |
| benchmarks.run_tiered.linux.x64.checked.mch |
15 |
11 |
4 |
0 |
-289 |
+28 |
| coreclr_tests.run.linux.x64.checked.mch |
447 |
249 |
15 |
183 |
-6,413 |
+77 |
| libraries.crossgen2.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries.pmi.linux.x64.checked.mch |
205 |
193 |
6 |
6 |
-3,355 |
+86 |
| libraries_tests.run.linux.x64.Release.mch |
1,280 |
1,092 |
36 |
152 |
-28,132 |
+597 |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
249 |
236 |
6 |
7 |
-3,742 |
+42 |
| realworld.run.linux.x64.checked.mch |
58 |
57 |
0 |
1 |
-1,056 |
+0 |
| smoke_tests.nativeaot.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
2,550 |
2,039 |
74 |
437 |
-48,490 |
+901 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.x64.checked.mch |
34,975 |
3,135 |
31,840 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.linux.x64.checked.mch |
156,554 |
60,225 |
96,329 |
13 (0.01%) |
13 (0.01%) |
| benchmarks.run_tiered.linux.x64.checked.mch |
56,298 |
42,308 |
13,990 |
0 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.linux.x64.checked.mch |
598,040 |
355,280 |
242,760 |
10 (0.00%) |
10 (0.00%) |
| libraries.crossgen2.linux.x64.checked.mch |
1,930 |
0 |
1,930 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.linux.x64.checked.mch |
296,878 |
6 |
296,872 |
0 (0.00%) |
0 (0.00%) |
| libraries_tests.run.linux.x64.Release.mch |
766,353 |
498,383 |
267,970 |
111 (0.01%) |
111 (0.01%) |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
305,396 |
21,912 |
283,484 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.linux.x64.checked.mch |
33,215 |
49 |
33,166 |
0 (0.00%) |
0 (0.00%) |
| smoke_tests.nativeaot.linux.x64.checked.mch |
64 |
0 |
64 |
0 (0.00%) |
0 (0.00%) |
|
2,249,703 |
981,298 |
1,268,405 |
134 (0.01%) |
134 (0.01%) |
jit-analyze output
benchmarks.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13723744 (overridden on cmd)
Total bytes of diff: 13723292 (overridden on cmd)
Total bytes of delta: -452 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 26 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
benchmarks.run_pgo.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 69144788 (overridden on cmd)
Total bytes of diff: 69139808 (overridden on cmd)
Total bytes of delta: -4980 (-0.01 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 88 unchanged.
benchmarks.run_tiered.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15897809 (overridden on cmd)
Total bytes of diff: 15897548 (overridden on cmd)
Total bytes of delta: -261 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 15 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
coreclr_tests.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 403316719 (overridden on cmd)
Total bytes of diff: 403310383 (overridden on cmd)
Total bytes of delta: -6336 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 77 unchanged.
libraries.pmi.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 60405907 (overridden on cmd)
Total bytes of diff: 60402638 (overridden on cmd)
Total bytes of delta: -3269 (-0.01 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 60 unchanged.
libraries_tests.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 348249945 (overridden on cmd)
Total bytes of diff: 348222410 (overridden on cmd)
Total bytes of delta: -27535 (-0.01 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 90 unchanged.
librariestestsnotieredcompilation.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 132684063 (overridden on cmd)
Total bytes of diff: 132680363 (overridden on cmd)
Total bytes of delta: -3700 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 70 unchanged.
realworld.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13212110 (overridden on cmd)
Total bytes of diff: 13211054 (overridden on cmd)
Total bytes of delta: -1056 (-0.01 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 51 unchanged.
osx arm64
Diffs are based on 2,029,386 contexts (927,368 MinOpts, 1,102,018 FullOpts).
MISSED contexts: 109 (0.01%)
Overall (-35,384 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.osx.arm64.checked.mch |
11,185,284 |
-480 |
| benchmarks.run_pgo.osx.arm64.checked.mch |
34,533,064 |
-4,248 |
| benchmarks.run_tiered.osx.arm64.checked.mch |
15,508,464 |
-228 |
| coreclr_tests.run.osx.arm64.checked.mch |
483,586,020 |
-5,420 |
| libraries.pmi.osx.arm64.checked.mch |
80,207,064 |
-3,432 |
| libraries_tests.run.osx.arm64.Release.mch |
313,700,576 |
-16,616 |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
163,153,084 |
-3,688 |
| realworld.run.osx.arm64.checked.mch |
15,075,948 |
-1,272 |
FullOpts (-35,384 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.osx.arm64.checked.mch |
11,184,656 |
-480 |
| benchmarks.run_pgo.osx.arm64.checked.mch |
18,159,716 |
-4,248 |
| benchmarks.run_tiered.osx.arm64.checked.mch |
4,004,192 |
-228 |
| coreclr_tests.run.osx.arm64.checked.mch |
153,413,252 |
-5,420 |
| libraries.pmi.osx.arm64.checked.mch |
80,085,936 |
-3,432 |
| libraries_tests.run.osx.arm64.Release.mch |
111,962,988 |
-16,616 |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
149,999,392 |
-3,688 |
| realworld.run.osx.arm64.checked.mch |
14,511,996 |
-1,272 |
Example diffs
benchmarks.run.osx.arm64.checked.mch
-24 (-12.50%) : 22073.dasm - System.Collections.IterateForEach`1[System.Canon]:ImmutableStack():System.Canon:this (FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
; V01 loc0 [V01,T04] ( 3, 4 ) ref -> x20 ld-addr-op class-hnd <System.__Canon>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Collections.Immutable.ImmutableStack`1[System.__Canon]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def <System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]>
@@ -23,22 +23,21 @@
; V12 tmp7 [V12,T06] ( 2, 3 ) ref -> x21 "field V03._originalStack (fldOffset=0x0)" P-INDEP
; V13 tmp8 [V13,T00] ( 8, 27 ) ref -> x22 "field V03._remainingStack (fldOffset=0x8)" P-INDEP
;* V14 cse0 [V14,T07] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V15 rat0 [V15,T03] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
+;* V15 rat0 [V15,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V16 rat1 [V16,T05] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V17 rat2 [V17,T02] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V17 rat2 [V17,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M64146_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
mov fp, sp
- str x0, [fp, #0x18]
mov x19, x0
; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M64146_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=1 PerfScore 4.00
+G_M64146_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x20, xzr
; gcrRegs +[x20]
ldr x0, [x19, #0xA0]
@@ -54,16 +53,10 @@ G_M64146_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x21]
mov x22, x1
; gcrRegs +[x22]
- ldr x0, [x19]
- ; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x20]
- cbnz x0, G_M64146_IG04
b G_M64146_IG04
- ;; size=64 bbWeight=1 PerfScore 27.00
+ ;; size=44 bbWeight=1 PerfScore 14.00
G_M64146_IG03: ; bbWeight=2, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x0-x1 x20]
mov x0, x22
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableStack`1[System.__Canon]:Peek():System.__Canon:this
@@ -110,13 +103,13 @@ G_M64146_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 0.50
G_M64146_IG09: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-Total bytes of code 192, prolog size 20, PerfScore 113.50, instruction count 48, allocated bytes for code 192 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
+Total bytes of code 168, prolog size 16, PerfScore 99.50, instruction count 42, allocated bytes for code 168 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -127,7 +120,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -136,8 +129,8 @@ Unwind Info:
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
E6 save_next
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
E4 end
-28 (-7.61%) : 5495.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
@@ -38,8 +38,8 @@ G_M23091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1]
ldr w14, [x19, #0x60]
- cbnz w14, G_M23091_IG08
- cbz x1, G_M23091_IG09
+ cbnz w14, G_M23091_IG07
+ cbz x1, G_M23091_IG08
add x14, x1, #172
; byrRegs +[x14]
mov w15, #1
@@ -47,7 +47,7 @@ G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180
mov w0, w12
casal w0, w15, [x14]
str w0, [fp, #0x24] // [V07 tmp3]
- cbnz w0, G_M23091_IG10
+ cbnz w0, G_M23091_IG09
mov w14, #4
; byrRegs -[x14]
str w14, [x1, #0x94]
@@ -59,21 +59,10 @@ G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180
; gcrRegs -[x15]
; byrRegs -[x14]
ldrb w0, [x1, #0xBA]
- cbnz w0, G_M23091_IG04
+ cbz w0, G_M23091_IG04
;; size=68 bbWeight=1 PerfScore 19.50
-G_M23091_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M23091_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- ldr x0, [x0]
- ; gcrRegs +[x0]
- ldrb w0, [x0, #0x9D]
- ; gcrRegs -[x0]
- cbz w0, G_M23091_IG05
- b G_M23091_IG05
- ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M23091_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -91,7 +80,7 @@ G_M23091_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x0-x1 x15]
; byrRegs -[x14]
;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M23091_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M23091_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
ldr x0, [fp, #0x18] // [V01 arg1]
@@ -106,17 +95,17 @@ G_M23091_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x0-x2 x19-x20]
; gcr arg pop 0
;; size=32 bbWeight=1 PerfScore 11.00
-G_M23091_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
cmp w0, #0xD1FFAB1E
cset x0, eq
;; size=8 bbWeight=1 PerfScore 1.00
-G_M23091_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M23091_IG06: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x40
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M23091_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
@@ -129,7 +118,7 @@ G_M23091_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M23091_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23091_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -146,7 +135,7 @@ G_M23091_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG09: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1]
; GC ptr vars +{V00 V01}
mov x0, x1
@@ -163,14 +152,14 @@ G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
; gcr arg pop 0
brk_unix #0
;; size=32 bbWeight=0 PerfScore 0.00
-G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
add x3, fp, #64
str x3, [sp, #0x18]
;; size=16 bbWeight=0 PerfScore 0.00
-G_M23091_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -186,7 +175,7 @@ G_M23091_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
brk_unix #0
;; size=32 bbWeight=0 PerfScore 0.00
-Total bytes of code 368, prolog size 32, PerfScore 50.00, instruction count 92, allocated bytes for code 368 (MethodHash=03bba5cc) for method System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
+Total bytes of code 340, prolog size 32, PerfScore 45.25, instruction count 85, allocated bytes for code 340 (MethodHash=03bba5cc) for method System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -197,7 +186,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -230,4 +219,4 @@ Unwind Info:
*************** EH table for System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M23091_IG05..G_M23091_IG06) handled by [G_M23091_IG11..END) (class: 1000001)
+EH#0: try [G_M23091_IG04..G_M23091_IG05) handled by [G_M23091_IG10..END) (class: 1000001)
-28 (-7.61%) : 5476.dasm - System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
@@ -38,8 +38,8 @@ G_M29540_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1]
ldr w14, [x19, #0x60]
- cbnz w14, G_M29540_IG08
- cbz x1, G_M29540_IG09
+ cbnz w14, G_M29540_IG07
+ cbz x1, G_M29540_IG08
add x14, x1, #172
; byrRegs +[x14]
mov w15, #1
@@ -47,7 +47,7 @@ G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180
mov w0, w12
casal w0, w15, [x14]
str w0, [fp, #0x24] // [V07 tmp3]
- cbnz w0, G_M29540_IG10
+ cbnz w0, G_M29540_IG09
mov w14, #7
; byrRegs -[x14]
str w14, [x1, #0x94]
@@ -59,21 +59,10 @@ G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180
; gcrRegs -[x15]
; byrRegs -[x14]
ldrb w0, [x1, #0xBA]
- cbnz w0, G_M29540_IG04
+ cbz w0, G_M29540_IG04
;; size=68 bbWeight=1 PerfScore 19.50
-G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- ldr x0, [x0]
- ; gcrRegs +[x0]
- ldrb w0, [x0, #0x9D]
- ; gcrRegs -[x0]
- cbz w0, G_M29540_IG05
- b G_M29540_IG05
- ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -91,7 +80,7 @@ G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x0-x1 x15]
; byrRegs -[x14]
;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M29540_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M29540_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
ldr x0, [fp, #0x18] // [V01 arg1]
@@ -106,17 +95,17 @@ G_M29540_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x0-x2 x19-x20]
; gcr arg pop 0
;; size=32 bbWeight=1 PerfScore 11.00
-G_M29540_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
cmp w0, #0xD1FFAB1E
cset x0, eq
;; size=8 bbWeight=1 PerfScore 1.00
-G_M29540_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M29540_IG06: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x40
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M29540_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
@@ -129,7 +118,7 @@ G_M29540_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M29540_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29540_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -146,7 +135,7 @@ G_M29540_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG09: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1]
; GC ptr vars +{V00 V01}
mov x0, x1
@@ -163,14 +152,14 @@ G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
; gcr arg pop 0
brk_unix #0
;; size=32 bbWeight=0 PerfScore 0.00
-G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
add x3, fp, #64
str x3, [sp, #0x18]
;; size=16 bbWeight=0 PerfScore 0.00
-G_M29540_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -186,7 +175,7 @@ G_M29540_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
brk_unix #0
;; size=32 bbWeight=0 PerfScore 0.00
-Total bytes of code 368, prolog size 32, PerfScore 50.00, instruction count 92, allocated bytes for code 368 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
+Total bytes of code 340, prolog size 32, PerfScore 45.25, instruction count 85, allocated bytes for code 340 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -197,7 +186,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -230,4 +219,4 @@ Unwind Info:
*************** EH table for System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M29540_IG05..G_M29540_IG06) handled by [G_M29540_IG11..END) (class: 1000001)
+EH#0: try [G_M29540_IG04..G_M29540_IG05) handled by [G_M29540_IG10..END) (class: 1000001)
-24 (-0.36%) : 19063.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 149 single block inlinees; 52 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 20, 11 ) ref -> x22 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Binder>
+; V00 this [V00,T06] ( 20, 11 ) ref -> x22 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Binder>
; V01 arg1 [V01,T01] ( 33, 17.50) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
; V02 arg2 [V02,T00] ( 53, 18 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
; V03 arg3 [V03,T14] ( 5, 3.50) ushort -> x24 single-def
; V04 arg4 [V04,T09] ( 10, 6 ) ubyte -> x23 single-def
; V05 arg5 [V05,T02] ( 32, 17 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag>
-; V06 loc0 [V06,T06] ( 26, 13 ) ubyte -> x25
+; V06 loc0 [V06,T08] ( 23, 11.50) ubyte -> x25
;* V07 loc1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.BoundNamespaceExpression>
;* V08 loc2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
;* V09 loc3 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.BoundUnconvertedAddressOfOperator>
@@ -574,7 +574,7 @@
; V563 cse0 [V563,T186] ( 3, 1.50) ref -> x2 "CSE - conservative"
; V564 cse1 [V564,T187] ( 3, 1.50) ref -> x2 "CSE - conservative"
; V565 cse2 [V565,T04] ( 31, 15.50) int -> x26 multi-def "CSE - aggressive"
-; V566 cse3 [V566,T08] ( 24, 12 ) long -> x27 multi-def "CSE - aggressive"
+; V566 cse3 [V566,T07] ( 24, 12 ) long -> x27 multi-def "CSE - aggressive"
; V567 rat0 [V567,T56] ( 3, 3 ) int -> x25 "ReplaceWithLclVar is creating a new local variable"
; V568 rat1 [V568,T57] ( 3, 3 ) int -> x28 "ReplaceWithLclVar is creating a new local variable"
; V569 rat2 [V569,T58] ( 3, 3 ) int -> x7 "ReplaceWithLclVar is creating a new local variable"
@@ -624,7 +624,7 @@ G_M42189_IG02: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg
ldr wzr, [x0]
blr x1
; gcrRegs -[x0]
- cbnz w0, G_M42189_IG168
+ cbnz w0, G_M42189_IG167
;; size=32 bbWeight=1 PerfScore 10.00
G_M42189_IG03: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x12]
@@ -644,7 +644,7 @@ G_M42189_IG04: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
cmp x27, x0
- bne G_M42189_IG170
+ bne G_M42189_IG169
ldr x4, [x19, #0x40]
; gcrRegs +[x4]
ldrb w4, [x4, #0x12]
@@ -670,7 +670,7 @@ G_M42189_IG05: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
ldr x6, [x6]
blr x6
; gcrRegs -[x0-x2 x5 x19-x22]
- b G_M42189_IG150
+ b G_M42189_IG149
;; size=52 bbWeight=0.50 PerfScore 5.00
G_M42189_IG06: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x21-x22]
@@ -679,7 +679,7 @@ G_M42189_IG06: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
cmp x27, x0
- bne G_M42189_IG171
+ bne G_M42189_IG170
mov x1, x19
; gcrRegs +[x1]
uxth w26, w24
@@ -694,7 +694,7 @@ G_M42189_IG06: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
ldr x4, [x4]
blr x4
; gcrRegs -[x0-x1 x3 x19 x21-x22]
- b G_M42189_IG150
+ b G_M42189_IG149
;; size=68 bbWeight=0.50 PerfScore 7.50
G_M42189_IG07: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x22]
@@ -712,7 +712,7 @@ G_M42189_IG07: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x0-x1 x19-x22]
- b G_M42189_IG150
+ b G_M42189_IG149
;; size=48 bbWeight=0.50 PerfScore 5.00
G_M42189_IG08: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x22]
@@ -860,37 +860,27 @@ G_M42189_IG21: ; bbWeight=0.50, gcrefRegs=200004 {x2 x21}, byrefRegs=0000
ldr x3, [x3]
blr x3
; gcrRegs -[x0 x2 x21]
- b G_M42189_IG168
+ b G_M42189_IG167
;; size=32 bbWeight=0.50 PerfScore 3.75
G_M42189_IG22: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x22]
ldrb w25, [x19, #0x12]
cmp w25, #48
- bhi G_M42189_IG27
- cmp w25, #12
- bhi G_M42189_IG24
- cmp w25, #6
- bhi G_M42189_IG23
- cmp w25, #4
- ccmp w25, #6, z, ne
- beq G_M42189_IG165
- b G_M42189_IG165
- ;; size=44 bbWeight=0.50 PerfScore 5.25
-G_M42189_IG23: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19 x22]
- cmp w25, #10
- beq G_M42189_IG161
- cmp w25, #12
- beq G_M42189_IG165
- b G_M42189_IG165
- ;; size=20 bbWeight=0.50 PerfScore 2.00
-G_M42189_IG24: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19 x22]
- cmp w25, #35
bhi G_M42189_IG26
+ cmp w25, #12
+ bhi G_M42189_IG23
+ cmp w25, #6
+ bls G_M42189_IG164
+ cmp w25, #10
+ beq G_M42189_IG160
+ b G_M42189_IG164
+ ;; size=40 bbWeight=0.50 PerfScore 5.00
+G_M42189_IG23: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+ cmp w25, #35
+ bhi G_M42189_IG25
sub w28, w25, #22
cmp w28, #10
- bhi G_M42189_IG25
+ bhi G_M42189_IG24
mov w0, w28
adr x1, [@RWD16]
ldr w1, [x1, x0, LSL #2]
@@ -898,25 +888,25 @@ G_M42189_IG24: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
add x1, x1, x2
br x1
;; size=44 bbWeight=0.50 PerfScore 4.75
-G_M42189_IG25: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG24: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19 x22]
cmp w25, #35
- beq G_M42189_IG128
- b G_M42189_IG165
+ beq G_M42189_IG127
+ b G_M42189_IG164
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M42189_IG26: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG25: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x22]
cmp w25, #42
- beq G_M42189_IG164
+ beq G_M42189_IG163
cmp w25, #47
- beq G_M42189_IG160
+ beq G_M42189_IG159
cmp w25, #48
- bne G_M42189_IG165
+ bne G_M42189_IG164
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
cmp x27, x0
- bne G_M42189_IG172
+ bne G_M42189_IG171
ldr x3, [x19, #0x28]
; gcrRegs +[x3]
mov w2, w26
@@ -932,25 +922,25 @@ G_M42189_IG26: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
ldr x5, [x5]
blr x5
; gcrRegs -[x0-x1 x3-x4 x19-x22]
- b G_M42189_IG150
+ b G_M42189_IG149
;; size=88 bbWeight=0.50 PerfScore 9.50
-G_M42189_IG27: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG26: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x22]
cmp w25, #151
- bhi G_M42189_IG30
+ bhi G_M42189_IG29
cmp w25, #110
- bhi G_M42189_IG28
+ bhi G_M42189_IG27
cmp w25, #70
- beq G_M42189_IG116
+ beq G_M42189_IG115
cmp w25, #110
- bne G_M42189_IG165
- tbz w26, #5, G_M42189_IG142
- b G_M42189_IG139
+ bne G_M42189_IG164
+ tbz w26, #5, G_M42189_IG141
+ b G_M42189_IG138
;; size=40 bbWeight=0.50 PerfScore 4.00
-G_M42189_IG28: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG27: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
sub w7, w25, #114
cmp w7, #3
- bhi G_M42189_IG29
+ bhi G_M42189_IG28
mov w0, w7
adr x1, [@RWD60]
ldr w1, [x1, x0, LSL #2]
@@ -958,25 +948,25 @@ G_M42189_IG28: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
add x1, x1, x2
br x1
;; size=36 bbWeight=0.50 PerfScore 4.00
-G_M42189_IG29: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG28: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19 x22]
cmp w25, #151
- beq G_M42189_IG128
- b G_M42189_IG165
+ beq G_M42189_IG127
+ b G_M42189_IG164
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M42189_IG30: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG29: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x22]
cmp w25, #159
- bhi G_M42189_IG31
+ bhi G_M42189_IG30
cmp w25, #157
- beq G_M42189_IG80
+ beq G_M42189_IG79
cmp w25, #159
- bne G_M42189_IG165
+ bne G_M42189_IG164
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
cmp x27, x0
- bne G_M42189_IG173
+ bne G_M42189_IG172
mov x2, x19
; gcrRegs +[x2]
ldr x1, [x2, #0x28]
@@ -996,17 +986,17 @@ G_M42189_IG30: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
ldr x7, [x7]
blr x7
; gcrRegs -[x0-x3 x6 x19-x22]
- b G_M42189_IG150
+ b G_M42189_IG149
;; size=100 bbWeight=0.50 PerfScore 11.50
-G_M42189_IG31: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG30: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x22]
cmp w25, #173
- beq G_M42189_IG128
+ beq G_M42189_IG127
cmp w25, #177
- beq G_M42189_IG161
+ beq G_M42189_IG160
...
-32 (-0.24%) : 12443.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
@@ -60,7 +60,7 @@
; V49 tmp36 [V49,T151] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
; V50 tmp37 [V50,T152] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
; V51 tmp38 [V51,T153] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
-; V52 tmp39 [V52,T326] ( 3, 1.50) long -> x0 single-def "Inline stloc first use temp"
+; V52 tmp39 [V52,T326] ( 2, 1 ) long -> x0 single-def "Inline stloc first use temp"
;* V53 tmp40 [V53,T327] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V54 tmp41 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V55 tmp42 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
@@ -108,7 +108,7 @@
;* V97 tmp84 [V97 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V98 tmp85 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V99 tmp86 [V99 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V100 tmp87 [V100,T114] ( 3, 10 ) long -> x0 "Inline stloc first use temp"
+; V100 tmp87 [V100,T114] ( 2, 8 ) long -> x0 "Inline stloc first use temp"
;* V101 tmp88 [V101,T121] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V102 tmp89 [V102 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V103 tmp90 [V103 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
@@ -513,7 +513,7 @@ G_M11467_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x2, [x23, #0x10]
blr x2
; gcrRegs -[x0-x1 x19]
- b G_M11467_IG260
+ b G_M11467_IG258
;; size=40 bbWeight=0.50 PerfScore 8.00
G_M11467_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x21]
@@ -568,13 +568,13 @@ G_M11467_IG05: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
; gcrRegs -[x0-x1]
ldr w0, [x24, #0x08]
cmp w0, #0
- blt G_M11467_IG262
+ blt G_M11467_IG260
sxtw w25, w0
cmp w0, #0
ble G_M11467_IG44
ldr w0, [x24, #0x08]
cmp w0, #0
- bls G_M11467_IG261
+ bls G_M11467_IG259
ldrb w26, [x24, #0x10]
mov w0, #0xD1FFAB1E
cmp w26, w0
@@ -754,7 +754,7 @@ G_M11467_IG17: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
ldr x4, [x4]
; gcrRegs +[x4]
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x26, x4, #16
; byrRegs +[x26]
ldrh w4, [x26, w2, UXTW #2]
@@ -770,7 +770,7 @@ G_M11467_IG18: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
; gcrRegs +[x4]
add w5, w2, #1
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x26, x4, #16
; byrRegs +[x26]
add w4, w2, #1
@@ -787,7 +787,7 @@ G_M11467_IG19: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
; gcrRegs +[x4]
add w5, w2, #2
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x26, x4, #16
; byrRegs +[x26]
add w2, w2, #2
@@ -803,7 +803,7 @@ G_M11467_IG20: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
ldr x4, [x2]
; gcrRegs +[x4]
cmp w1, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x26, x4, #16
; byrRegs +[x26]
ldrh w2, [x26, w1, UXTW #2]
@@ -819,7 +819,7 @@ G_M11467_IG21: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
; gcrRegs +[x4]
add w2, w1, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x26, x4, #16
; byrRegs +[x26]
add w2, w1, #1
@@ -839,7 +839,7 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
add w4, w1, #2
; gcrRegs -[x4]
cmp w4, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x26, x2, #16
; byrRegs +[x26]
add w2, w1, #2
@@ -847,18 +847,18 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
ldrh w2, [x26, w2, UXTW #2]
strh w2, [x21, #0x1C]
cmp w0, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
ldrh w2, [x26, w0, UXTW #2]
strh w2, [x21, #0x1E]
add w2, w0, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add w2, w0, #1
ldrh w2, [x26, w2, UXTW #2]
strh w2, [x21, #0x20]
add w2, w0, #2
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add w2, w0, #2
ldrh w2, [x26, w2, UXTW #2]
strh w2, [x21, #0x22]
@@ -882,7 +882,7 @@ G_M11467_IG24: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
beq G_M11467_IG44
ldr w1, [x24, #0x08]
cmp w26, w1
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x1, x24, #16
; byrRegs +[x1]
ldrb w28, [x1, w26, UXTW #2]
@@ -1088,7 +1088,7 @@ G_M11467_IG37: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
ldr x4, [x4]
; gcrRegs +[x4]
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1104,7 +1104,7 @@ G_M11467_IG38: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
; gcrRegs +[x4]
add w5, w2, #1
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1121,7 +1121,7 @@ G_M11467_IG39: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
; gcrRegs +[x4]
add w5, w2, #2
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1137,7 +1137,7 @@ G_M11467_IG40: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
ldr x4, [x2]
; gcrRegs +[x4]
cmp w1, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1153,7 +1153,7 @@ G_M11467_IG41: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
; gcrRegs +[x4]
add w2, w1, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1173,7 +1173,7 @@ G_M11467_IG42: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
add w4, w1, #2
; gcrRegs -[x4]
cmp w4, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x4, x2, #16
; byrRegs +[x4]
add w2, w1, #2
@@ -1181,18 +1181,18 @@ G_M11467_IG42: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
ldrh w2, [x4, w2, UXTW #2]
strh w2, [x21, #0x1C]
cmp w0, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
ldrh w2, [x4, w0, UXTW #2]
strh w2, [x21, #0x1E]
add w2, w0, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add w2, w0, #1
ldrh w2, [x4, w2, UXTW #2]
strh w2, [x21, #0x20]
add w2, w0, #2
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add w2, w0, #2
ldrh w2, [x4, w2, UXTW #2]
strh w2, [x21, #0x22]
@@ -1249,7 +1249,7 @@ G_M11467_IG45: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
ldr x2, [x23, #0x10]
blr x2
; gcrRegs -[x0-x1 x27]
- b G_M11467_IG91
+ b G_M11467_IG89
;; size=68 bbWeight=0.50 PerfScore 11.50
G_M11467_IG46: ; bbWeight=0.50, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x27]
@@ -1265,34 +1265,28 @@ G_M11467_IG46: ; bbWeight=0.50, gcrefRegs=8380000 {x19 x20 x21 x27}, byre
; gcrRegs -[x0-x1]
ldr w0, [x27, #0x08]
cmp w0, #0
- blt G_M11467_IG262
+ blt G_M11467_IG260
sxtw w26, w0
cmp w0, #0
- ble G_M11467_IG90
+ ble G_M11467_IG88
ldr w0, [x27, #0x08]
cmp w0, #0
- bls G_M11467_IG261
+ bls G_M11467_IG259
ldr x24, [x27, #0x10]
and x0, x24, #0xD1FFAB1E
- cbz x0, G_M11467_IG47
- mov x1, #0xD1FFAB1E
- cmp x0, x1
- beq G_M11467_IG48
- b G_M11467_IG48
- ;; size=92 bbWeight=0.50 PerfScore 13.75
-G_M11467_IG47: ; bbWeight=0.50, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=0000 {}, byref
+ cbnz x0, G_M11467_IG47
and x0, x24, #0xD1FFAB1E
orr x24, x0, #0xD1FFAB1E
- ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M11467_IG48: ; bbWeight=0.50, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=0000 {}, byref, isz
+ ;; size=84 bbWeight=0.50 PerfScore 12.75
+G_M11467_IG47: ; bbWeight=0.50, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=0000 {}, byref, isz
and x0, x24, #0xD1FFAB1E
- cbz x0, G_M11467_IG49
+ cbz x0, G_M11467_IG48
mov x1, #0xD1FFAB1E
cmp x0, x1
- bne G_M11467_IG49
- b G_M11467_IG51
...
-8 (-0.20%) : 15130.dasm - System.IO.Strategies.BufferedFileStreamStrategy+d__37:MoveNext():this (FullOpts)
@@ -30,15 +30,15 @@
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V20 tmp1 [V20 ] ( 0, 0 ) int -> zero-ref "dup spill"
; V21 tmp2 [V21 ] ( 8, 16 ) struct (16) [fp+0x38] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
-; V22 tmp3 [V22,T36] ( 3, 6 ) ref -> x4 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V22 tmp3 [V22,T35] ( 3, 6 ) ref -> x4 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V23 tmp4 [V23 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask`1[int]>
-; V24 tmp5 [V24,T44] ( 3, 6 ) int -> x1 "impAppendStmt"
+; V24 tmp5 [V24,T43] ( 3, 6 ) int -> x1 "impAppendStmt"
;* V25 tmp6 [V25 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V26 tmp7 [V26 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V27 tmp8 [V27 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask`1[int]>
;* V28 tmp9 [V28 ] ( 0, 0 ) int -> zero-ref "dup spill"
; V29 tmp10 [V29 ] ( 5, 10 ) struct (16) [fp+0x28] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
-; V30 tmp11 [V30,T37] ( 3, 6 ) ref -> x5 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V30 tmp11 [V30,T36] ( 3, 6 ) ref -> x5 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V31 tmp12 [V31 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask>
;* V32 tmp13 [V32 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V33 tmp14 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
@@ -48,7 +48,7 @@
; V37 tmp18 [V37,T128] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V38 tmp19 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp20 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V40 tmp21 [V40,T38] ( 3, 6 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V40 tmp21 [V40,T37] ( 3, 6 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V41 tmp22 [V41 ] ( 0, 0 ) ref -> zero-ref
; V42 tmp23 [V42,T96] ( 2, 2 ) ref -> x14 single-def
;* V43 tmp24 [V43,T117] ( 0, 0 ) int -> zero-ref
@@ -66,14 +66,14 @@
;* V55 tmp36 [V55 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V56 tmp37 [V56 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V57 tmp38 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
-; V58 tmp39 [V58,T39] ( 3, 6 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V58 tmp39 [V58,T38] ( 3, 6 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
; V59 tmp40 [V59,T68] ( 2, 4 ) int -> x2 "Inlining Arg"
;* V60 tmp41 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V61 tmp42 [V61,T04] ( 12, 12 ) int -> x20 "Inline return value spill temp"
-; V62 tmp43 [V62,T45] ( 3, 6 ) int -> x3 "Inlining Arg"
-; V63 tmp44 [V63,T46] ( 3, 6 ) int -> x1 "Inlining Arg"
+; V62 tmp43 [V62,T44] ( 3, 6 ) int -> x3 "Inlining Arg"
+; V63 tmp44 [V63,T45] ( 3, 6 ) int -> x1 "Inlining Arg"
; V64 tmp45 [V64,T11] ( 4, 8 ) ref -> x1 class-hnd single-def "Inlining Arg" <ubyte[]>
-; V65 tmp46 [V65,T33] ( 4, 6 ) int -> x2 "Inlining Arg"
+; V65 tmp46 [V65,T46] ( 3, 6 ) int -> x2 "Inlining Arg"
;* V66 tmp47 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V67 tmp48 [V67 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
; V68 tmp49 [V68,T27] ( 6, 6 ) byref -> x24 "Inline stloc first use temp"
@@ -196,8 +196,8 @@
; V185 tmp166 [V185,T75] ( 2, 4 ) long -> x2 "Inlining Arg"
; V186 tmp167 [V186,T05] ( 6, 12 ) ref -> x0 class-hnd "Inlining Arg" <System.Threading.SemaphoreSlim>
; V187 tmp168 [V187,T08] ( 5, 10 ) byref -> x19 single-def "Inlining Arg"
-; V188 tmp169 [V188,T40] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox[int]>
-; V189 tmp170 [V189,T41] ( 3, 6 ) byref -> x0 single-def "Inlining Arg"
+; V188 tmp169 [V188,T39] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox[int]>
+; V189 tmp170 [V189,T40] ( 3, 6 ) byref -> x0 single-def "Inlining Arg"
; V190 tmp171 [V190 ] ( 6, 6 ) ref -> [fp+0x98] do-not-enreg[X] addr-exposed "field V04.m_task (fldOffset=0x0)" P-DEP
; V191 tmp172 [V191 ] ( 6, 6 ) int -> [fp+0xA0] do-not-enreg[X] addr-exposed "field V04.m_options (fldOffset=0x8)" P-DEP
;* V192 tmp173 [V192 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
@@ -210,8 +210,8 @@
; V199 tmp180 [V199,T59] ( 4, 4 ) short -> [fp+0x64] do-not-enreg[] "field V14._token (fldOffset=0xc)" P-DEP
; V200 tmp181 [V200,T107] ( 2, 2 ) ubyte -> [fp+0x66] do-not-enreg[] "field V14._continueOnCapturedContext (fldOffset=0xe)" P-DEP
; V201 tmp182 [V201,T32] ( 4, 6 ) ref -> [fp+0x38] do-not-enreg[] "field V21._object (fldOffset=0x0)" P-DEP
-; V202 tmp183 [V202,T34] ( 4, 6 ) int -> [fp+0x40] do-not-enreg[] "field V21._index (fldOffset=0x8)" P-DEP
-; V203 tmp184 [V203,T35] ( 4, 6 ) int -> [fp+0x44] do-not-enreg[] "field V21._length (fldOffset=0xc)" P-DEP
+; V202 tmp183 [V202,T33] ( 4, 6 ) int -> [fp+0x40] do-not-enreg[] "field V21._index (fldOffset=0x8)" P-DEP
+; V203 tmp184 [V203,T34] ( 4, 6 ) int -> [fp+0x44] do-not-enreg[] "field V21._length (fldOffset=0xc)" P-DEP
;* V204 tmp185 [V204 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
;* V205 tmp186 [V205 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
; V206 tmp187 [V206,T51] ( 3, 5 ) ref -> [fp+0x28] do-not-enreg[] "field V29._object (fldOffset=0x0)" P-DEP
@@ -269,10 +269,10 @@
;* V258 tmp239 [V258 ] ( 0, 0 ) int -> zero-ref "field V181._length (fldOffset=0x8)" P-INDEP
;* V259 tmp240 [V259 ] ( 0, 0 ) byref -> zero-ref single-def "field V182._reference (fldOffset=0x0)" P-INDEP
;* V260 tmp241 [V260 ] ( 0, 0 ) int -> zero-ref "field V182._length (fldOffset=0x8)" P-INDEP
-; V261 tmp242 [V261,T42] ( 3, 6 ) ref -> x1 single-def "argument with side effect"
+; V261 tmp242 [V261,T41] ( 3, 6 ) ref -> x1 single-def "argument with side effect"
; V262 tmp243 [V262,T64] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V263 tmp244 [V263,T65] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V264 tmp245 [V264,T43] ( 3, 6 ) ref -> x4 single-def "argument with side effect"
+; V264 tmp245 [V264,T42] ( 3, 6 ) ref -> x4 single-def "argument with side effect"
; V265 tmp246 [V265,T66] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V266 tmp247 [V266,T67] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V267 PSPSym [V267,T127] ( 1, 1 ) long -> [fp+0xB0] do-not-enreg[V] "PSPSym"
@@ -421,7 +421,7 @@ G_M33324_IG06: ; bbWeight=1, gcVars=0000000000000000000000000000000000000
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M33324_IG92
+ b G_M33324_IG91
;; size=80 bbWeight=1 PerfScore 21.00
G_M33324_IG07: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000003 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, nogc
; gcrRegs +[x19]
@@ -491,7 +491,7 @@ G_M33324_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ble G_M33324_IG15
ldr x1, [x19, #0x20]
; gcrRegs +[x1]
- cbz x1, G_M33324_IG75
+ cbz x1, G_M33324_IG74
mov w3, w2
add x3, x3, w20, UXTW
ldr w4, [x1, #0x08]
@@ -596,7 +596,7 @@ G_M33324_IG14: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=1200000 {x2
blr x1
; gcr arg pop 0
cmp w22, w25
- bhi G_M33324_IG76
+ bhi G_M33324_IG75
mov w2, w22
mov x0, x24
; byrRegs +[x0]
@@ -620,7 +620,7 @@ G_M33324_IG15: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0},
cmp w20, w1
bne G_M33324_IG16
str w20, [fp, #0xA8] // [V03 loc2]
- b G_M33324_IG80
+ b G_M33324_IG79
;; size=20 bbWeight=1 PerfScore 6.50
G_M33324_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
cmp w20, #0
@@ -629,7 +629,7 @@ G_M33324_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0},
; byrRegs +[x1]
ldr w2, [x1, #0x0C]
cmp w20, w2
- bhi G_M33324_IG77
+ bhi G_M33324_IG76
ldr x21, [x1]
; gcrRegs +[x21]
ldr w1, [x1, #0x08]
@@ -949,7 +949,7 @@ G_M33324_IG28: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
ldr w0, [x21, #0x14]
add w0, w20, w0
str w0, [fp, #0xA8] // [V03 loc2]
- b G_M33324_IG86
+ b G_M33324_IG85
;; size=16 bbWeight=1 PerfScore 5.50
G_M33324_IG29: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x21]
@@ -1032,7 +1032,7 @@ G_M33324_IG33: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M33324_IG82
+ b G_M33324_IG81
;; size=96 bbWeight=1 PerfScore 24.50
G_M33324_IG34: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, nogc
; byrRegs -[x21]
@@ -1140,7 +1140,7 @@ G_M33324_IG41: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M33324_IG84
+ b G_M33324_IG83
;; size=92 bbWeight=1 PerfScore 22.50
G_M33324_IG42: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x21]
@@ -1411,7 +1411,7 @@ G_M33324_IG57: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M33324_IG88
+ b G_M33324_IG87
;; size=96 bbWeight=1 PerfScore 24.50
G_M33324_IG58: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x21]
@@ -1666,7 +1666,7 @@ G_M33324_IG73: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=2600000 {x2
blr x1
; gcr arg pop 0
cmp w23, w26
- bhi G_M33324_IG76
+ bhi G_M33324_IG75
mov w2, w23
mov x0, x25
; byrRegs +[x0]
@@ -1679,7 +1679,7 @@ G_M33324_IG73: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=2600000 {x2
blr x3
; byrRegs -[x0-x1 x22 x25]
; gcr arg pop 0
- b G_M33324_IG78
+ b G_M33324_IG77
;; size=72 bbWeight=1 PerfScore 16.00
G_M33324_IG74: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x21]
@@ -1691,13 +1691,7 @@ G_M33324_IG74: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M33324_IG75: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
- ; byrRegs +[x0]
- cbnz w2, G_M33324_IG74
- b G_M33324_IG74
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M33324_IG76: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; byrRegs -[x0]
+G_M33324_IG75: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -1706,7 +1700,7 @@ G_M33324_IG76: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M33324_IG77: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M33324_IG76: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov w0, #33
movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
movk x1, #0xD1FFAB1E LSL #16
@@ -1716,7 +1710,7 @@ G_M33324_IG77: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M33324_IG78: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
+G_M33324_IG77: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
; byrRegs +[x21]
ldr w0, [x19, #0x30]
add w0, w0, w20
@@ -1725,9 +1719,9 @@ G_M33324_IG78: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
add w0, w0, w20
str w0, [fp, #0xA8] // [V03 loc2]
;; size=24 bbWeight=1 PerfScore 9.00
-G_M33324_IG79: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+G_M33324_IG78: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
ldr w0, [fp, #0xAC] // [V01 loc0]
- tbz w0, #31, G_M33324_IG90
+ tbz w0, #31, G_M33324_IG89
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldrsb wzr, [x0]
@@ -1740,51 +1734,51 @@ G_M33324_IG79: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
blr x2
; gcrRegs -[x0 x19]
; gcr arg pop 0
- b G_M33324_IG90
+ b G_M33324_IG89
;; size=44 bbWeight=1 PerfScore 16.00
-G_M33324_IG80: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000003 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, gcvars, byref
+G_M33324_IG79: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000003 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs +[x19]
; byrRegs -[x21] +[x0]
; GC ptr vars +{V01 V02}
ldr x0, [fp, #0xB0] // [V267 PSPSym]
; byrRegs -[x0]
- bl G_M33324_IG93
+ bl G_M33324_IG92
;; size=8 bbWeight=1 PerfScore 3.00
-G_M33324_IG81: ; bbWeight=1, nogc, extend
- b G_M33324_IG90
+G_M33324_IG80: ; bbWeight=1, nogc, extend
+ b G_M33324_IG89
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG82: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
+G_M33324_IG81: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
...
benchmarks.run_pgo.osx.arm64.checked.mch
-24 (-14.63%) : 26182.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 7.68) ref -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V00 this [V00,T00] ( 7, 6.76) ref -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
; V01 arg1 [V01,T03] ( 4, 3 ) byref -> x1 single-def
; V02 loc0 [V02,T01] ( 6, 5.68) int -> x2
; V03 loc1 [V03,T05] ( 4, 3.84) ref -> x3 class-hnd single-def <<unknown class>>
@@ -17,9 +17,9 @@
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V07 cse0 [V07,T06] ( 3, 2.92) int -> x4 "CSE - aggressive"
-; V08 rat0 [V08,T04] ( 2, 3.68) long -> x0 "Spilling to split statement for tree"
+;* V08 rat0 [V08,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V10 rat2 [V10,T02] ( 2, 3.68) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V10 rat2 [V10,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -27,10 +27,9 @@ G_M49890_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
ldr w0, [x19, #0x10]
@@ -39,9 +38,9 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1},
; gcrRegs +[x3]
ldr w4, [x3, #0x08]
cmp w4, w2
- bls G_M49890_IG05
+ bls G_M49890_IG04
;; size=24 bbWeight=1 PerfScore 11.00
-G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, byref, isz
+G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, byref
ldr w14, [x19, #0x14]
add w14, w14, #1
stp w2, w14, [x19, #0x10]
@@ -53,51 +52,44 @@ G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=80008 {x3 x19}, byrefRegs=0002
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x1 x14]
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x18]
- cbnz x0, G_M49890_IG07
- ;; size=48 bbWeight=0.92 PerfScore 20.71
-G_M49890_IG04: ; bbWeight=0.18, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, byref
- b G_M49890_IG07
- ;; size=4 bbWeight=0.18 PerfScore 0.18
-G_M49890_IG05: ; bbWeight=0.08, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
+ b G_M49890_IG06
+ ;; size=32 bbWeight=0.92 PerfScore 9.66
+G_M49890_IG04: ; bbWeight=0.08, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
; gcrRegs -[x3]
; byrRegs +[x1]
str xzr, [x1]
mov w0, wzr
;; size=8 bbWeight=0.08 PerfScore 0.12
-G_M49890_IG06: ; bbWeight=0.08, epilog, nogc, extend
+G_M49890_IG05: ; bbWeight=0.08, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.08 PerfScore 0.32
-G_M49890_IG07: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M49890_IG06: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x3]
; byrRegs -[x1]
sxtw x0, w2
mov w1, w4
cmp x0, x1
- bhs G_M49890_IG09
+ bhs G_M49890_IG08
add x0, x3, #16
; byrRegs +[x0]
str xzr, [x0, w2, SXTW #3]
mov w0, #1
; byrRegs -[x0]
;; size=28 bbWeight=0.92 PerfScore 4.14
-G_M49890_IG08: ; bbWeight=0.92, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.92, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.92 PerfScore 3.68
-G_M49890_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M49890_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x3]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 164, prolog size 16, PerfScore 44.15, instruction count 41, allocated bytes for code 164 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 140, prolog size 12, PerfScore 31.93, instruction count 35, allocated bytes for code 140 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -108,7 +100,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-14.63%) : 60454.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 7.69) ref -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V00 this [V00,T00] ( 7, 6.77) ref -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
; V01 arg1 [V01,T03] ( 4, 3 ) byref -> x1 single-def
; V02 loc0 [V02,T01] ( 6, 5.69) int -> x2
; V03 loc1 [V03,T05] ( 4, 3.85) ref -> x3 class-hnd single-def <<unknown class>>
@@ -17,9 +17,9 @@
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V07 cse0 [V07,T06] ( 3, 2.92) int -> x4 "CSE - aggressive"
-; V08 rat0 [V08,T04] ( 2, 3.69) long -> x0 "Spilling to split statement for tree"
+;* V08 rat0 [V08,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V10 rat2 [V10,T02] ( 2, 3.69) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V10 rat2 [V10,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -27,10 +27,9 @@ G_M49890_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
ldr w0, [x19, #0x10]
@@ -39,9 +38,9 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1},
; gcrRegs +[x3]
ldr w4, [x3, #0x08]
cmp w4, w2
- bls G_M49890_IG05
+ bls G_M49890_IG04
;; size=24 bbWeight=1 PerfScore 11.00
-G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, byref, isz
+G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, byref
ldr w14, [x19, #0x14]
add w14, w14, #1
stp w2, w14, [x19, #0x10]
@@ -53,51 +52,44 @@ G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=80008 {x3 x19}, byrefRegs=0002
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x1 x14]
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x18]
- cbnz x0, G_M49890_IG07
- ;; size=48 bbWeight=0.92 PerfScore 20.78
-G_M49890_IG04: ; bbWeight=0.18, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, byref
- b G_M49890_IG07
- ;; size=4 bbWeight=0.18 PerfScore 0.18
-G_M49890_IG05: ; bbWeight=0.08, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
+ b G_M49890_IG06
+ ;; size=32 bbWeight=0.92 PerfScore 9.70
+G_M49890_IG04: ; bbWeight=0.08, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
; gcrRegs -[x3]
; byrRegs +[x1]
str xzr, [x1]
mov w0, wzr
;; size=8 bbWeight=0.08 PerfScore 0.11
-G_M49890_IG06: ; bbWeight=0.08, epilog, nogc, extend
+G_M49890_IG05: ; bbWeight=0.08, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.08 PerfScore 0.31
-G_M49890_IG07: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M49890_IG06: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x3]
; byrRegs -[x1]
sxtw x0, w2
mov w1, w4
cmp x0, x1
- bhs G_M49890_IG09
+ bhs G_M49890_IG08
add x0, x3, #16
; byrRegs +[x0]
str xzr, [x0, w2, SXTW #3]
mov w0, #1
; byrRegs -[x0]
;; size=28 bbWeight=0.92 PerfScore 4.16
-G_M49890_IG08: ; bbWeight=0.92, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.92, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.92 PerfScore 3.69
-G_M49890_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M49890_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x3]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 164, prolog size 16, PerfScore 44.23, instruction count 41, allocated bytes for code 164 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 140, prolog size 12, PerfScore 31.97, instruction count 35, allocated bytes for code 140 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -108,7 +100,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-12.50%) : 60577.dasm - System.Collections.Generic.Stack1[System.ValueTuple3[System.Canon,System.Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 7.62) ref -> [fp+0x10] this class-hnd single-def <System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]>
+; V00 this [V00,T00] ( 7, 6.72) ref -> [fp+0x18] this class-hnd single-def <System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]>
; V01 arg1 [V01,T02] ( 4, 3 ) byref -> x1 single-def
; V02 loc0 [V02,T04] ( 4, 3.81) int -> x13
; V03 loc1 [V03,T05] ( 3, 2.91) ref -> x14 class-hnd exact single-def <<unknown class>>
@@ -20,37 +20,38 @@
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.Item2 (fldOffset=0x8)" P-INDEP
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.Item3 (fldOffset=0x10)" P-INDEP
; V10 cse0 [V10,T06] ( 3, 2.72) byref -> x2 "CSE - aggressive"
-; V11 rat0 [V11,T03] ( 2, 3.62) long -> x1 "Spilling to split statement for tree"
+;* V11 rat0 [V11,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V12 rat1 [V12,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V13 rat2 [V13,T01] ( 2, 3.62) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V13 rat2 [V13,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
G_M60687_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
- str x0, [fp, #0x18]
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M60687_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref, isz
; gcrRegs +[x0]
; byrRegs +[x1]
ldr w13, [x0, #0x10]
sub w13, w13, #1
- str x0, [fp, #0x10] // [V00 this]
+ str x0, [fp, #0x18] // [V00 this]
; GC ptr vars +{V00}
ldr x14, [x0, #0x08]
; gcrRegs +[x14]
ldr w12, [x14, #0x08]
cmp w12, w13
- bls G_M60687_IG05
+ bls G_M60687_IG04
;; size=28 bbWeight=1 PerfScore 12.00
-G_M60687_IG03: ; bbWeight=0.91, gcVars=0000000000000001 {V00}, gcrefRegs=4000 {x14}, byrefRegs=0002 {x1}, gcvars, byref, isz
+G_M60687_IG03: ; bbWeight=0.91, gcVars=0000000000000001 {V00}, gcrefRegs=4000 {x14}, byrefRegs=0002 {x1}, gcvars, byref
; gcrRegs -[x0]
- ldr x0, [fp, #0x10] // [V00 this]
+ ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
ldr w12, [x0, #0x14]
add w12, w12, #1
- stp w13, w12, [x0, #0x10]
+ str w12, [x0, #0x14]
+ str x0, [fp, #0x18] // [V00 this]
+ str w13, [x0, #0x10]
mov w12, #24
mov x15, #16
umaddl x13, w13, w12, x15
@@ -61,46 +62,35 @@ G_M60687_IG03: ; bbWeight=0.91, gcVars=0000000000000001 {V00}, gcrefRegs=
; byrRegs +[x14]
mov x13, x2
; byrRegs +[x13]
- ; GC ptr vars -{V00}
bl CORINFO_HELP_ASSIGN_BYREF
+ ; gcrRegs -[x0]
; byrRegs -[x1]
bl CORINFO_HELP_ASSIGN_BYREF
bl CORINFO_HELP_ASSIGN_BYREF
- str x0, [fp, #0x10] // [V00 this]
- ; GC ptr vars +{V00}
- ldr x1, [x0]
- ldr x1, [x1, #0x38]
- ldr x1, [x1]
- ldr x1, [x1, #0x20]
- cbnz x1, G_M60687_IG07
- ;; size=76 bbWeight=0.91 PerfScore 28.09
-G_M60687_IG04: ; bbWeight=0.18, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, gcvars, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x13-x14]
- b G_M60687_IG07
- ;; size=4 bbWeight=0.18 PerfScore 0.18
-G_M60687_IG05: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
- ; byrRegs -[x2] +[x1]
+ b G_M60687_IG06
+ ;; size=64 bbWeight=0.91 PerfScore 18.12
+G_M60687_IG04: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+ ; byrRegs -[x2 x13-x14] +[x1]
stp xzr, xzr, [x1]
str xzr, [x1, #0x10]
mov w0, wzr
;; size=12 bbWeight=0.09 PerfScore 0.23
-G_M60687_IG06: ; bbWeight=0.09, epilog, nogc, extend
+G_M60687_IG05: ; bbWeight=0.09, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=0.09 PerfScore 0.19
-G_M60687_IG07: ; bbWeight=0.91, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, gcvars, byref
+G_M60687_IG06: ; bbWeight=0.91, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, gcvars, byref
; byrRegs -[x1] +[x2]
stp xzr, xzr, [x2]
str xzr, [x2, #0x10]
mov w0, #1
;; size=12 bbWeight=0.91 PerfScore 2.27
-G_M60687_IG08: ; bbWeight=0.91, epilog, nogc, extend
+G_M60687_IG07: ; bbWeight=0.91, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=0.91 PerfScore 1.81
-Total bytes of code 160, prolog size 12, PerfScore 47.27, instruction count 40, allocated bytes for code 160 (MethodHash=056e12f0) for method System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 140, prolog size 8, PerfScore 36.12, instruction count 35, allocated bytes for code 140 (MethodHash=056e12f0) for method System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -111,7 +101,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 84056.dasm - System.Linq.Enumerable:AnySystem.__Canon:ubyte (Tier1-OSR)
@@ -12,10 +12,10 @@
;
; V00 TypeCtx [V00,T11] ( 7,138.99) long -> x19 single-def
;* V01 arg0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-; V02 arg1 [V02,T12] ( 9,105.00) ref -> x20 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
-; V03 loc0 [V03,T03] ( 17,503.01) ref -> [fp+0xC0] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[System.__Canon]>
+; V02 arg1 [V02,T12] ( 9,103.01) ref -> x20 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
+; V03 loc0 [V03,T03] ( 17,501.01) ref -> [fp+0xC0] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[System.__Canon]>
; V04 loc1 [V04,T08] ( 7,199.98) ref -> x2 class-hnd <System.__Canon>
-; V05 loc2 [V05,T19] ( 2, 0 ) ubyte -> [fp+0xB4] do-not-enreg[Z] EH-live tier0-frame
+; V05 loc2 [V05,T17] ( 2, 0 ) ubyte -> [fp+0xB4] do-not-enreg[Z] EH-live tier0-frame
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "VirtualCall with runtime lookup"
@@ -25,23 +25,22 @@
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <System.Collections.Perf_FrozenDictionary_String>
; V13 tmp7 [V13,T05] ( 5,200.00) int -> x2 "guarded devirt return temp"
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.SZGenericArrayEnumerator`1[System.String]>
-;* V15 tmp9 [V15,T17] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
; V16 tmp10 [V16,T09] ( 6,199.98) ubyte -> x0 "Inline return value spill temp"
; V17 tmp11 [V17,T01] ( 6,599.94) ref -> x0 class-hnd exact "Inlining Arg" <<unknown class>>
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V19 tmp13 [V19,T06] ( 6,300.00) int -> x22 "Inline stloc first use temp"
-; V20 PSPSym [V20,T18] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V20 PSPSym [V20,T16] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
; V21 cse0 [V21,T07] ( 3,297.00) int -> x21 "CSE - aggressive"
-; V22 cse1 [V22,T16] ( 3, 3.00) int -> x21 "CSE - aggressive"
-; V23 cse2 [V23,T15] ( 4, 4.01) long -> x21 hoist multi-def "CSE - aggressive"
-; V24 rat0 [V24,T02] ( 3,554.34) long -> x0 "spilling expr"
-; V25 rat1 [V25,T04] ( 3,443.48) long -> x11 "fgMakeTemp is creating a new local variable"
-; V26 rat2 [V26,T13] ( 3, 5.60) long -> x0 "spilling expr"
-; V27 rat3 [V27,T14] ( 3, 4.48) long -> x11 "fgMakeTemp is creating a new local variable"
+; V22 cse1 [V22,T15] ( 3, 3.00) int -> x21 "CSE - aggressive"
+; V23 rat0 [V23,T02] ( 3,554.34) long -> x0 "spilling expr"
+; V24 rat1 [V24,T04] ( 3,443.48) long -> x11 "fgMakeTemp is creating a new local variable"
+; V25 rat2 [V25,T13] ( 3, 5.60) long -> x0 "spilling expr"
+; V26 rat3 [V26,T14] ( 3, 4.48) long -> x11 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
-G_M43250_IG01: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M43250_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x20]
stp x21, x22, [sp, #0x30]
@@ -51,20 +50,20 @@ G_M43250_IG01: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr x19, [fp, #0xD8]
ldr x20, [fp, #0xC8]
; gcrRegs +[x20]
- ;; size=32 bbWeight=1.01 PerfScore 9.05
-G_M43250_IG02: ; bbWeight=1.01, gcVars=0000000000000008 {V03}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=32 bbWeight=0.01 PerfScore 0.09
+G_M43250_IG02: ; bbWeight=0.01, gcVars=0000000000000008 {V03}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V03}
ldr x0, [fp, #0xC0] // [V03 loc0]
; gcrRegs +[x0]
cbz x0, G_M43250_IG12
cbz x20, G_M43250_IG12
ldr x0, [fp, #0xC0] // [V03 loc0]
- ldr x21, [x0]
- movz x0, #0xD1FFAB1E
+ ldr x0, [x0]
; gcrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- cmp x21, x0
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
bne G_M43250_IG12
ldr x0, [x20, #0x18]
movz x1, #0xD1FFAB1E // code for System.Collections.Perf_FrozenDictionary_String:<Verify>b__13_0(System.String):ubyte:this
@@ -73,7 +72,7 @@ G_M43250_IG02: ; bbWeight=1.01, gcVars=0000000000000008 {V03}, gcrefRegs=
cmp x0, x1
bne G_M43250_IG12
b G_M43250_IG07
- ;; size=68 bbWeight=1.01 PerfScore 19.10
+ ;; size=68 bbWeight=0.01 PerfScore 0.19
G_M43250_IG03: ; bbWeight=98.99, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x38]
ldr x1, [x0, #0x08]
@@ -162,12 +161,12 @@ G_M43250_IG11: ; bbWeight=35.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {
mov x11, x0
b G_M43250_IG05
;; size=28 bbWeight=35.64 PerfScore 160.36
-G_M43250_IG12: ; bbWeight=0.01, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M43250_IG12: ; bbWeight=0.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0xC0] // [V03 loc0]
; gcrRegs +[x0]
ldr xzr, [x0]
b G_M43250_IG17
- ;; size=12 bbWeight=0.01 PerfScore 0.06
+ ;; size=12 bbWeight=0.00 PerfScore 0.00
G_M43250_IG13: ; bbWeight=1.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [x19, #0x38]
@@ -215,12 +214,12 @@ G_M43250_IG16: ; bbWeight=1.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
G_M43250_IG17: ; bbWeight=1.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0xC0] // [V03 loc0]
; gcrRegs +[x0]
- ldr x21, [x0]
- movz x0, #0xD1FFAB1E
+ ldr x0, [x0]
; gcrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- cmp x21, x0
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
bne G_M43250_IG24
ldr x0, [fp, #0xC0] // [V03 loc0]
; gcrRegs +[x0]
@@ -375,7 +374,7 @@ G_M43250_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=20 bbWeight=0 PerfScore 0.00
-Total bytes of code 800, prolog size 32, PerfScore 5473.86, instruction count 200, allocated bytes for code 800 (MethodHash=7c9f570d) for method System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)
+Total bytes of code 800, prolog size 32, PerfScore 5445.94, instruction count 200, allocated bytes for code 800 (MethodHash=7c9f570d) for method System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)
; ============================================================
Unwind Info:
+36 (+1.92%) : 67866.dasm - LinqBenchmarks:Where00LinqMethodX():ubyte:this (Tier1-OSR)
@@ -11,59 +11,61 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <LinqBenchmarks>
-; V01 loc0 [V01,T18] ( 5, 283.45) ref -> x19 class-hnd <System.Collections.Generic.List`1[Product]>
-; V02 loc1 [V02,T26] ( 5, 166.65) int -> x20
-; V03 loc2 [V03,T31] ( 3, 50.02) int -> x21
+; V01 loc0 [V01,T20] ( 5, 283.45) ref -> x19 class-hnd <System.Collections.Generic.List`1[Product]>
+; V02 loc1 [V02,T28] ( 5, 166.65) int -> x20
+; V03 loc2 [V03,T32] ( 3, 50.02) int -> x21
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Generic.IEnumerable`1[Product]>
-; V05 loc4 [V05,T16] ( 32, 395.48) ref -> [fp+0x100] do-not-enreg[Z] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[Product]>
+; V05 loc4 [V05,T17] ( 32, 401.90) ref -> [fp+0x100] do-not-enreg[Z] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[Product]>
;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <Product>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T29] ( 2, 66.69) ref -> x22 class-hnd "dup spill" <<unknown class>>
+; V08 tmp1 [V08,T30] ( 2, 66.69) ref -> x23 class-hnd "dup spill" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref
-; V10 tmp3 [V10,T17] ( 8, 366.83) ref -> x22
-; V11 tmp4 [V11,T38] ( 5, 0.11) ref -> x22 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V12 tmp5 [V12,T34] ( 3, 33.35) ref -> x22 "guarded devirt return temp"
+; V10 tmp3 [V10,T18] ( 8, 366.83) ref -> x23
+; V11 tmp4 [V11,T39] ( 5, 0.11) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V12 tmp5 [V12,T35] ( 3, 33.35) ref -> x22 "guarded devirt return temp"
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-; V16 tmp9 [V16,T10] ( 5, 200.00) int -> x2 "guarded devirt return temp"
-; V17 tmp10 [V17,T02] ( 14, 7757.47) ref -> x22 class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
+; V16 tmp9 [V16,T10] ( 5, 200.00) int -> x3 "guarded devirt return temp"
+; V17 tmp10 [V17,T04] ( 14, 6489.93) ref -> x23 class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-;* V19 tmp12 [V19,T27] ( 0, 0 ) int -> zero-ref "OSR entry state var"
-; V20 tmp13 [V20,T39] ( 2, 0.04) ref -> x15 class-hnd exact "Inlining Arg" <LinqBenchmarks+<>c>
-; V21 tmp14 [V21,T15] ( 12, 633.60) ref -> x23 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Product]>
-; V22 tmp15 [V22,T20] ( 4, 266.78) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V23 tmp16 [V23,T21] ( 4, 266.78) ref -> x28 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V24 tmp17 [V24,T24] ( 3, 200.08) ref -> x23 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
-; V25 tmp18 [V25,T11] ( 5, 666.95) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V26 tmp19 [V26,T12] ( 5, 666.95) ref -> x24 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-; V27 tmp20 [V27,T13] ( 5, 666.95) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V28 tmp21 [V28,T25] ( 4, 166.74) ref -> x22
+;* V19 tmp12 [V19 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+; V20 tmp13 [V20,T40] ( 2, 0.04) ref -> x15 class-hnd exact "Inlining Arg" <LinqBenchmarks+<>c>
+; V21 tmp14 [V21,T16] ( 12, 633.60) ref -> x22 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Product]>
+; V22 tmp15 [V22,T22] ( 4, 266.78) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V23 tmp16 [V23,T23] ( 4, 266.78) ref -> x28 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V24 tmp17 [V24,T26] ( 3, 200.08) ref -> x22 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
+; V25 tmp18 [V25,T12] ( 5, 666.95) ref -> x22 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T13] ( 5, 666.95) ref -> x24 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
+; V27 tmp20 [V27,T14] ( 5, 666.95) ref -> x22 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V28 tmp21 [V28,T27] ( 4, 166.74) ref -> x22
;* V29 tmp22 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V30 tmp23 [V30 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V31 tmp24 [V31,T14] ( 5, 666.95) ref -> x22 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-; V32 tmp25 [V32,T22] ( 2, 266.78) ref -> x24 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-; V33 tmp26 [V33,T23] ( 2, 266.78) ref -> x23 class-hnd "Inlining Arg" <System.Func`2[System.__Canon,ubyte]>
-; V34 tmp27 [V34,T19] ( 6, 283.32) int -> x23 "Inline stloc first use temp"
+; V31 tmp24 [V31,T15] ( 5, 666.95) ref -> x24 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
+; V32 tmp25 [V32,T24] ( 2, 266.78) ref -> x23 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+; V33 tmp26 [V33,T25] ( 2, 266.78) ref -> x22 class-hnd "Inlining Arg" <System.Func`2[System.__Canon,ubyte]>
+; V34 tmp27 [V34,T21] ( 6, 283.32) int -> x24 "Inline stloc first use temp"
; V35 tmp28 [V35,T06] ( 8, 5071.59) ref -> x28 class-hnd "Inline stloc first use temp" <Product>
; V36 tmp29 [V36,T09] ( 4, 2535.70) int -> x0 "guarded devirt return temp"
-; V37 tmp30 [V37,T01] ( 8,10143.56) ref -> x3 "guarded devirt arg temp"
+; V37 tmp30 [V37,T01] ( 8,10143.56) ref -> x4 "guarded devirt arg temp"
;* V38 tmp31 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <LinqBenchmarks+<>c>
-; V39 tmp32 [V39,T28] ( 4, 67.88) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+; V39 tmp32 [V39,T29] ( 4, 66.70) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
;* V40 tmp33 [V40 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Product]>
;* V41 tmp34 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V42 tmp35 [V42,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V43 tmp36 [V43,T00] ( 24,25657.31) byref -> x25 "Inlining Arg"
-; V44 tmp37 [V44,T05] ( 8, 5121.58) ref -> x26 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
-; V45 tmp38 [V45,T30] ( 6, 50.91) ref -> x15 "field V40._list (fldOffset=0x0)" P-INDEP
-;* V46 tmp39 [V46,T35] ( 0, 0 ) ref -> zero-ref "field V40._current (fldOffset=0x8)" P-INDEP
-;* V47 tmp40 [V47,T36] ( 0, 0 ) int -> zero-ref "field V40._index (fldOffset=0x10)" P-INDEP
-; V48 tmp41 [V48,T33] ( 4, 33.94) int -> x24 "field V40._version (fldOffset=0x14)" P-INDEP
-; V49 tmp42 [V49,T03] ( 6, 7608.26) ref -> x27 "arr expr"
-; V50 tmp43 [V50,T04] ( 6, 7608.26) int -> x2 "index expr"
-; V51 PSPSym [V51,T37] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V52 cse0 [V52,T07] ( 3, 3798.70) int -> x2 "CSE - aggressive"
-; V53 cse1 [V53,T32] ( 3, 38.37) int -> x2 "CSE - moderate"
+; V43 tmp36 [V43,T00] ( 24,25657.31) byref -> x2 "Inlining Arg"
+; V44 tmp37 [V44,T05] ( 8, 5121.58) ref -> x27 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
+; V45 tmp38 [V45,T31] ( 6, 50.03) ref -> x15 "field V40._list (fldOffset=0x0)" P-INDEP
+;* V46 tmp39 [V46,T36] ( 0, 0 ) ref -> zero-ref "field V40._current (fldOffset=0x8)" P-INDEP
+;* V47 tmp40 [V47,T37] ( 0, 0 ) int -> zero-ref "field V40._index (fldOffset=0x10)" P-INDEP
+; V48 tmp41 [V48,T34] ( 4, 33.35) int -> x25 "field V40._version (fldOffset=0x14)" P-INDEP
+; V49 tmp42 [V49,T02] ( 6, 7608.26) ref -> x28 "arr expr"
+; V50 tmp43 [V50,T03] ( 6, 7608.26) int -> x3 "index expr"
+; V51 PSPSym [V51,T38] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V52 cse0 [V52,T07] ( 3, 3798.70) int -> x3 "CSE - aggressive"
+; V53 cse1 [V53,T33] ( 3, 38.37) int -> x3 "CSE - moderate"
+; V54 cse2 [V54,T11] ( 4, 1301.48) byref -> x26 hoist multi-def "CSE - aggressive"
+; V55 cse3 [V55,T19] ( 17, 303.79) long -> registers multi-def "CSE - aggressive"
;
; Lcl frame size = 16
@@ -82,24 +84,24 @@ G_M64534_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr w20, [fp, #0xD1FFAB1E]
ldr w21, [fp, #0xD1FFAB1E]
;; size=48 bbWeight=1 PerfScore 14.00
-G_M64534_IG02: ; bbWeight=1, gcVars=0000000000010000 {V05}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars +{V05 V16}
- b G_M64534_IG17
+G_M64534_IG02: ; bbWeight=1, gcVars=0000000000020000 {V05}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars +{V05 V17}
+ b G_M64534_IG16
;; size=4 bbWeight=1 PerfScore 1.00
G_M64534_IG03: ; bbWeight=16.67, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V05 V16}
+ ; GC ptr vars -{V05 V17}
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
- ldr x22, [x0]
- ; gcrRegs +[x22]
- cbz x22, G_M64534_IG06
+ ldr x23, [x0]
+ ; gcrRegs +[x23]
+ cbz x23, G_M64534_IG06
;; size=20 bbWeight=16.67 PerfScore 91.71
-G_M64534_IG04: ; bbWeight=16.67, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M64534_IG04: ; bbWeight=16.67, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cbz x19, G_M64534_IG54
;; size=4 bbWeight=16.67 PerfScore 16.67
-G_M64534_IG05: ; bbWeight=66.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- cbz x22, G_M64534_IG55
+G_M64534_IG05: ; bbWeight=66.69, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+ cbz x23, G_M64534_IG55
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -113,34 +115,35 @@ G_M64534_IG05: ; bbWeight=66.69, gcrefRegs=480000 {x19 x22}, byrefRegs=00
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
cbz x0, G_M64534_IG07
- mov x1, x22
+ mov x1, x23
; gcrRegs +[x1]
ldr x2, [x0]
ldr x2, [x2, #0x50]
ldr x2, [x2, #0x10]
blr x2
- ; gcrRegs -[x1 x22]
- ; gcr arg pop 0
- mov x23, x0
- ; gcrRegs +[x23]
- b G_M64534_IG11
- ;; size=72 bbWeight=66.69 PerfScore 1433.94
-G_M64534_IG06: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x23]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- bl CORINFO_HELP_NEWSFAST
- ; gcrRegs +[x0]
+ ; gcrRegs -[x1 x23]
; gcr arg pop 0
mov x22, x0
; gcrRegs +[x22]
+ b G_M64534_IG11
+ ;; size=72 bbWeight=66.69 PerfScore 1433.94
+G_M64534_IG06: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x22]
+ movz x22, #0xD1FFAB1E
+ movk x22, #0xD1FFAB1E LSL #16
+ movk x22, #1 LSL #32
+ mov x0, x22
+ bl CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[x0]
+ ; gcr arg pop 0
+ mov x23, x0
+ ; gcrRegs +[x23]
movz x14, #0xD1FFAB1E
movk x14, #0xD1FFAB1E LSL #16
movk x14, #1 LSL #32
ldr x15, [x14]
; gcrRegs +[x15]
- add x14, x22, #8
+ add x14, x23, #8
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
@@ -148,17 +151,17 @@ G_M64534_IG06: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movz x14, #0xD1FFAB1E // code for LinqBenchmarks+<>c:<Where00LinqMethodX>b__8_0(Product):ubyte:this
movk x14, #0xD1FFAB1E LSL #16
movk x14, #1 LSL #32
- str x14, [x22, #0x18]
+ str x14, [x23, #0x18]
movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x14, #0xD1FFAB1E LSL #16
movk x14, #1 LSL #32
- mov x15, x22
+ mov x15, x23
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
b G_M64534_IG04
- ;; size=84 bbWeight=0.01 PerfScore 0.16
-G_M64534_IG07: ; bbWeight=66.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ;; size=88 bbWeight=0.01 PerfScore 0.17
+G_M64534_IG07: ; bbWeight=66.69, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -182,47 +185,47 @@ G_M64534_IG07: ; bbWeight=66.69, gcrefRegs=480000 {x19 x22}, byrefRegs=00
movk x0, #1 LSL #32
mov w1, #44
bl CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
- ; gcrRegs -[x22 x28]
+ ; gcrRegs -[x23 x28]
; gcr arg pop 0
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
- ldr x23, [x0]
- ; gcrRegs +[x23]
+ ldr x22, [x0]
+ ; gcrRegs +[x22]
b G_M64534_IG11
;; size=92 bbWeight=66.69 PerfScore 1433.94
-G_M64534_IG08: ; bbWeight=66.69, gcrefRegs=10480000 {x19 x22 x28}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x23] +[x22 x28]
+G_M64534_IG08: ; bbWeight=66.69, gcrefRegs=10880000 {x19 x23 x28}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x22] +[x23 x28]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
- mov x23, x0
- ; gcrRegs +[x23]
+ mov x22, x0
+ ; gcrRegs +[x22]
bl <unknown method>
; gcrRegs -[x0]
; gcr arg pop 0
- str w0, [x23, #0x10]
- add x14, x23, #24
+ str w0, [x22, #0x10]
+ add x14, x22, #24
; byrRegs +[x14]
mov x15, x28
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x28]
; byrRegs -[x14]
...
+36 (+1.92%) : 65580.dasm - LinqBenchmarks:Where00LinqQueryX():ubyte:this (Tier1-OSR)
@@ -11,59 +11,61 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <LinqBenchmarks>
-; V01 loc0 [V01,T18] ( 5, 283.45) ref -> x19 class-hnd <System.Collections.Generic.List`1[Product]>
-; V02 loc1 [V02,T26] ( 5, 166.65) int -> x20
-; V03 loc2 [V03,T31] ( 3, 50.02) int -> x21
+; V01 loc0 [V01,T20] ( 5, 283.45) ref -> x19 class-hnd <System.Collections.Generic.List`1[Product]>
+; V02 loc1 [V02,T28] ( 5, 166.65) int -> x20
+; V03 loc2 [V03,T32] ( 3, 50.02) int -> x21
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Generic.IEnumerable`1[Product]>
-; V05 loc4 [V05,T16] ( 32, 395.48) ref -> [fp+0x100] do-not-enreg[Z] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[Product]>
+; V05 loc4 [V05,T17] ( 32, 401.90) ref -> [fp+0x100] do-not-enreg[Z] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[Product]>
;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <Product>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T29] ( 2, 66.69) ref -> x22 class-hnd "dup spill" <<unknown class>>
+; V08 tmp1 [V08,T30] ( 2, 66.69) ref -> x23 class-hnd "dup spill" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref
-; V10 tmp3 [V10,T17] ( 8, 366.83) ref -> x22
-; V11 tmp4 [V11,T38] ( 5, 0.11) ref -> x22 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V12 tmp5 [V12,T34] ( 3, 33.35) ref -> x22 "guarded devirt return temp"
+; V10 tmp3 [V10,T18] ( 8, 366.83) ref -> x23
+; V11 tmp4 [V11,T39] ( 5, 0.11) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V12 tmp5 [V12,T35] ( 3, 33.35) ref -> x22 "guarded devirt return temp"
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-; V16 tmp9 [V16,T10] ( 5, 200.00) int -> x2 "guarded devirt return temp"
-; V17 tmp10 [V17,T02] ( 14, 7757.59) ref -> x22 class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
+; V16 tmp9 [V16,T10] ( 5, 200.00) int -> x3 "guarded devirt return temp"
+; V17 tmp10 [V17,T04] ( 14, 6490.05) ref -> x23 class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-;* V19 tmp12 [V19,T27] ( 0, 0 ) int -> zero-ref "OSR entry state var"
-; V20 tmp13 [V20,T39] ( 2, 0.04) ref -> x15 class-hnd exact "Inlining Arg" <LinqBenchmarks+<>c>
-; V21 tmp14 [V21,T15] ( 12, 633.60) ref -> x23 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Product]>
-; V22 tmp15 [V22,T20] ( 4, 266.78) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V23 tmp16 [V23,T21] ( 4, 266.78) ref -> x28 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V24 tmp17 [V24,T24] ( 3, 200.08) ref -> x23 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
-; V25 tmp18 [V25,T11] ( 5, 666.95) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V26 tmp19 [V26,T12] ( 5, 666.95) ref -> x24 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-; V27 tmp20 [V27,T13] ( 5, 666.95) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V28 tmp21 [V28,T25] ( 4, 166.74) ref -> x22
+;* V19 tmp12 [V19 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+; V20 tmp13 [V20,T40] ( 2, 0.04) ref -> x15 class-hnd exact "Inlining Arg" <LinqBenchmarks+<>c>
+; V21 tmp14 [V21,T16] ( 12, 633.60) ref -> x22 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Product]>
+; V22 tmp15 [V22,T22] ( 4, 266.78) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V23 tmp16 [V23,T23] ( 4, 266.78) ref -> x28 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V24 tmp17 [V24,T26] ( 3, 200.08) ref -> x22 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
+; V25 tmp18 [V25,T12] ( 5, 666.95) ref -> x22 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T13] ( 5, 666.95) ref -> x24 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
+; V27 tmp20 [V27,T14] ( 5, 666.95) ref -> x22 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V28 tmp21 [V28,T27] ( 4, 166.74) ref -> x22
;* V29 tmp22 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V30 tmp23 [V30 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V31 tmp24 [V31,T14] ( 5, 666.95) ref -> x22 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-; V32 tmp25 [V32,T22] ( 2, 266.78) ref -> x24 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-; V33 tmp26 [V33,T23] ( 2, 266.78) ref -> x23 class-hnd "Inlining Arg" <System.Func`2[System.__Canon,ubyte]>
-; V34 tmp27 [V34,T19] ( 6, 283.32) int -> x23 "Inline stloc first use temp"
+; V31 tmp24 [V31,T15] ( 5, 666.95) ref -> x24 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
+; V32 tmp25 [V32,T24] ( 2, 266.78) ref -> x23 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+; V33 tmp26 [V33,T25] ( 2, 266.78) ref -> x22 class-hnd "Inlining Arg" <System.Func`2[System.__Canon,ubyte]>
+; V34 tmp27 [V34,T21] ( 6, 283.32) int -> x24 "Inline stloc first use temp"
; V35 tmp28 [V35,T06] ( 8, 5071.64) ref -> x28 class-hnd "Inline stloc first use temp" <Product>
; V36 tmp29 [V36,T09] ( 4, 2535.70) int -> x0 "guarded devirt return temp"
-; V37 tmp30 [V37,T01] ( 8,10143.80) ref -> x3 "guarded devirt arg temp"
+; V37 tmp30 [V37,T01] ( 8,10143.80) ref -> x4 "guarded devirt arg temp"
;* V38 tmp31 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <LinqBenchmarks+<>c>
-; V39 tmp32 [V39,T28] ( 4, 67.88) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+; V39 tmp32 [V39,T29] ( 4, 66.70) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
;* V40 tmp33 [V40 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Product]>
;* V41 tmp34 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V42 tmp35 [V42,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V43 tmp36 [V43,T00] ( 24,25657.43) byref -> x25 "Inlining Arg"
-; V44 tmp37 [V44,T05] ( 8, 5121.64) ref -> x26 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
-; V45 tmp38 [V45,T30] ( 6, 50.91) ref -> x15 "field V40._list (fldOffset=0x0)" P-INDEP
-;* V46 tmp39 [V46,T35] ( 0, 0 ) ref -> zero-ref "field V40._current (fldOffset=0x8)" P-INDEP
-;* V47 tmp40 [V47,T36] ( 0, 0 ) int -> zero-ref "field V40._index (fldOffset=0x10)" P-INDEP
-; V48 tmp41 [V48,T33] ( 4, 33.94) int -> x24 "field V40._version (fldOffset=0x14)" P-INDEP
-; V49 tmp42 [V49,T03] ( 6, 7608.61) ref -> x27 "arr expr"
-; V50 tmp43 [V50,T04] ( 6, 7608.61) int -> x2 "index expr"
-; V51 PSPSym [V51,T37] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V52 cse0 [V52,T07] ( 3, 3798.76) int -> x2 "CSE - aggressive"
-; V53 cse1 [V53,T32] ( 3, 38.37) int -> x2 "CSE - moderate"
+; V43 tmp36 [V43,T00] ( 24,25657.43) byref -> x2 "Inlining Arg"
+; V44 tmp37 [V44,T05] ( 8, 5121.64) ref -> x27 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
+; V45 tmp38 [V45,T31] ( 6, 50.03) ref -> x15 "field V40._list (fldOffset=0x0)" P-INDEP
+;* V46 tmp39 [V46,T36] ( 0, 0 ) ref -> zero-ref "field V40._current (fldOffset=0x8)" P-INDEP
+;* V47 tmp40 [V47,T37] ( 0, 0 ) int -> zero-ref "field V40._index (fldOffset=0x10)" P-INDEP
+; V48 tmp41 [V48,T34] ( 4, 33.35) int -> x25 "field V40._version (fldOffset=0x14)" P-INDEP
+; V49 tmp42 [V49,T02] ( 6, 7608.61) ref -> x28 "arr expr"
+; V50 tmp43 [V50,T03] ( 6, 7608.61) int -> x3 "index expr"
+; V51 PSPSym [V51,T38] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V52 cse0 [V52,T07] ( 3, 3798.76) int -> x3 "CSE - aggressive"
+; V53 cse1 [V53,T33] ( 3, 38.37) int -> x3 "CSE - moderate"
+; V54 cse2 [V54,T11] ( 4, 1301.48) byref -> x26 hoist multi-def "CSE - aggressive"
+; V55 cse3 [V55,T19] ( 17, 303.79) long -> registers multi-def "CSE - aggressive"
;
; Lcl frame size = 16
@@ -82,24 +84,24 @@ G_M15171_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr w20, [fp, #0xD1FFAB1E]
ldr w21, [fp, #0xD1FFAB1E]
;; size=48 bbWeight=1 PerfScore 14.00
-G_M15171_IG02: ; bbWeight=1, gcVars=0000000000010000 {V05}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars +{V05 V16}
- b G_M15171_IG17
+G_M15171_IG02: ; bbWeight=1, gcVars=0000000000020000 {V05}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars +{V05 V17}
+ b G_M15171_IG16
;; size=4 bbWeight=1 PerfScore 1.00
G_M15171_IG03: ; bbWeight=16.67, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V05 V16}
+ ; GC ptr vars -{V05 V17}
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
- ldr x22, [x0]
- ; gcrRegs +[x22]
- cbz x22, G_M15171_IG06
+ ldr x23, [x0]
+ ; gcrRegs +[x23]
+ cbz x23, G_M15171_IG06
;; size=20 bbWeight=16.67 PerfScore 91.71
-G_M15171_IG04: ; bbWeight=16.67, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M15171_IG04: ; bbWeight=16.67, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
cbz x19, G_M15171_IG54
;; size=4 bbWeight=16.67 PerfScore 16.67
-G_M15171_IG05: ; bbWeight=66.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- cbz x22, G_M15171_IG55
+G_M15171_IG05: ; bbWeight=66.69, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+ cbz x23, G_M15171_IG55
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -113,34 +115,35 @@ G_M15171_IG05: ; bbWeight=66.69, gcrefRegs=480000 {x19 x22}, byrefRegs=00
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
cbz x0, G_M15171_IG07
- mov x1, x22
+ mov x1, x23
; gcrRegs +[x1]
ldr x2, [x0]
ldr x2, [x2, #0x50]
ldr x2, [x2, #0x10]
blr x2
- ; gcrRegs -[x1 x22]
- ; gcr arg pop 0
- mov x23, x0
- ; gcrRegs +[x23]
- b G_M15171_IG11
- ;; size=72 bbWeight=66.69 PerfScore 1433.94
-G_M15171_IG06: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x23]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- bl CORINFO_HELP_NEWSFAST
- ; gcrRegs +[x0]
+ ; gcrRegs -[x1 x23]
; gcr arg pop 0
mov x22, x0
; gcrRegs +[x22]
+ b G_M15171_IG11
+ ;; size=72 bbWeight=66.69 PerfScore 1433.94
+G_M15171_IG06: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x22]
+ movz x22, #0xD1FFAB1E
+ movk x22, #0xD1FFAB1E LSL #16
+ movk x22, #1 LSL #32
+ mov x0, x22
+ bl CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[x0]
+ ; gcr arg pop 0
+ mov x23, x0
+ ; gcrRegs +[x23]
movz x14, #0xD1FFAB1E
movk x14, #0xD1FFAB1E LSL #16
movk x14, #1 LSL #32
ldr x15, [x14]
; gcrRegs +[x15]
- add x14, x22, #8
+ add x14, x23, #8
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
@@ -148,17 +151,17 @@ G_M15171_IG06: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movz x14, #0xD1FFAB1E // code for LinqBenchmarks+<>c:<Where00LinqQueryX>b__7_0(Product):ubyte:this
movk x14, #0xD1FFAB1E LSL #16
movk x14, #1 LSL #32
- str x14, [x22, #0x18]
+ str x14, [x23, #0x18]
movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x14, #0xD1FFAB1E LSL #16
movk x14, #1 LSL #32
- mov x15, x22
+ mov x15, x23
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
b G_M15171_IG04
- ;; size=84 bbWeight=0.01 PerfScore 0.16
-G_M15171_IG07: ; bbWeight=66.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ;; size=88 bbWeight=0.01 PerfScore 0.17
+G_M15171_IG07: ; bbWeight=66.69, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -182,47 +185,47 @@ G_M15171_IG07: ; bbWeight=66.69, gcrefRegs=480000 {x19 x22}, byrefRegs=00
movk x0, #1 LSL #32
mov w1, #44
bl CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
- ; gcrRegs -[x22 x28]
+ ; gcrRegs -[x23 x28]
; gcr arg pop 0
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
- ldr x23, [x0]
- ; gcrRegs +[x23]
+ ldr x22, [x0]
+ ; gcrRegs +[x22]
b G_M15171_IG11
;; size=92 bbWeight=66.69 PerfScore 1433.94
-G_M15171_IG08: ; bbWeight=66.69, gcrefRegs=10480000 {x19 x22 x28}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x23] +[x22 x28]
+G_M15171_IG08: ; bbWeight=66.69, gcrefRegs=10880000 {x19 x23 x28}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x22] +[x23 x28]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
- mov x23, x0
- ; gcrRegs +[x23]
+ mov x22, x0
+ ; gcrRegs +[x22]
bl <unknown method>
; gcrRegs -[x0]
; gcr arg pop 0
- str w0, [x23, #0x10]
- add x14, x23, #24
+ str w0, [x22, #0x10]
+ add x14, x22, #24
; byrRegs +[x14]
mov x15, x28
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x28]
; byrRegs -[x14]
...
benchmarks.run_tiered.osx.arm64.checked.mch
-28 (-7.61%) : 26198.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
@@ -38,8 +38,8 @@ G_M23091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1]
ldr w14, [x19, #0x60]
- cbnz w14, G_M23091_IG08
- cbz x1, G_M23091_IG09
+ cbnz w14, G_M23091_IG07
+ cbz x1, G_M23091_IG08
add x14, x1, #172
; byrRegs +[x14]
mov w15, #1
@@ -47,7 +47,7 @@ G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180
mov w0, w12
casal w0, w15, [x14]
str w0, [fp, #0x24] // [V07 tmp3]
- cbnz w0, G_M23091_IG10
+ cbnz w0, G_M23091_IG09
mov w14, #4
; byrRegs -[x14]
str w14, [x1, #0x94]
@@ -59,21 +59,10 @@ G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180
; gcrRegs -[x15]
; byrRegs -[x14]
ldrb w0, [x1, #0xBA]
- cbnz w0, G_M23091_IG04
+ cbz w0, G_M23091_IG04
;; size=68 bbWeight=1 PerfScore 19.50
-G_M23091_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M23091_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- ldr x0, [x0]
- ; gcrRegs +[x0]
- ldrb w0, [x0, #0x9D]
- ; gcrRegs -[x0]
- cbz w0, G_M23091_IG05
- b G_M23091_IG05
- ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M23091_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -91,7 +80,7 @@ G_M23091_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x0-x1 x15]
; byrRegs -[x14]
;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M23091_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M23091_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
ldr x0, [fp, #0x18] // [V01 arg1]
@@ -106,17 +95,17 @@ G_M23091_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x0-x2 x19-x20]
; gcr arg pop 0
;; size=32 bbWeight=1 PerfScore 11.00
-G_M23091_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
cmp w0, #0xD1FFAB1E
cset x0, eq
;; size=8 bbWeight=1 PerfScore 1.00
-G_M23091_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M23091_IG06: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x40
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M23091_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
@@ -129,7 +118,7 @@ G_M23091_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M23091_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23091_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -146,7 +135,7 @@ G_M23091_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG09: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1]
; GC ptr vars +{V00 V01}
mov x0, x1
@@ -163,14 +152,14 @@ G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
; gcr arg pop 0
brk_unix #0
;; size=32 bbWeight=0 PerfScore 0.00
-G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
add x3, fp, #64
str x3, [sp, #0x18]
;; size=16 bbWeight=0 PerfScore 0.00
-G_M23091_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -186,7 +175,7 @@ G_M23091_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
brk_unix #0
;; size=32 bbWeight=0 PerfScore 0.00
-Total bytes of code 368, prolog size 32, PerfScore 50.00, instruction count 92, allocated bytes for code 368 (MethodHash=03bba5cc) for method System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
+Total bytes of code 340, prolog size 32, PerfScore 45.25, instruction count 85, allocated bytes for code 340 (MethodHash=03bba5cc) for method System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -197,7 +186,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -230,4 +219,4 @@ Unwind Info:
*************** EH table for System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M23091_IG05..G_M23091_IG06) handled by [G_M23091_IG11..END) (class: 1000001)
+EH#0: try [G_M23091_IG04..G_M23091_IG05) handled by [G_M23091_IG10..END) (class: 1000001)
-28 (-7.61%) : 26271.dasm - System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
@@ -38,8 +38,8 @@ G_M29540_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1]
ldr w14, [x19, #0x60]
- cbnz w14, G_M29540_IG08
- cbz x1, G_M29540_IG09
+ cbnz w14, G_M29540_IG07
+ cbz x1, G_M29540_IG08
add x14, x1, #172
; byrRegs +[x14]
mov w15, #1
@@ -47,7 +47,7 @@ G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180
mov w0, w12
casal w0, w15, [x14]
str w0, [fp, #0x24] // [V07 tmp3]
- cbnz w0, G_M29540_IG10
+ cbnz w0, G_M29540_IG09
mov w14, #7
; byrRegs -[x14]
str w14, [x1, #0x94]
@@ -59,21 +59,10 @@ G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=180
; gcrRegs -[x15]
; byrRegs -[x14]
ldrb w0, [x1, #0xBA]
- cbnz w0, G_M29540_IG04
+ cbz w0, G_M29540_IG04
;; size=68 bbWeight=1 PerfScore 19.50
-G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- ldr x0, [x0]
- ; gcrRegs +[x0]
- ldrb w0, [x0, #0x9D]
- ; gcrRegs -[x0]
- cbz w0, G_M29540_IG05
- b G_M29540_IG05
- ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -91,7 +80,7 @@ G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x0-x1 x15]
; byrRegs -[x14]
;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M29540_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M29540_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
ldr x0, [fp, #0x18] // [V01 arg1]
@@ -106,17 +95,17 @@ G_M29540_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x0-x2 x19-x20]
; gcr arg pop 0
;; size=32 bbWeight=1 PerfScore 11.00
-G_M29540_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
cmp w0, #0xD1FFAB1E
cset x0, eq
;; size=8 bbWeight=1 PerfScore 1.00
-G_M29540_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M29540_IG06: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x40
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M29540_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
@@ -129,7 +118,7 @@ G_M29540_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M29540_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29540_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -146,7 +135,7 @@ G_M29540_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG09: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1]
; GC ptr vars +{V00 V01}
mov x0, x1
@@ -163,14 +152,14 @@ G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
; gcr arg pop 0
brk_unix #0
;; size=32 bbWeight=0 PerfScore 0.00
-G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
add x3, fp, #64
str x3, [sp, #0x18]
;; size=16 bbWeight=0 PerfScore 0.00
-G_M29540_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -186,7 +175,7 @@ G_M29540_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
brk_unix #0
;; size=32 bbWeight=0 PerfScore 0.00
-Total bytes of code 368, prolog size 32, PerfScore 50.00, instruction count 92, allocated bytes for code 368 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
+Total bytes of code 340, prolog size 32, PerfScore 45.25, instruction count 85, allocated bytes for code 340 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -197,7 +186,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -230,4 +219,4 @@ Unwind Info:
*************** EH table for System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M29540_IG05..G_M29540_IG06) handled by [G_M29540_IG11..END) (class: 1000001)
+EH#0: try [G_M29540_IG04..G_M29540_IG05) handled by [G_M29540_IG10..END) (class: 1000001)
-28 (-4.02%) : 14623.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
@@ -48,8 +48,8 @@ G_M38239_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M38239_IG02: ; bbWeight=1, gcVars=0000000000000003 {V00 V01}, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0]
ldr w1, [x0, #0x60]
- cbnz w1, G_M38239_IG14
- cbz x19, G_M38239_IG15
+ cbnz w1, G_M38239_IG13
+ cbz x19, G_M38239_IG14
ldr x1, [x19, #0x28]
; gcrRegs +[x1]
str x1, [fp, #0x28] // [V03 loc0]
@@ -60,7 +60,7 @@ G_M38239_IG03: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=
; gcrRegs -[x1]
ldr x1, [fp, #0x28] // [V03 loc0]
; gcrRegs +[x1]
- cbz x1, G_M38239_IG16
+ cbz x1, G_M38239_IG15
add x1, fp, #40 // [V03 loc0]
; gcrRegs -[x1]
movz x2, #0xD1FFAB1E // code for System.Net.Sockets.Socket:Serialize(byref):System.Net.SocketAddress:this
@@ -86,7 +86,7 @@ G_M38239_IG04: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=000
mov w12, wzr
mov w1, w12
casal w1, w15, [x14]
- cbnz w1, G_M38239_IG17
+ cbnz w1, G_M38239_IG16
mov w14, #9
; byrRegs -[x14]
str w14, [x19, #0x94]
@@ -98,20 +98,9 @@ G_M38239_IG04: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=000
; gcrRegs -[x0 x15]
; byrRegs -[x14]
ldrb w1, [x19, #0xBA]
- cbnz w1, G_M38239_IG06
+ cbz w1, G_M38239_IG06
;; size=52 bbWeight=1 PerfScore 13.50
-G_M38239_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- ; gcrRegs +[x1]
- ldrb w1, [x1, #0x9D]
- ; gcrRegs -[x1]
- cbz w1, G_M38239_IG07
- b G_M38239_IG07
- ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M38239_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M38239_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E // code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -127,7 +116,7 @@ G_M38239_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x0 x15]
; byrRegs -[x14]
;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M38239_IG07: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M38239_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
ldr x14, [x0, #0x10]
@@ -136,9 +125,9 @@ G_M38239_IG07: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs +[x21]
str x21, [fp, #0x10] // [V04 loc1]
; GC ptr vars +{V04}
- cbnz x14, G_M38239_IG09
+ cbnz x14, G_M38239_IG08
;; size=20 bbWeight=1 PerfScore 7.50
-G_M38239_IG08: ; bbWeight=0.50, gcVars=0000000000000083 {V00 V01 V04}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG07: ; bbWeight=0.50, gcVars=0000000000000083 {V00 V01 V04}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x14]
add x14, x0, #16
; byrRegs +[x14]
@@ -148,7 +137,7 @@ G_M38239_IG08: ; bbWeight=0.50, gcVars=0000000000000083 {V00 V01 V04}, gc
; gcrRegs -[x15]
; byrRegs -[x14]
;; size=12 bbWeight=0.50 PerfScore 1.75
-G_M38239_IG09: ; bbWeight=1, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M38239_IG08: ; bbWeight=1, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref
ldr x1, [x0, #0x08]
; gcrRegs +[x1]
mov x0, x19
@@ -163,7 +152,7 @@ G_M38239_IG09: ; bbWeight=1, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs
; gcr arg pop 0
sxtw w20, w0
;; size=36 bbWeight=1 PerfScore 10.00
-G_M38239_IG10: ; bbWeight=1, gcVars=0000000000000082 {V00 V04}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38239_IG09: ; bbWeight=1, gcVars=0000000000000082 {V00 V04}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x19]
; GC ptr vars -{V00 V01}
ldr x0, [fp, #0x20] // [V00 this]
@@ -176,9 +165,9 @@ G_M38239_IG10: ; bbWeight=1, gcVars=0000000000000082 {V00 V04}, gcrefRegs
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- cbnz w0, G_M38239_IG12
+ cbnz w0, G_M38239_IG11
;; size=32 bbWeight=1 PerfScore 9.00
-G_M38239_IG11: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M38239_IG10: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
add x14, x0, #16
@@ -191,19 +180,19 @@ G_M38239_IG11: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}
; byrRegs -[x14]
str xzr, [x0, #0x20]
;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M38239_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG11: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
; GC ptr vars -{V00}
cmp w20, #0xD1FFAB1E
cset x0, eq
;; size=8 bbWeight=1 PerfScore 1.00
-G_M38239_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M38239_IG12: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x48]
ldp x19, x20, [sp, #0x38]
ldp fp, lr, [sp], #0x50
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M38239_IG14: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG13: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
; GC ptr vars +{V00 V01}
movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowObjectDisposedException(System.Object)
@@ -216,7 +205,7 @@ G_M38239_IG14: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M38239_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38239_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -233,7 +222,7 @@ G_M38239_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M38239_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38239_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -298,7 +287,7 @@ G_M38239_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19]
; gcr arg pop 0
;; size=156 bbWeight=0 PerfScore 0.00
-G_M38239_IG17: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG16: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
; GC ptr vars +{V00 V01}
mov x0, x19
@@ -313,7 +302,7 @@ G_M38239_IG17: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=800
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M38239_IG18: ; bbWeight=0, gcVars=0000000000000083 {V00 V01 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M38239_IG17: ; bbWeight=0, gcVars=0000000000000083 {V00 V01 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01 V04}
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x18]
@@ -321,7 +310,7 @@ G_M38239_IG18: ; bbWeight=0, gcVars=0000000000000083 {V00 V01 V04}, gcref
add x3, fp, #80
str x3, [sp, #0x10]
;; size=20 bbWeight=0 PerfScore 0.00
-G_M38239_IG19: ; bbWeight=0, gcVars=0000000000000083 {V00 V01 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG18: ; bbWeight=0, gcVars=0000000000000083 {V00 V01 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
add x14, x0, #16
@@ -347,7 +336,7 @@ G_M38239_IG19: ; bbWeight=0, gcVars=0000000000000083 {V00 V01 V04}, gcref
brk_unix #0
;; size=52 bbWeight=0 PerfScore 0.00
-Total bytes of code 696, prolog size 40, PerfScore 86.25, instruction count 174, allocated bytes for code 696 (MethodHash=86656aa0) for method System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
+Total bytes of code 668, prolog size 40, PerfScore 81.50, instruction count 167, allocated bytes for code 668 (MethodHash=86656aa0) for method System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -358,7 +347,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 156 (0x0009c) Actual length = 624 (0x000270)
+ Function Length : 149 (0x00095) Actual length = 596 (0x000254)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -393,4 +382,4 @@ Unwind Info:
*************** EH table for System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M38239_IG09..G_M38239_IG10) handled by [G_M38239_IG18..END) (class: 1000001)
+EH#0: try [G_M38239_IG08..G_M38239_IG09) handled by [G_M38239_IG17..END) (class: 1000001)
-32 (-0.24%) : 23068.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
@@ -60,7 +60,7 @@
; V49 tmp36 [V49,T151] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
; V50 tmp37 [V50,T152] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
; V51 tmp38 [V51,T153] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
-; V52 tmp39 [V52,T326] ( 3, 1.50) long -> x0 single-def "Inline stloc first use temp"
+; V52 tmp39 [V52,T326] ( 2, 1 ) long -> x0 single-def "Inline stloc first use temp"
;* V53 tmp40 [V53,T327] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V54 tmp41 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V55 tmp42 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
@@ -108,7 +108,7 @@
;* V97 tmp84 [V97 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V98 tmp85 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V99 tmp86 [V99 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V100 tmp87 [V100,T114] ( 3, 10 ) long -> x0 "Inline stloc first use temp"
+; V100 tmp87 [V100,T114] ( 2, 8 ) long -> x0 "Inline stloc first use temp"
;* V101 tmp88 [V101,T121] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V102 tmp89 [V102 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V103 tmp90 [V103 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
@@ -513,7 +513,7 @@ G_M11467_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x2, [x23, #0x10]
blr x2
; gcrRegs -[x0-x1 x19]
- b G_M11467_IG260
+ b G_M11467_IG258
;; size=40 bbWeight=0.50 PerfScore 8.00
G_M11467_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x21]
@@ -568,13 +568,13 @@ G_M11467_IG05: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
; gcrRegs -[x0-x1]
ldr w0, [x24, #0x08]
cmp w0, #0
- blt G_M11467_IG262
+ blt G_M11467_IG260
sxtw w25, w0
cmp w0, #0
ble G_M11467_IG44
ldr w0, [x24, #0x08]
cmp w0, #0
- bls G_M11467_IG261
+ bls G_M11467_IG259
ldrb w26, [x24, #0x10]
mov w0, #0xD1FFAB1E
cmp w26, w0
@@ -754,7 +754,7 @@ G_M11467_IG17: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
ldr x4, [x4]
; gcrRegs +[x4]
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x26, x4, #16
; byrRegs +[x26]
ldrh w4, [x26, w2, UXTW #2]
@@ -770,7 +770,7 @@ G_M11467_IG18: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
; gcrRegs +[x4]
add w5, w2, #1
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x26, x4, #16
; byrRegs +[x26]
add w4, w2, #1
@@ -787,7 +787,7 @@ G_M11467_IG19: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
; gcrRegs +[x4]
add w5, w2, #2
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x26, x4, #16
; byrRegs +[x26]
add w2, w2, #2
@@ -803,7 +803,7 @@ G_M11467_IG20: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
ldr x4, [x2]
; gcrRegs +[x4]
cmp w1, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x26, x4, #16
; byrRegs +[x26]
ldrh w2, [x26, w1, UXTW #2]
@@ -819,7 +819,7 @@ G_M11467_IG21: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
; gcrRegs +[x4]
add w2, w1, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x26, x4, #16
; byrRegs +[x26]
add w2, w1, #1
@@ -839,7 +839,7 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
add w4, w1, #2
; gcrRegs -[x4]
cmp w4, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x26, x2, #16
; byrRegs +[x26]
add w2, w1, #2
@@ -847,18 +847,18 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
ldrh w2, [x26, w2, UXTW #2]
strh w2, [x21, #0x1C]
cmp w0, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
ldrh w2, [x26, w0, UXTW #2]
strh w2, [x21, #0x1E]
add w2, w0, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add w2, w0, #1
ldrh w2, [x26, w2, UXTW #2]
strh w2, [x21, #0x20]
add w2, w0, #2
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add w2, w0, #2
ldrh w2, [x26, w2, UXTW #2]
strh w2, [x21, #0x22]
@@ -882,7 +882,7 @@ G_M11467_IG24: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
beq G_M11467_IG44
ldr w1, [x24, #0x08]
cmp w26, w1
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x1, x24, #16
; byrRegs +[x1]
ldrb w28, [x1, w26, UXTW #2]
@@ -1088,7 +1088,7 @@ G_M11467_IG37: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
ldr x4, [x4]
; gcrRegs +[x4]
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1104,7 +1104,7 @@ G_M11467_IG38: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
; gcrRegs +[x4]
add w5, w2, #1
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1121,7 +1121,7 @@ G_M11467_IG39: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
; gcrRegs +[x4]
add w5, w2, #2
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1137,7 +1137,7 @@ G_M11467_IG40: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
ldr x4, [x2]
; gcrRegs +[x4]
cmp w1, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1153,7 +1153,7 @@ G_M11467_IG41: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
; gcrRegs +[x4]
add w2, w1, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1173,7 +1173,7 @@ G_M11467_IG42: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
add w4, w1, #2
; gcrRegs -[x4]
cmp w4, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add x4, x2, #16
; byrRegs +[x4]
add w2, w1, #2
@@ -1181,18 +1181,18 @@ G_M11467_IG42: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
ldrh w2, [x4, w2, UXTW #2]
strh w2, [x21, #0x1C]
cmp w0, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
ldrh w2, [x4, w0, UXTW #2]
strh w2, [x21, #0x1E]
add w2, w0, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add w2, w0, #1
ldrh w2, [x4, w2, UXTW #2]
strh w2, [x21, #0x20]
add w2, w0, #2
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG261
+ bhs G_M11467_IG259
add w2, w0, #2
ldrh w2, [x4, w2, UXTW #2]
strh w2, [x21, #0x22]
@@ -1249,7 +1249,7 @@ G_M11467_IG45: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
ldr x2, [x23, #0x10]
blr x2
; gcrRegs -[x0-x1 x27]
- b G_M11467_IG91
+ b G_M11467_IG89
;; size=68 bbWeight=0.50 PerfScore 11.50
G_M11467_IG46: ; bbWeight=0.50, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x27]
@@ -1265,34 +1265,28 @@ G_M11467_IG46: ; bbWeight=0.50, gcrefRegs=8380000 {x19 x20 x21 x27}, byre
; gcrRegs -[x0-x1]
ldr w0, [x27, #0x08]
cmp w0, #0
- blt G_M11467_IG262
+ blt G_M11467_IG260
sxtw w26, w0
cmp w0, #0
- ble G_M11467_IG90
+ ble G_M11467_IG88
ldr w0, [x27, #0x08]
cmp w0, #0
- bls G_M11467_IG261
+ bls G_M11467_IG259
ldr x24, [x27, #0x10]
and x0, x24, #0xD1FFAB1E
- cbz x0, G_M11467_IG47
- mov x1, #0xD1FFAB1E
- cmp x0, x1
- beq G_M11467_IG48
- b G_M11467_IG48
- ;; size=92 bbWeight=0.50 PerfScore 13.75
-G_M11467_IG47: ; bbWeight=0.50, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=0000 {}, byref
+ cbnz x0, G_M11467_IG47
and x0, x24, #0xD1FFAB1E
orr x24, x0, #0xD1FFAB1E
- ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M11467_IG48: ; bbWeight=0.50, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=0000 {}, byref, isz
+ ;; size=84 bbWeight=0.50 PerfScore 12.75
+G_M11467_IG47: ; bbWeight=0.50, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=0000 {}, byref, isz
and x0, x24, #0xD1FFAB1E
- cbz x0, G_M11467_IG49
+ cbz x0, G_M11467_IG48
mov x1, #0xD1FFAB1E
cmp x0, x1
- bne G_M11467_IG49
- b G_M11467_IG51
...
+0 (0.00%) : 45978.dasm - LinqBenchmarks:Count00ForX():ubyte:this (Tier1-OSR)
@@ -10,27 +10,26 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <LinqBenchmarks>
-; V01 loc0 [V01,T11] ( 2, 4 ) ref -> x2 class-hnd <System.Collections.Generic.List`1[Product]>
-; V02 loc1 [V02,T10] ( 3, 17 ) int -> x1
-; V03 loc2 [V03,T08] ( 3, 24 ) int -> x0
-; V04 loc3 [V04,T13] ( 4, 1.03) struct (24) [fp+0x38] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
+; V01 loc0 [V01,T09] ( 2, 4 ) ref -> x2 class-hnd <System.Collections.Generic.List`1[Product]>
+; V02 loc1 [V02,T08] ( 3, 17 ) int -> x1
+; V03 loc2 [V03,T06] ( 3, 24 ) int -> x0
+; V04 loc3 [V04,T11] ( 4, 1.03) struct (24) [fp+0x38] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <Product>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V07 tmp1 [V07,T03] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Product]>
-; V09 tmp3 [V09,T00] ( 3, 80 ) ubyte -> x8 "Inline return value spill temp"
+; V09 tmp3 [V09,T01] ( 3, 80 ) ubyte -> x7 "Inline return value spill temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref "field V08._list (fldOffset=0x0)" P-INDEP
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref "field V08._current (fldOffset=0x8)" P-INDEP
;* V13 tmp7 [V13 ] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x10)" P-INDEP
-; V14 tmp8 [V14,T12] ( 2, 4 ) int -> x5 "field V08._version (fldOffset=0x14)" P-INDEP
-; V15 tmp9 [V15,T06] ( 5, 26.01) ref -> x3 "V04.[000..008)"
-; V16 tmp10 [V16,T07] ( 3, 24 ) ref -> x7 "V04.[008..016)"
-; V17 tmp11 [V17,T04] ( 8, 50.01) int -> x4 "V04.[016..020)"
+; V14 tmp8 [V14,T10] ( 2, 4 ) int -> x5 "field V08._version (fldOffset=0x14)" P-INDEP
+; V15 tmp9 [V15,T00] ( 5, 82.01) ref -> x3 "V04.[000..008)"
+; V16 tmp10 [V16,T05] ( 3, 24 ) ref -> x6 "V04.[008..016)"
+; V17 tmp11 [V17,T03] ( 8, 50.01) int -> x4 "V04.[016..020)"
; V18 tmp12 [V18,T02] ( 3, 66.01) int -> x5 "V04.[020..024)"
-; V19 tmp13 [V19,T05] ( 3, 48 ) ref -> x7 "arr expr"
-; V20 cse0 [V20,T01] ( 2, 72 ) int -> x6 hoist "CSE - aggressive"
-; V21 cse1 [V21,T09] ( 3, 24 ) int -> x7 "CSE - aggressive"
+; V19 tmp13 [V19,T04] ( 3, 48 ) ref -> x6 "arr expr"
+; V20 cse0 [V20,T07] ( 3, 24 ) int -> x6 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -45,7 +44,7 @@ G_M51974_IG02: ; bbWeight=0.01, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
ldr x3, [fp, #0x38] // [V04 loc3]
; gcrRegs +[x3]
ldp w4, w5, [fp, #0x48] // [V04 loc3+0x10], [V04 loc3+0x14]
- b G_M51974_IG04
+ b G_M51974_IG05
;; size=12 bbWeight=0.01 PerfScore 0.05
G_M51974_IG03: ; bbWeight=2, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x3]
@@ -53,76 +52,74 @@ G_M51974_IG03: ; bbWeight=2, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byre
mov x3, x2
; gcrRegs +[x3]
mov w4, wzr
- ;; size=12 bbWeight=2 PerfScore 8.00
-G_M51974_IG04: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- ldr w6, [x3, #0x14]
- b G_M51974_IG06
- ;; size=8 bbWeight=8 PerfScore 32.00
-G_M51974_IG05: ; bbWeight=8, gcrefRegs=008C {x2 x3 x7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x7]
- ldr w7, [x7, #0x1C]
- ; gcrRegs -[x7]
- cbnz w7, G_M51974_IG06
+ b G_M51974_IG05
+ ;; size=16 bbWeight=2 PerfScore 10.00
+G_M51974_IG04: ; bbWeight=8, gcrefRegs=004C {x2 x3 x6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x6]
+ ldr w6, [x6, #0x1C]
+ ; gcrRegs -[x6]
+ cbnz w6, G_M51974_IG05
add w1, w1, #1
;; size=12 bbWeight=8 PerfScore 36.00
-G_M51974_IG06: ; bbWeight=64, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+G_M51974_IG05: ; bbWeight=64, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+ ldr w6, [x3, #0x14]
cmp w5, w6
- bne G_M51974_IG14
- ;; size=8 bbWeight=64 PerfScore 96.00
-G_M51974_IG07: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
- ldr w7, [x3, #0x10]
+ bne G_M51974_IG13
+ ;; size=12 bbWeight=64 PerfScore 288.00
+G_M51974_IG06: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+ ldr w6, [x3, #0x10]
+ cmp w4, w6
+ bhs G_M51974_IG07
+ ldr x6, [x3, #0x08]
+ ; gcrRegs +[x6]
+ ldr w7, [x6, #0x08]
cmp w4, w7
- bhs G_M51974_IG08
- ldr x7, [x3, #0x08]
- ; gcrRegs +[x7]
- ldr w8, [x7, #0x08]
- cmp w4, w8
- bhs G_M51974_IG13
- add x7, x7, #16
- ; gcrRegs -[x7]
- ; byrRegs +[x7]
- ldr x7, [x7, w4, UXTW #3]
- ; gcrRegs +[x7]
- ; byrRegs -[x7]
+ bhs G_M51974_IG12
+ add x6, x6, #16
+ ; gcrRegs -[x6]
+ ; byrRegs +[x6]
+ ldr x6, [x6, w4, UXTW #3]
+ ; gcrRegs +[x6]
+ ; byrRegs -[x6]
add w4, w4, #1
- mov w8, #1
- b G_M51974_IG09
+ mov w7, #1
+ b G_M51974_IG08
;; size=48 bbWeight=8 PerfScore 140.00
-G_M51974_IG08: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x7]
- add w4, w7, #1
- mov x7, xzr
- ; gcrRegs +[x7]
- mov w8, wzr
+G_M51974_IG07: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x6]
+ add w4, w6, #1
+ mov x6, xzr
+ ; gcrRegs +[x6]
+ mov w7, wzr
;; size=12 bbWeight=8 PerfScore 12.00
-G_M51974_IG09: ; bbWeight=64, gcrefRegs=008C {x2 x3 x7}, byrefRegs=0000 {}, byref, isz
- cbnz w8, G_M51974_IG05
+G_M51974_IG08: ; bbWeight=64, gcrefRegs=004C {x2 x3 x6}, byrefRegs=0000 {}, byref, isz
+ cbnz w7, G_M51974_IG04
;; size=4 bbWeight=64 PerfScore 64.00
-G_M51974_IG10: ; bbWeight=8, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x3 x7]
+G_M51974_IG09: ; bbWeight=8, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x3 x6]
add w0, w0, #1
movz w3, #0xD1FFAB1E
movk w3, #15 LSL #16
cmp w0, w3
blt G_M51974_IG03
;; size=20 bbWeight=8 PerfScore 24.00
-G_M51974_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51974_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
movz w0, #0xD1FFAB1E
movk w0, #76 LSL #16
cmp w1, w0
cset x0, eq
;; size=16 bbWeight=1 PerfScore 2.00
-G_M51974_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M51974_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
add sp, sp, #96
ret lr
;; size=12 bbWeight=1 PerfScore 2.50
-G_M51974_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M51974_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M51974_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51974_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -132,7 +129,7 @@ G_M51974_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 208, prolog size 16, PerfScore 416.61, instruction count 52, allocated bytes for code 208 (MethodHash=877634f9) for method LinqBenchmarks:Count00ForX():ubyte:this (Tier1-OSR)
+Total bytes of code 208, prolog size 16, PerfScore 578.61, instruction count 52, allocated bytes for code 208 (MethodHash=877634f9) for method LinqBenchmarks:Count00ForX():ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
+0 (0.00%) : 30587.dasm - PerfLabTests.LowLevelPerf:ForeachOverList100Elements():int:this (Tier1-OSR)
@@ -10,27 +10,26 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.LowLevelPerf>
-; V01 loc0 [V01,T11] ( 2, 4 ) ref -> x2 class-hnd <System.Collections.Generic.List`1[int]>
-; V02 loc1 [V02,T10] ( 2, 9 ) int -> x1
-; V03 loc2 [V03,T07] ( 3, 24 ) int -> x0
-; V04 loc3 [V04,T13] ( 4, 1.03) struct (24) [fp+0x38] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[int]>
+; V01 loc0 [V01,T09] ( 2, 4 ) ref -> x2 class-hnd <System.Collections.Generic.List`1[int]>
+; V02 loc1 [V02,T08] ( 2, 9 ) int -> x1
+; V03 loc2 [V03,T05] ( 3, 24 ) int -> x0
+; V04 loc3 [V04,T11] ( 4, 1.03) struct (24) [fp+0x38] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[int]>
;* V05 loc4 [V05 ] ( 0, 0 ) int -> zero-ref
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V07 tmp1 [V07,T03] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]>
-; V09 tmp3 [V09,T00] ( 3, 80 ) ubyte -> x8 "Inline return value spill temp"
+; V09 tmp3 [V09,T01] ( 3, 80 ) ubyte -> x7 "Inline return value spill temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[int]>
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref "field V08._list (fldOffset=0x0)" P-INDEP
;* V12 tmp6 [V12 ] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x8)" P-INDEP
-; V13 tmp7 [V13,T12] ( 2, 4 ) int -> x5 "field V08._version (fldOffset=0xc)" P-INDEP
+; V13 tmp7 [V13,T10] ( 2, 4 ) int -> x5 "field V08._version (fldOffset=0xc)" P-INDEP
;* V14 tmp8 [V14 ] ( 0, 0 ) int -> zero-ref "field V08._current (fldOffset=0x10)" P-INDEP
-; V15 tmp9 [V15,T06] ( 5, 26.01) ref -> x3 "V04.[000..008)"
-; V16 tmp10 [V16,T04] ( 8, 50.01) int -> x4 "V04.[008..012)"
+; V15 tmp9 [V15,T00] ( 5, 82.01) ref -> x3 "V04.[000..008)"
+; V16 tmp10 [V16,T03] ( 8, 50.01) int -> x4 "V04.[008..012)"
; V17 tmp11 [V17,T02] ( 3, 66.01) int -> x5 "V04.[012..016)"
-; V18 tmp12 [V18,T08] ( 3, 24 ) int -> x7 "V04.[016..020)"
-; V19 tmp13 [V19,T05] ( 3, 48 ) ref -> x7 "arr expr"
-; V20 cse0 [V20,T01] ( 2, 72 ) int -> x6 hoist "CSE - aggressive"
-; V21 cse1 [V21,T09] ( 3, 24 ) int -> x7 "CSE - aggressive"
+; V18 tmp12 [V18,T06] ( 3, 24 ) int -> x6 "V04.[016..020)"
+; V19 tmp13 [V19,T04] ( 3, 48 ) ref -> x6 "arr expr"
+; V20 cse0 [V20,T07] ( 3, 24 ) int -> x6 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -45,7 +44,7 @@ G_M6486_IG02: ; bbWeight=0.01, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, by
ldr x3, [fp, #0x38] // [V04 loc3]
; gcrRegs +[x3]
ldp w4, w5, [fp, #0x40] // [V04 loc3+0x08], [V04 loc3+0x0c]
- b G_M6486_IG04
+ b G_M6486_IG05
;; size=12 bbWeight=0.01 PerfScore 0.05
G_M6486_IG03: ; bbWeight=2, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x3]
@@ -53,45 +52,43 @@ G_M6486_IG03: ; bbWeight=2, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
mov x3, x2
; gcrRegs +[x3]
mov w4, wzr
- ;; size=12 bbWeight=2 PerfScore 8.00
+ b G_M6486_IG05
+ ;; size=16 bbWeight=2 PerfScore 10.00
G_M6486_IG04: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- ldr w6, [x3, #0x14]
- b G_M6486_IG06
- ;; size=8 bbWeight=8 PerfScore 32.00
-G_M6486_IG05: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- sxtw w1, w7
+ sxtw w1, w6
;; size=4 bbWeight=8 PerfScore 4.00
-G_M6486_IG06: ; bbWeight=64, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+G_M6486_IG05: ; bbWeight=64, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+ ldr w6, [x3, #0x14]
cmp w5, w6
- bne G_M6486_IG14
- ;; size=8 bbWeight=64 PerfScore 96.00
-G_M6486_IG07: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
- ldr w7, [x3, #0x10]
+ bne G_M6486_IG13
+ ;; size=12 bbWeight=64 PerfScore 288.00
+G_M6486_IG06: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+ ldr w6, [x3, #0x10]
+ cmp w4, w6
+ bhs G_M6486_IG07
+ ldr x6, [x3, #0x08]
+ ; gcrRegs +[x6]
+ ldr w7, [x6, #0x08]
cmp w4, w7
- bhs G_M6486_IG08
- ldr x7, [x3, #0x08]
- ; gcrRegs +[x7]
- ldr w8, [x7, #0x08]
- cmp w4, w8
- bhs G_M6486_IG13
- add x7, x7, #16
- ; gcrRegs -[x7]
- ; byrRegs +[x7]
- ldr w7, [x7, w4, UXTW #2]
- ; byrRegs -[x7]
+ bhs G_M6486_IG12
+ add x6, x6, #16
+ ; gcrRegs -[x6]
+ ; byrRegs +[x6]
+ ldr w6, [x6, w4, UXTW #2]
+ ; byrRegs -[x6]
add w4, w4, #1
- mov w8, #1
- b G_M6486_IG09
+ mov w7, #1
+ b G_M6486_IG08
;; size=48 bbWeight=8 PerfScore 140.00
-G_M6486_IG08: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- add w4, w7, #1
+G_M6486_IG07: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
+ add w4, w6, #1
+ mov w6, wzr
mov w7, wzr
- mov w8, wzr
;; size=12 bbWeight=8 PerfScore 12.00
-G_M6486_IG09: ; bbWeight=64, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
- cbnz w8, G_M6486_IG05
+G_M6486_IG08: ; bbWeight=64, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+ cbnz w7, G_M6486_IG04
;; size=4 bbWeight=64 PerfScore 64.00
-G_M6486_IG10: ; bbWeight=8, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M6486_IG09: ; bbWeight=8, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x3]
add w0, w0, #1
movz x3, #0xD1FFAB1E // data for <unknown class>:<unknown field>
@@ -101,20 +98,20 @@ G_M6486_IG10: ; bbWeight=8, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
cmp w0, w4
blt G_M6486_IG03
;; size=28 bbWeight=8 PerfScore 52.00
-G_M6486_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6486_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
mov w0, w1
;; size=4 bbWeight=1 PerfScore 0.50
-G_M6486_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M6486_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
add sp, sp, #96
ret lr
;; size=12 bbWeight=1 PerfScore 2.50
-G_M6486_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6486_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M6486_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6486_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -124,7 +121,7 @@ G_M6486_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 196, prolog size 16, PerfScore 411.11, instruction count 49, allocated bytes for code 196 (MethodHash=b0f1e6a9) for method PerfLabTests.LowLevelPerf:ForeachOverList100Elements():int:this (Tier1-OSR)
+Total bytes of code 196, prolog size 16, PerfScore 573.11, instruction count 49, allocated bytes for code 196 (MethodHash=b0f1e6a9) for method PerfLabTests.LowLevelPerf:ForeachOverList100Elements():int:this (Tier1-OSR)
; ============================================================
Unwind Info:
coreclr_tests.run.osx.arm64.checked.mch
-44 (-55.00%) : 242749.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 5, 4 ) float -> d0 single-def
+;* V00 loc0 [V00 ] ( 0, 0 ) float -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 4 ) float -> d0 "Single return block return value"
+; V02 tmp1 [V02,T00] ( 2, 4 ) float -> d0 "Single return block return value"
;
; Lcl frame size = 0
@@ -18,34 +18,19 @@ G_M53791_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
ldr x0, [x0]
blr x0
- fmov s16, #10.0000
- fcmp s0, s16
- ble G_M53791_IG04
- ;; size=32 bbWeight=1 PerfScore 8.00
-G_M53791_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M53791_IG05
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M53791_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- fmov s16, #10.0000
- fcmp s0, s16
- blo G_M53791_IG03
- fmov s16, #10.0000
- fcmp s0, s16
- bne G_M53791_IG03
- b G_M53791_IG03
- ;; size=28 bbWeight=0.50 PerfScore 3.00
-G_M53791_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M53791_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-Total bytes of code 80, prolog size 8, PerfScore 15.50, instruction count 20, allocated bytes for code 80 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -56,7 +41,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-43.75%) : 242697.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 4, 3.50) float -> d0 single-def
+;* V00 loc0 [V00 ] ( 0, 0 ) float -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
@@ -17,28 +17,19 @@ G_M53663_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
ldr x0, [x0]
blr x0
- fmov s16, #10.0000
- fcmp s0, s16
- bhs G_M53663_IG04
- ;; size=32 bbWeight=1 PerfScore 8.00
-G_M53663_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M53663_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- fmov s16, #10.0000
- fcmp s0, s16
- bne G_M53663_IG03
- b G_M53663_IG03
- ;; size=16 bbWeight=0.50 PerfScore 1.75
-Total bytes of code 64, prolog size 8, PerfScore 13.25, instruction count 16, allocated bytes for code 64 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -49,7 +40,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-43.75%) : 236255.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 4, 3.50) float -> d0 single-def
+; V00 loc0 [V00,T00] ( 2, 2 ) float -> d0 single-def
;* V01 loc1 [V01 ] ( 0, 0 ) float -> zero-ref
;* V02 loc2 [V02 ] ( 0, 0 ) float -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -19,28 +19,19 @@ G_M53663_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
ldr x0, [x0]
blr x0
- fmov s16, #10.0000
- fcmp s0, s16
- bhs G_M53663_IG04
- ;; size=32 bbWeight=1 PerfScore 8.00
-G_M53663_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M53663_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- fmov s16, #10.0000
- fcmp s0, s16
- bne G_M53663_IG03
- b G_M53663_IG03
- ;; size=16 bbWeight=0.50 PerfScore 1.75
-Total bytes of code 64, prolog size 8, PerfScore 13.25, instruction count 16, allocated bytes for code 64 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -51,7 +42,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+6.25%) : 15861.dasm - testout1:SubFunclet106():int (FullOpts)
@@ -15,14 +15,14 @@
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
; V05 loc5 [V05,T01] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T04] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T03] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
; V08 loc8 [V08,T00] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref single-def
+;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref single-def
@@ -31,60 +31,60 @@
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref single-def
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-;* V23 tmp14 [V23,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V23 tmp14 [V23,T20] ( 0, 0 ) int -> zero-ref single-def
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T08] ( 2, 2 ) int -> x1 single-def
+; V26 tmp17 [V26,T09] ( 2, 2 ) int -> x2 single-def
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-; V29 tmp20 [V29,T09] ( 2, 2 ) int -> x1 single-def
+; V29 tmp20 [V29,T10] ( 2, 2 ) int -> x2 single-def
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
-; V32 tmp23 [V32,T10] ( 2, 2 ) int -> x1 single-def
+; V32 tmp23 [V32,T11] ( 2, 2 ) int -> x2 single-def
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp26 [V35,T11] ( 2, 2 ) int -> x0 single-def
+;* V35 tmp26 [V35,T12] ( 0, 0 ) int -> zero-ref single-def
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
-; V38 tmp29 [V38,T12] ( 2, 2 ) int -> x0 single-def
+;* V38 tmp29 [V38,T13] ( 0, 0 ) int -> zero-ref single-def
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T13] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V44 tmp35 [V44,T21] ( 0, 0 ) int -> zero-ref single-def
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
-;* V47 tmp38 [V47,T14] ( 0, 0 ) int -> zero-ref single-def
+; V47 tmp38 [V47,T14] ( 2, 2 ) int -> x2 single-def
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
-;* V50 tmp41 [V50,T15] ( 0, 0 ) int -> zero-ref single-def
+; V50 tmp41 [V50,T15] ( 2, 2 ) int -> x1 single-def
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp44 [V53,T16] ( 0, 0 ) int -> zero-ref single-def
+; V53 tmp44 [V53,T16] ( 2, 2 ) int -> x1 single-def
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T23] ( 0, 0 ) int -> zero-ref single-def
+; V56 tmp47 [V56,T17] ( 2, 2 ) int -> x1 single-def
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp50 [V59,T18] ( 0, 0 ) int -> zero-ref single-def
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp53 [V62,T19] ( 0, 0 ) int -> zero-ref single-def
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp56 [V65,T22] ( 0, 0 ) int -> zero-ref single-def
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
-;* V68 tmp59 [V68,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref
-; V71 cse0 [V71,T05] ( 2, 2 ) int -> x0 "CSE - aggressive"
-;* V72 cse1 [V72,T20] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V73 cse2 [V73,T02] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V74 cse3 [V74,T06] ( 2, 2 ) int -> x1 "CSE - aggressive"
-; V75 cse4 [V75,T07] ( 2, 2 ) int -> x2 "CSE - aggressive"
-; V76 cse5 [V76,T03] ( 3, 3 ) long -> x1 "CSE - aggressive"
+; V71 cse0 [V71,T04] ( 2, 2 ) int -> x2 "CSE - aggressive"
+; V72 cse1 [V72,T05] ( 2, 2 ) int -> x0 "CSE - aggressive"
+; V73 cse2 [V73,T06] ( 3, 3 ) int -> x1 "CSE - aggressive"
+; V74 cse3 [V74,T07] ( 3, 3 ) int -> x3 "CSE - aggressive"
+; V75 cse4 [V75,T08] ( 3, 3 ) int -> x0 "CSE - aggressive"
+; V76 cse5 [V76,T02] ( 3, 3 ) long -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -136,21 +136,24 @@ G_M50161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str w1, [x19, #0x08]
strh w2, [x19, #0x0C]
ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ sxtw w2, w1
+ add w2, w2, #17
+ ldp w0, w3, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
+ add w2, w2, w3
+ add w2, w2, w0
+ add w1, w2, w1
+ add w1, w1, #17
+ add w1, w1, w3
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=168 bbWeight=1 PerfScore 31.50
+ ;; size=180 bbWeight=1 PerfScore 33.00
G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-Total bytes of code 192, prolog size 12, PerfScore 38.00, instruction count 48, allocated bytes for code 192 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
+Total bytes of code 204, prolog size 12, PerfScore 39.50, instruction count 51, allocated bytes for code 204 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
; ============================================================
Unwind Info:
@@ -161,7 +164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+6.25%) : 16278.dasm - testout1:SubFunclet106():int (FullOpts)
@@ -19,7 +19,7 @@
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref single-def
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref
-;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref single-def
+;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref single-def
@@ -28,61 +28,61 @@
;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref single-def
;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref
;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref
-;* V20 tmp15 [V20,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V20 tmp15 [V20,T21] ( 0, 0 ) int -> zero-ref single-def
;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp18 [V23,T09] ( 2, 2 ) int -> x1 single-def
+; V23 tmp18 [V23,T10] ( 2, 2 ) int -> x2 single-def
;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp21 [V26,T10] ( 2, 2 ) int -> x1 single-def
+; V26 tmp21 [V26,T11] ( 2, 2 ) int -> x2 single-def
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp23 [V28 ] ( 0, 0 ) int -> zero-ref
-; V29 tmp24 [V29,T11] ( 2, 2 ) int -> x1 single-def
+; V29 tmp24 [V29,T12] ( 2, 2 ) int -> x2 single-def
;* V30 tmp25 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp26 [V31 ] ( 0, 0 ) int -> zero-ref
-; V32 tmp27 [V32,T12] ( 2, 2 ) int -> x0 single-def
+;* V32 tmp27 [V32,T13] ( 0, 0 ) int -> zero-ref single-def
;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp30 [V35,T13] ( 2, 2 ) int -> x0 single-def
+;* V35 tmp30 [V35,T14] ( 0, 0 ) int -> zero-ref single-def
;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref
-;* V38 tmp33 [V38,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp35 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp36 [V41,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp36 [V41,T22] ( 0, 0 ) int -> zero-ref single-def
;* V42 tmp37 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp38 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp39 [V44,T15] ( 0, 0 ) int -> zero-ref single-def
+; V44 tmp39 [V44,T15] ( 2, 2 ) int -> x2 single-def
;* V45 tmp40 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp41 [V46 ] ( 0, 0 ) int -> zero-ref
-;* V47 tmp42 [V47,T16] ( 0, 0 ) int -> zero-ref single-def
+; V47 tmp42 [V47,T16] ( 2, 2 ) int -> x1 single-def
;* V48 tmp43 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp44 [V49 ] ( 0, 0 ) int -> zero-ref
-;* V50 tmp45 [V50,T17] ( 0, 0 ) int -> zero-ref single-def
+; V50 tmp45 [V50,T17] ( 2, 2 ) int -> x1 single-def
;* V51 tmp46 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp47 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp48 [V53,T24] ( 0, 0 ) int -> zero-ref single-def
+; V53 tmp48 [V53,T18] ( 2, 2 ) int -> x1 single-def
;* V54 tmp49 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp50 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp51 [V56,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp51 [V56,T19] ( 0, 0 ) int -> zero-ref single-def
;* V57 tmp52 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp53 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp54 [V59,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp54 [V59,T20] ( 0, 0 ) int -> zero-ref single-def
;* V60 tmp55 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp56 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp57 [V62,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp57 [V62,T23] ( 0, 0 ) int -> zero-ref single-def
;* V63 tmp58 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp59 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp60 [V65,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp60 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp61 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp62 [V67 ] ( 0, 0 ) int -> zero-ref
-; V68 cse0 [V68,T05] ( 2, 2 ) int -> x0 "CSE - aggressive"
-;* V69 cse1 [V69,T21] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V70 cse2 [V70,T03] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V71 cse3 [V71,T06] ( 2, 2 ) int -> x1 "CSE - aggressive"
-; V72 cse4 [V72,T07] ( 2, 2 ) int -> x2 "CSE - aggressive"
-; V73 cse5 [V73,T04] ( 3, 3 ) long -> x1 "CSE - aggressive"
-; V74 cse6 [V74,T08] ( 2, 2 ) long -> x0 "CSE - aggressive"
+; V68 cse0 [V68,T04] ( 2, 2 ) int -> x2 "CSE - aggressive"
+; V69 cse1 [V69,T05] ( 2, 2 ) int -> x0 "CSE - aggressive"
+; V70 cse2 [V70,T06] ( 3, 3 ) int -> x1 "CSE - aggressive"
+; V71 cse3 [V71,T07] ( 3, 3 ) int -> x3 "CSE - aggressive"
+; V72 cse4 [V72,T08] ( 3, 3 ) int -> x0 "CSE - aggressive"
+; V73 cse5 [V73,T03] ( 3, 3 ) long -> x1 "CSE - aggressive"
+; V74 cse6 [V74,T09] ( 2, 2 ) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -134,21 +134,24 @@ G_M50161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str w1, [x19, #0x08]
strh w2, [x19, #0x0C]
ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ sxtw w2, w1
+ add w2, w2, #17
+ ldp w0, w3, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
+ add w2, w2, w3
+ add w2, w2, w0
+ add w1, w2, w1
+ add w1, w1, #17
+ add w1, w1, w3
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=168 bbWeight=1 PerfScore 31.50
+ ;; size=180 bbWeight=1 PerfScore 33.00
G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-Total bytes of code 192, prolog size 12, PerfScore 38.00, instruction count 48, allocated bytes for code 192 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
+Total bytes of code 204, prolog size 12, PerfScore 39.50, instruction count 51, allocated bytes for code 204 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
; ============================================================
Unwind Info:
@@ -159,7 +162,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+7.14%) : 248983.dasm - Runtime_56495:TestEntryPoint():int (FullOpts)
@@ -33,8 +33,11 @@ G_M15390_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M15390_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ brk_unix #0
+ ;; size=4 bbWeight=1 PerfScore 1.00
-Total bytes of code 56, prolog size 8, PerfScore 11.50, instruction count 14, allocated bytes for code 56 (MethodHash=25a3c3e1) for method Runtime_56495:TestEntryPoint():int (FullOpts)
+Total bytes of code 60, prolog size 8, PerfScore 12.50, instruction count 15, allocated bytes for code 60 (MethodHash=25a3c3e1) for method Runtime_56495:TestEntryPoint():int (FullOpts)
; ============================================================
Unwind Info:
@@ -45,7 +48,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries.pmi.osx.arm64.checked.mch
-32 (-13.33%) : 307101.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
@@ -7,7 +7,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 9, 4 ) int -> x19 single-def
+; V00 arg0 [V00,T00] ( 6, 4 ) int -> x19 single-def
; V01 arg1 [V01,T01] ( 4, 2 ) ref -> x20 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -26,11 +26,11 @@ G_M20631_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x20]
;; size=24 bbWeight=1 PerfScore 4.50
G_M20631_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ mov w0, #250
cmp w19, #0xD1FFAB1E
- bgt G_M20631_IG07
- cmp w19, #250
- bne G_M20631_IG06
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ccmp w19, w0, 0, le
+ bne G_M20631_IG04
+ ;; size=16 bbWeight=1 PerfScore 2.50
G_M20631_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -93,23 +93,10 @@ G_M20631_IG05: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs +[x0]
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x21]
- ;; size=60 bbWeight=0 PerfScore 0.00
-G_M20631_IG06: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x20]
- sub w0, w19, #0xD1FFAB1E
- cmp w0, #1
- bls G_M20631_IG04
- b G_M20631_IG04
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M20631_IG07: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- mov w0, #0xD1FFAB1E
- cmp w19, #0xD1FFAB1E
- ccmp w19, w0, z, ne
- beq G_M20631_IG04
- b G_M20631_IG04
- ;; size=20 bbWeight=0 PerfScore 0.00
+ brk_unix #0
+ ;; size=64 bbWeight=0 PerfScore 0.00
-Total bytes of code 240, prolog size 16, PerfScore 12.50, instruction count 60, allocated bytes for code 240 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
+Total bytes of code 208, prolog size 16, PerfScore 12.00, instruction count 52, allocated bytes for code 208 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
; ============================================================
Unwind Info:
@@ -120,7 +107,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-12.00%) : 9101.dasm - System.SpanHelpers:LastIndexOfAnyInRangelong:int (FullOpts)
@@ -10,7 +10,7 @@
;
; V00 arg0 [V00,T06] ( 3, 6 ) byref -> x0 single-def
; V01 arg1 [V01,T03] ( 4, 8 ) long -> x1 ld-addr-op single-def
-; V02 arg2 [V02,T05] ( 4, 6 ) long -> x2 ld-addr-op single-def
+; V02 arg2 [V02,T05] ( 3, 4 ) long -> x2 ld-addr-op single-def
; V03 arg3 [V03,T10] ( 3, 3 ) int -> x3 single-def
; V04 loc0 [V04,T01] ( 7, 18.50) int -> x3
; V05 loc1 [V05,T07] ( 2, 8 ) byref -> x4
@@ -18,7 +18,7 @@
;* V07 tmp1 [V07,T08] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T00] ( 3, 20 ) long -> x5 "Inlining Arg"
;* V09 tmp3 [V09,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 12 ) long -> x4 "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 8 ) long -> x4 "Inlining Arg"
; V11 cse0 [V11,T04] ( 3, 10 ) long -> x4 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -48,11 +48,8 @@ G_M64784_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
;; size=8 bbWeight=2 PerfScore 3.00
G_M64784_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp x2, x4
- blt G_M64784_IG06
- cmp x2, x4
- ble G_M64784_IG09
- b G_M64784_IG09
- ;; size=20 bbWeight=2 PerfScore 8.00
+ bge G_M64784_IG09
+ ;; size=8 bbWeight=2 PerfScore 3.00
G_M64784_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
sub w3, w3, #1
tbz w3, #31, G_M64784_IG03
@@ -73,7 +70,7 @@ G_M64784_IG10: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-Total bytes of code 100, prolog size 8, PerfScore 48.50, instruction count 25, allocated bytes for code 100 (MethodHash=eef202ef) for method System.SpanHelpers:LastIndexOfAnyInRange[long](byref,long,long,int):int (FullOpts)
+Total bytes of code 88, prolog size 8, PerfScore 43.50, instruction count 22, allocated bytes for code 88 (MethodHash=eef202ef) for method System.SpanHelpers:LastIndexOfAnyInRange[long](byref,long,long,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -84,7 +81,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-12.00%) : 9099.dasm - System.SpanHelpers:LastIndexOfAnyInRangeint:int (FullOpts)
@@ -10,7 +10,7 @@
;
; V00 arg0 [V00,T06] ( 3, 6 ) byref -> x0 single-def
; V01 arg1 [V01,T03] ( 4, 8 ) int -> x1 ld-addr-op single-def
-; V02 arg2 [V02,T05] ( 4, 6 ) int -> x2 ld-addr-op single-def
+; V02 arg2 [V02,T05] ( 3, 4 ) int -> x2 ld-addr-op single-def
; V03 arg3 [V03,T10] ( 3, 3 ) int -> x3 single-def
; V04 loc0 [V04,T01] ( 7, 18.50) int -> x3
; V05 loc1 [V05,T07] ( 2, 8 ) byref -> x4
@@ -18,7 +18,7 @@
;* V07 tmp1 [V07,T08] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T00] ( 3, 20 ) int -> x5 "Inlining Arg"
;* V09 tmp3 [V09,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 12 ) int -> x4 "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 8 ) int -> x4 "Inlining Arg"
; V11 cse0 [V11,T04] ( 3, 10 ) int -> x4 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -48,11 +48,8 @@ G_M37321_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
;; size=8 bbWeight=2 PerfScore 3.00
G_M37321_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w2, w4
- blt G_M37321_IG06
- cmp w2, w4
- ble G_M37321_IG09
- b G_M37321_IG09
- ;; size=20 bbWeight=2 PerfScore 8.00
+ bge G_M37321_IG09
+ ;; size=8 bbWeight=2 PerfScore 3.00
G_M37321_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
sub w3, w3, #1
tbz w3, #31, G_M37321_IG03
@@ -73,7 +70,7 @@ G_M37321_IG10: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-Total bytes of code 100, prolog size 8, PerfScore 48.50, instruction count 25, allocated bytes for code 100 (MethodHash=fbeb6e36) for method System.SpanHelpers:LastIndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
+Total bytes of code 88, prolog size 8, PerfScore 43.50, instruction count 22, allocated bytes for code 88 (MethodHash=fbeb6e36) for method System.SpanHelpers:LastIndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -84,7 +81,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 137084.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertyAccessorSymbol:GetReturnType(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceModuleSymbol,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
@@ -67,7 +67,7 @@
; V56 tmp48 [V56,T12] ( 5, 2.50) ref -> x2
; V57 tmp49 [V57,T03] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V58 tmp50 [V58,T08] ( 3, 3 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V59 tmp51 [V59,T47] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V59 tmp51 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V60 tmp52 [V60,T33] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
;* V61 tmp53 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.DiagnosticInfo>
;* V62 tmp54 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>>
@@ -113,7 +113,7 @@
;* V102 tmp94 [V102,T45] ( 0, 0 ) ref -> zero-ref single-def "V35.[000..008)"
;* V103 tmp95 [V103,T46] ( 0, 0 ) ref -> zero-ref single-def "V35.[008..016)"
;* V104 tmp96 [V104 ] ( 0, 0 ) int -> zero-ref single-def "V35.[016..020)"
-;* V105 tmp97 [V105,T48] ( 0, 0 ) int -> zero-ref single-def "V35.[020..024)"
+;* V105 tmp97 [V105,T47] ( 0, 0 ) int -> zero-ref single-def "V35.[020..024)"
;* V106 tmp98 [V106 ] ( 0, 0 ) ref -> zero-ref single-def "V23.[000..008)"
;* V107 tmp99 [V107 ] ( 0, 0 ) ref -> zero-ref single-def "V23.[008..016)"
;* V108 tmp100 [V108 ] ( 0, 0 ) int -> zero-ref single-def "V23.[016..020)"
@@ -129,8 +129,8 @@
;* V118 tmp110 [V118 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Text.TextSpan>
; V119 tmp111 [V119,T22] ( 2, 2 ) ref -> x3 single-def "argument with side effect"
; V120 tmp112 [V120,T23] ( 2, 2 ) ref -> x21 single-def "argument with side effect"
-; V121 tmp113 [V121,T50] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-;* V122 cse0 [V122,T49] ( 0, 0 ) long -> zero-ref "CSE - moderate"
+; V121 tmp113 [V121,T49] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+;* V122 cse0 [V122,T48] ( 0, 0 ) long -> zero-ref "CSE - moderate"
; V123 cse1 [V123,T35] ( 3, 1.50) long -> x20 "CSE - moderate"
; V124 cse2 [V124,T30] ( 3, 1.50) ref -> x0 "CSE - moderate"
; V125 cse3 [V125,T31] ( 3, 1.50) ref -> x21 "CSE - moderate"
@@ -507,8 +507,8 @@ G_M60394_IG26: ; bbWeight=0.50, gcrefRegs=3D00000 {x20 x22 x23 x24 x25},
;; size=16 bbWeight=0.50 PerfScore 2.75
G_M60394_IG27: ; bbWeight=0.50, gcrefRegs=3500000 {x20 x22 x24 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x23]
- cbz w0, G_M60394_IG10
- b G_M60394_IG12
+ cbnz w0, G_M60394_IG12
+ b G_M60394_IG10
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M60394_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x22 x24-x25]
+0 (0.00%) : 175132.dasm - System.Xml.EncodingStreamWrapper:FillBuffer(int):this (FullOpts)
+0 (0.00%) : 176780.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:FillBuffer(int):this (FullOpts)
libraries_tests.run.osx.arm64.Release.mch
-20 (-21.74%) : 53877.dasm - Roslyn.Utilities.AsyncLazy1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task1[System.Canon]):System.Threading.Tasks.Task`1[System.Canon]:this (Tier1)
@@ -12,13 +12,13 @@
; V00 this [V00,T00] ( 6, 4.75) ref -> x0 this class-hnd single-def <Roslyn.Utilities.AsyncLazy`1[System.__Canon]>
; V01 arg1 [V01,T01] ( 5, 3.75) ref -> x1 class-hnd single-def <System.Threading.Tasks.Task`1[System.__Canon]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 8, 2.38) int -> x2 "Inline stloc first use temp"
+; V03 tmp1 [V03,T03] ( 4, 2.33) int -> x14 "Inline stloc first use temp"
;* V04 tmp2 [V04,T04] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V05 cse0 [V05,T02] ( 3, 2.42) ref -> x14 "CSE - aggressive"
;
; Lcl frame size = 0
-G_M21386_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M21386_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
@@ -30,10 +30,10 @@ G_M21386_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
;; size=8 bbWeight=1 PerfScore 4.00
G_M21386_IG03: ; bbWeight=0.58, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x14]
- ldapur w2, [x1, #0x34]
- tbnz w2, #21, G_M21386_IG04
- tbnz w2, #22, G_M21386_IG04
- tbz w2, #24, G_M21386_IG08
+ ldapur w14, [x1, #0x34]
+ tbnz w14, #21, G_M21386_IG04
+ tbnz w14, #22, G_M21386_IG04
+ tbz w14, #24, G_M21386_IG04
add x14, x0, #24
; byrRegs +[x14]
mov x15, x1
@@ -61,16 +61,8 @@ G_M21386_IG07: ; bbWeight=0.42, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.42 PerfScore 0.84
-G_M21386_IG08: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0 x14] +[x1]
- tbnz w2, #23, G_M21386_IG04
- tbnz w2, #17, G_M21386_IG04
- tbnz w2, #16, G_M21386_IG04
- tbz w2, #25, G_M21386_IG04
- b G_M21386_IG04
- ;; size=20 bbWeight=0.01 PerfScore 0.06
-Total bytes of code 92, prolog size 8, PerfScore 13.30, instruction count 23, allocated bytes for code 92 (MethodHash=7308ac75) for method Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
+Total bytes of code 72, prolog size 8, PerfScore 13.24, instruction count 18, allocated bytes for code 72 (MethodHash=7308ac75) for method Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
; ============================================================
Unwind Info:
@@ -81,7 +73,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-21.74%) : 63653.dasm - Roslyn.Utilities.AsyncLazy1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
@@ -12,12 +12,12 @@
; V00 this [V00,T00] ( 7, 6 ) ref -> x0 this class-hnd single-def <Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]>
; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x1 class-hnd single-def <System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 8, 4.09) int -> x2 "Inline stloc first use temp"
+; V03 tmp1 [V03,T02] ( 4, 4 ) int -> x14 "Inline stloc first use temp"
;* V04 tmp2 [V04,T03] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;
; Lcl frame size = 0
-G_M46606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M46606_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
@@ -25,13 +25,13 @@ G_M46606_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
; gcrRegs +[x0-x1]
ldr x14, [x0, #0x18]
; gcrRegs +[x14]
- cbnz x14, G_M46606_IG06
- ldapur w2, [x1, #0x34]
- tbnz w2, #21, G_M46606_IG03
- tbnz w2, #22, G_M46606_IG03
- tbz w2, #24, G_M46606_IG05
- add x14, x0, #24
+ cbnz x14, G_M46606_IG05
+ ldapur w14, [x1, #0x34]
; gcrRegs -[x14]
+ tbnz w14, #21, G_M46606_IG03
+ tbnz w14, #22, G_M46606_IG03
+ tbz w14, #24, G_M46606_IG03
+ add x14, x0, #24
; byrRegs +[x14]
mov x15, x1
; gcrRegs +[x15]
@@ -49,24 +49,16 @@ G_M46606_IG04: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M46606_IG05: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
- tbnz w2, #23, G_M46606_IG03
- tbnz w2, #17, G_M46606_IG03
- tbnz w2, #16, G_M46606_IG03
- tbz w2, #25, G_M46606_IG03
- b G_M46606_IG03
- ;; size=20 bbWeight=0.02 PerfScore 0.11
-G_M46606_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1] +[x0]
+G_M46606_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x1]
ldr x0, [x0, #0x18]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M46606_IG07: ; bbWeight=0, epilog, nogc, extend
+G_M46606_IG06: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 92, prolog size 8, PerfScore 17.11, instruction count 23, allocated bytes for code 92 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
+Total bytes of code 72, prolog size 8, PerfScore 17.00, instruction count 18, allocated bytes for code 72 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
; ============================================================
Unwind Info:
@@ -77,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-21.74%) : 161165.dasm - Roslyn.Utilities.AsyncLazy1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
@@ -12,12 +12,12 @@
; V00 this [V00,T00] ( 7, 6 ) ref -> x0 this class-hnd single-def <Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]>
; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x1 class-hnd single-def <System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 8, 4 ) int -> x2 "Inline stloc first use temp"
+; V03 tmp1 [V03,T02] ( 4, 4 ) int -> x14 "Inline stloc first use temp"
;* V04 tmp2 [V04,T03] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;
; Lcl frame size = 0
-G_M46606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M46606_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
@@ -26,12 +26,12 @@ G_M46606_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
ldr x14, [x0, #0x18]
; gcrRegs +[x14]
cbnz x14, G_M46606_IG05
- ldapur w2, [x1, #0x34]
- tbnz w2, #21, G_M46606_IG03
- tbnz w2, #22, G_M46606_IG03
- tbz w2, #24, G_M46606_IG07
- add x14, x0, #24
+ ldapur w14, [x1, #0x34]
; gcrRegs -[x14]
+ tbnz w14, #21, G_M46606_IG03
+ tbnz w14, #22, G_M46606_IG03
+ tbz w14, #24, G_M46606_IG03
+ add x14, x0, #24
; byrRegs +[x14]
mov x15, x1
; gcrRegs +[x15]
@@ -57,16 +57,8 @@ G_M46606_IG06: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0 PerfScore 0.00
-G_M46606_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0] +[x1]
- tbnz w2, #23, G_M46606_IG03
- tbnz w2, #17, G_M46606_IG03
- tbnz w2, #16, G_M46606_IG03
- tbz w2, #25, G_M46606_IG03
- b G_M46606_IG03
- ;; size=20 bbWeight=0 PerfScore 0.00
-Total bytes of code 92, prolog size 8, PerfScore 17.00, instruction count 23, allocated bytes for code 92 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
+Total bytes of code 72, prolog size 8, PerfScore 17.00, instruction count 18, allocated bytes for code 72 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
; ============================================================
Unwind Info:
@@ -77,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+1.68%) : 497181.dasm - Moq.ExpressionExtensions:CanSplit(System.Linq.Expressions.Expression):ubyte (Tier1)
@@ -66,13 +66,13 @@ G_M33341_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
;; size=20 bbWeight=0.50 PerfScore 4.00
G_M33341_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w22, #38
- bgt G_M33341_IG24
+ bgt G_M33341_IG26
cmp w22, #17
- ble G_M33341_IG10
+ ble G_M33341_IG12
;; size=16 bbWeight=1 PerfScore 3.00
G_M33341_IG07: ; bbWeight=0.75, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w22, #23
- beq G_M33341_IG13
+ beq G_M33341_IG10
;; size=8 bbWeight=0.75 PerfScore 1.12
G_M33341_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
@@ -86,55 +86,31 @@ G_M33341_IG09: ; bbWeight=0.50, epilog, nogc, extend
;; size=16 bbWeight=0.50 PerfScore 2.00
G_M33341_IG10: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ cmp x21, x0
+ beq G_M33341_IG19
+ ;; size=20 bbWeight=0.25 PerfScore 0.75
+G_M33341_IG11: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M33341_IG18
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M33341_IG12: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w22, #6
- bne G_M33341_IG27
+ bne G_M33341_IG29
;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M33341_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M33341_IG13: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
mov w0, #1
;; size=4 bbWeight=0.25 PerfScore 0.12
-G_M33341_IG12: ; bbWeight=0.25, epilog, nogc, extend
+G_M33341_IG14: ; bbWeight=0.25, epilog, nogc, extend
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.25 PerfScore 1.00
-G_M33341_IG13: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- cmp x21, x0
- beq G_M33341_IG15
- ;; size=20 bbWeight=0.25 PerfScore 0.75
-G_M33341_IG14: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x1, x19
- ; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[x1 x19] +[x0]
- ; gcr arg pop 0
- b G_M33341_IG16
- ;; size=12 bbWeight=0.12 PerfScore 0.31
-G_M33341_IG15: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0] +[x19]
- mov x0, x19
+G_M33341_IG15: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.12 PerfScore 0.06
-G_M33341_IG16: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- cmp x21, x1
- bne G_M33341_IG18
- ;; size=20 bbWeight=0.25 PerfScore 0.75
-G_M33341_IG17: ; bbWeight=0.14, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ldr x1, [x0, #0x10]
- ; gcrRegs +[x1]
- b G_M33341_IG19
- ;; size=8 bbWeight=0.14 PerfScore 0.55
-G_M33341_IG18: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1]
ldr x1, [x21, #0x50]
ldr x1, [x1, #0x10]
blr x1
@@ -142,21 +118,52 @@ G_M33341_IG18: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
mov x1, x0
; gcrRegs +[x1]
;; size=16 bbWeight=0.11 PerfScore 0.84
-G_M33341_IG19: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M33341_IG16: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M33341_IG22
+ cbz x2, G_M33341_IG24
;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M33341_IG20: ; bbWeight=0.12, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M33341_IG17: ; bbWeight=4.17, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
+ b G_M33341_IG22
+ ;; size=4 bbWeight=4.17 PerfScore 4.17
+G_M33341_IG18: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1-x2] +[x19]
+ mov x1, x19
+ ; gcrRegs +[x1]
+ bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ ; gcrRegs -[x1 x19] +[x0]
+ ; gcr arg pop 0
+ b G_M33341_IG20
+ ;; size=12 bbWeight=0.12 PerfScore 0.31
+G_M33341_IG19: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0] +[x19]
+ mov x0, x19
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.12 PerfScore 0.06
+G_M33341_IG20: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x21, x1
+ bne G_M33341_IG15
+ ;; size=20 bbWeight=0.25 PerfScore 0.75
+G_M33341_IG21: ; bbWeight=0.14, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ldr x1, [x0, #0x10]
+ ; gcrRegs +[x1]
+ b G_M33341_IG16
+ ;; size=8 bbWeight=0.14 PerfScore 0.55
+G_M33341_IG22: ; bbWeight=0.12, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0] +[x2]
ldr x0, [x2]
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
cmp x0, x3
- beq G_M33341_IG22
+ beq G_M33341_IG24
;; size=24 bbWeight=0.12 PerfScore 0.75
-G_M33341_IG21: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M33341_IG23: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -167,33 +174,33 @@ G_M33341_IG21: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre
mov x2, x0
; gcrRegs +[x2]
;; size=20 bbWeight=0 PerfScore 0.00
-G_M33341_IG22: ; bbWeight=0.25, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+G_M33341_IG24: ; bbWeight=0.25, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
cmp x2, #0
cset x0, ne
uxtb w0, w0
;; size=12 bbWeight=0.25 PerfScore 0.38
-G_M33341_IG23: ; bbWeight=0.25, epilog, nogc, extend
+G_M33341_IG25: ; bbWeight=0.25, epilog, nogc, extend
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.25 PerfScore 1.00
-G_M33341_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M33341_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x2] +[x19]
cmp w22, #55
- bgt G_M33341_IG25
+ bgt G_M33341_IG27
cmp w22, #46
- beq G_M33341_IG26
- b G_M33341_IG29
+ beq G_M33341_IG28
+ b G_M33341_IG31
;; size=20 bbWeight=0 PerfScore 0.00
-G_M33341_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M33341_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov w1, #73
cmp w22, #63
ccmp w22, w1, z, ne
bne G_M33341_IG08
;; size=16 bbWeight=0 PerfScore 0.00
-G_M33341_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M33341_IG28: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -206,7 +213,7 @@ G_M33341_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x19]
b G_M33341_IG03
;; size=28 bbWeight=0 PerfScore 0.00
-G_M33341_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M33341_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
cmp w22, #17
bne G_M33341_IG08
@@ -235,21 +242,21 @@ G_M33341_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movk x2, #1 LSL #32
ldr x2, [x2]
;; size=80 bbWeight=0 PerfScore 0.00
-G_M33341_IG28: ; bbWeight=0, epilog, nogc, extend
+G_M33341_IG30: ; bbWeight=0, epilog, nogc, extend
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x30
br x2
; gcr arg pop 0
;; size=16 bbWeight=0 PerfScore 0.00
-G_M33341_IG29: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M33341_IG31: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x1]
cmp w22, #55
bne G_M33341_IG08
- b G_M33341_IG11
+ b G_M33341_IG13
;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 476, prolog size 20, PerfScore 28.39, instruction count 119, allocated bytes for code 476 (MethodHash=33537dc2) for method Moq.ExpressionExtensions:CanSplit(System.Linq.Expressions.Expression):ubyte (Tier1)
+Total bytes of code 484, prolog size 20, PerfScore 32.69, instruction count 121, allocated bytes for code 484 (MethodHash=33537dc2) for method Moq.ExpressionExtensions:CanSplit(System.Linq.Expressions.Expression):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -260,7 +267,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 119 (0x00077) Actual length = 476 (0x0001dc)
+ Function Length : 121 (0x00079) Actual length = 484 (0x0001e4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+40 (+3.83%) : 591547.dasm - Roslyn.Utilities.EnumerableExtensions:SelectAsArraySystem.Collections.Generic.KeyValuePair2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot],System.ValueTuple2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]:System.Collections.Immutable.ImmutableArray1[System.ValueTuple2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]] (Tier1-OSR)
@@ -11,12 +11,12 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IReadOnlyCollection`1[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
-; V01 arg1 [V01,T24] ( 7, 2.99) ref -> x19 class-hnd single-def <System.Func`2[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot],System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
+; V01 arg1 [V01,T21] ( 7, 10.58) ref -> x19 class-hnd single-def <System.Func`2[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot],System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
; V02 loc0 [V02,T20] ( 3, 100.00) ref -> x20 class-hnd exact <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
-; V03 loc1 [V03,T19] ( 12, 105.79) ref -> [fp+0x188] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
+; V03 loc1 [V03,T19] ( 14, 114.33) ref -> [fp+0x188] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
; V04 loc2 [V04 ] ( 10, 384.76) struct (24) [fp+0x170] do-not-enreg[XS] addr-exposed tier0-frame <System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T30] ( 4, 0 ) struct (24) [fp+0x40] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
+; V06 tmp1 [V06,T27] ( 4, 0 ) struct (24) [fp+0x40] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp"
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedDictionary`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
@@ -26,7 +26,7 @@
; V13 tmp8 [V13,T10] ( 5, 200 ) int -> x0 "guarded devirt return temp"
;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedDictionary`2+Enumerator[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedDictionary`2+Enumerator[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
-;* V16 tmp11 [V16,T26] ( 0, 0 ) int -> zero-ref single-def "OSR entry state var"
+;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V17 tmp12 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
;* V19 tmp14 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
@@ -52,47 +52,45 @@
;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V40 tmp35 [V40,T11] ( 2, 3.85) byref -> x14 "Inlining Arg"
; V41 tmp36 [V41,T12] ( 6, 192.38) struct (24) [fp+0x28] do-not-enreg[S] must-init "Inline return value spill temp" <System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
-; V42 tmp37 [V42,T05] ( 4, 384.76) byref -> x23 "Inlining Arg"
+; V42 tmp37 [V42,T05] ( 4, 384.76) byref -> x21 "Inlining Arg"
;* V43 tmp38 [V43 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
;* V44 tmp39 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
;* V45 tmp40 [V45 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
;* V46 tmp41 [V46 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V47 tmp42 [V47 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
;* V48 tmp43 [V48 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot>
-; V49 tmp44 [V49,T00] ( 16,1154.27) ref -> x27 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
-; V50 tmp45 [V50,T08] ( 10, 288.57) int -> x28 "Inline stloc first use temp"
+; V49 tmp44 [V49,T00] ( 16,1154.27) ref -> x25 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
+; V50 tmp45 [V50,T08] ( 10, 288.57) int -> x26 "Inline stloc first use temp"
;* V51 tmp46 [V51 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V52 tmp47 [V52,T28] ( 6, 0 ) int -> x1 "Inline return value spill temp"
-; V53 tmp48 [V53,T29] ( 6, 0 ) int -> x1 "Inlining Arg"
+; V52 tmp47 [V52,T25] ( 6, 0 ) int -> x1 "Inline return value spill temp"
+; V53 tmp48 [V53,T26] ( 6, 0 ) int -> x1 "Inlining Arg"
; V54 tmp49 [V54,T04] ( 4, 400 ) byref -> registers "Inlining Arg"
-;* V55 tmp50 [V55,T21] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V55 tmp50 [V55,T22] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V56 tmp51 [V56 ] ( 0, 0 ) ref -> zero-ref "field V48.VariableState (fldOffset=0x0)" P-INDEP
;* V57 tmp52 [V57 ] ( 0, 0 ) int -> zero-ref "field V48.SharedStateIndex (fldOffset=0x8)" P-INDEP
;* V58 tmp53 [V58 ] ( 0, 0 ) int -> zero-ref "V32.[000..004)"
-; V59 tmp54 [V59,T17] ( 4, 192.38) int -> x24 "V45.[000..004)"
-; V60 tmp55 [V60,T16] ( 4, 192.38) ref -> x25 "V45.[008..016)"
-; V61 tmp56 [V61,T18] ( 4, 192.38) int -> x26 "V45.[016..020)"
+; V59 tmp54 [V59,T17] ( 4, 192.38) int -> x22 "V45.[000..004)"
+; V60 tmp55 [V60,T16] ( 4, 192.38) ref -> x23 "V45.[008..016)"
+; V61 tmp56 [V61,T18] ( 4, 192.38) int -> x24 "V45.[016..020)"
;* V62 tmp57 [V62 ] ( 0, 0 ) int -> zero-ref "V47.[000..004)"
;* V63 tmp58 [V63 ] ( 0, 0 ) ref -> zero-ref "V47.[008..016)"
;* V64 tmp59 [V64 ] ( 0, 0 ) int -> zero-ref "V47.[016..020)"
-; V65 tmp60 [V65,T14] ( 5, 192.38) int -> x24 "V06.[000..004)"
-; V66 tmp61 [V66,T13] ( 5, 192.38) ref -> x25 "V06.[008..016)"
-; V67 tmp62 [V67,T15] ( 5, 192.38) int -> x26 "V06.[016..020)"
-; V68 tmp63 [V68,T01] ( 8, 769.52) byref -> x3 "Spilling address for field-by-field copy"
+; V65 tmp60 [V65,T14] ( 5, 192.38) int -> x22 "V06.[000..004)"
+; V66 tmp61 [V66,T13] ( 5, 192.38) ref -> x23 "V06.[008..016)"
+; V67 tmp62 [V67,T15] ( 5, 192.38) int -> x24 "V06.[016..020)"
+; V68 tmp63 [V68,T01] ( 8, 769.52) byref -> x1 "Spilling address for field-by-field copy"
;* V69 tmp64 [V69 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V70 tmp65 [V70 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V71 tmp66 [V71 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V72 tmp67 [V72 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V73 tmp68 [V73 ] ( 2, 0 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
-; V74 tmp69 [V74,T02] ( 6, 577.14) ref -> x1 "arr expr"
-; V75 tmp70 [V75,T03] ( 6, 577.14) int -> x2 "index expr"
-; V76 PSPSym [V76,T27] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
+; V74 tmp69 [V74,T02] ( 6, 577.14) ref -> x27 "arr expr"
+; V75 tmp70 [V75,T03] ( 6, 577.14) int -> x28 "index expr"
+; V76 PSPSym [V76,T24] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
; V77 cse0 [V77,T09] ( 3, 285.68) ref -> x14 "CSE - aggressive"
-; V78 cse1 [V78,T25] ( 3, 2.89) ref -> x14 "CSE - moderate"
-; V79 cse2 [V79,T07] ( 7, 297.15) byref -> x23 multi-def "CSE - aggressive"
+; V78 cse1 [V78,T23] ( 3, 2.89) ref -> x14 "CSE - moderate"
+; V79 cse2 [V79,T07] ( 7, 297.15) byref -> x21 multi-def "CSE - aggressive"
; V80 cse3 [V80,T06] ( 6, 201.92) byref -> registers multi-def "CSE - aggressive"
-; V81 cse4 [V81,T22] ( 8, 6.78) long -> x21 multi-def "CSE - moderate"
-; V82 cse5 [V82,T23] ( 8, 6.78) long -> x22 multi-def "CSE - moderate"
;
; Lcl frame size = 80
@@ -118,98 +116,94 @@ G_M55780_IG02: ; bbWeight=3.81, gcVars=0000000000080000 {V03}, gcrefRegs=
; GC ptr vars +{V03}
ldr x0, [fp, #0xD1FFAB1E] // [V03 loc1]
; gcrRegs +[x0]
- cbz x0, G_M55780_IG17
- ;; size=8 bbWeight=3.81 PerfScore 11.43
-G_M55780_IG03: ; bbWeight=0.01, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- cbz x19, G_M55780_IG17
+ cbz x0, G_M55780_IG16
+ cbz x19, G_M55780_IG16
ldr x0, [fp, #0xD1FFAB1E] // [V03 loc1]
- ; gcrRegs +[x0]
- ldr x21, [x0]
- movz x22, #0xD1FFAB1E
- movk x22, #0xD1FFAB1E LSL #16
- movk x22, #1 LSL #32
- cmp x21, x22
- bne G_M55780_IG17
- ldr x0, [x19, #0x18]
+ ldr x0, [x0]
; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ bne G_M55780_IG16
+ ldr x0, [x19, #0x18]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager+Builder+<>c:<ToManagerAndFree>b__5_0(System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]):System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- bne G_M55780_IG17
- b G_M55780_IG09
- ;; size=60 bbWeight=0.01 PerfScore 0.21
-G_M55780_IG04: ; bbWeight=95.23, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz
+ bne G_M55780_IG16
+ b G_M55780_IG08
+ ;; size=68 bbWeight=3.81 PerfScore 72.40
+G_M55780_IG03: ; bbWeight=95.23, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
; gcrRegs -[x19]
- ; byrRegs +[x23]
- ldr x14, [x23, #0x10]
+ ; byrRegs +[x21]
+ ldr x14, [x21, #0x10]
; gcrRegs +[x14]
- cbz x14, G_M55780_IG26
+ cbz x14, G_M55780_IG25
;; size=8 bbWeight=95.23 PerfScore 380.91
-G_M55780_IG05: ; bbWeight=95.23, nogc, extend
+G_M55780_IG04: ; bbWeight=95.23, nogc, extend
ldp x12, x15, [x14, #0x20]
stp x12, x15, [fp, #0x28]
ldr x12, [x14, #0x30]
str x12, [fp, #0x38]
;; size=16 bbWeight=95.23 PerfScore 857.05
-G_M55780_IG06: ; bbWeight=95.23, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, nogc
+G_M55780_IG05: ; bbWeight=95.23, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, nogc
; gcrRegs -[x14]
- ; byrRegs -[x23]
+ ; byrRegs -[x21]
ldp x12, x14, [fp, #0x28]
stp x12, x14, [fp, #0xD1FFAB1E]
ldr x12, [fp, #0x38]
str x12, [fp, #0xD1FFAB1E]
;; size=16 bbWeight=95.23 PerfScore 666.59
-G_M55780_IG07: ; bbWeight=95.23, isz, extend
- ldr w24, [fp, #0xD1FFAB1E] // [V04 loc2]
- ldr x25, [fp, #0xD1FFAB1E] // [V04 loc2+0x08]
+G_M55780_IG06: ; bbWeight=95.23, isz, extend
+ ldr w22, [fp, #0xD1FFAB1E] // [V04 loc2]
+ ldr x23, [fp, #0xD1FFAB1E] // [V04 loc2+0x08]
+ ; gcrRegs +[x23]
+ ldr w24, [fp, #0xD1FFAB1E] // [V04 loc2+0x10]
+ ldr x25, [x20, #0x08]
; gcrRegs +[x25]
- ldr w26, [fp, #0xD1FFAB1E] // [V04 loc2+0x10]
- ldr x27, [x20, #0x08]
- ; gcrRegs +[x27]
- ldr w14, [x27, #0x10]
- add w28, w14, #1
- ldr x14, [x27, #0x08]
+ ldr w14, [x25, #0x10]
+ add w26, w14, #1
+ ldr x14, [x25, #0x08]
; gcrRegs +[x14]
ldr w14, [x14, #0x08]
; gcrRegs -[x14]
- cmp w14, w28
- blt G_M55780_IG25
+ cmp w14, w26
+ blt G_M55780_IG24
;; size=40 bbWeight=95.23 PerfScore 1904.55
-G_M55780_IG08: ; bbWeight=95.23, gcrefRegs=A100000 {x20 x25 x27}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x27, #0x08]
- ; gcrRegs +[x1]
- ldr w2, [x27, #0x10]
- ldr w14, [x1, #0x08]
- cmp w2, w14
- bhs G_M55780_IG19
+G_M55780_IG07: ; bbWeight=95.23, gcrefRegs=2900000 {x20 x23 x25}, byrefRegs=0000 {}, byref, isz
+ ldr x27, [x25, #0x08]
+ ; gcrRegs +[x27]
+ ldr w28, [x25, #0x10]
+ ldr w14, [x27, #0x08]
+ cmp w28, w14
+ bhs G_M55780_IG18
mov w14, #24
mov x15, #16
- umaddl x14, w2, w14, x15
- add x3, x1, x14
- ; byrRegs +[x3]
- str w24, [x3]
- add x14, x3, #8
+ umaddl x14, w28, w14, x15
+ add x1, x27, x14
+ ; byrRegs +[x1]
+ str w22, [x1]
+ add x14, x1, #8
; byrRegs +[x14]
- mov x15, x25
+ mov x15, x23
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x1 x15 x25]
+ ; gcrRegs -[x15 x23 x27]
; byrRegs -[x14]
- str w26, [x3, #0x10]
- str w28, [x27, #0x10]
+ str w24, [x1, #0x10]
+ str w26, [x25, #0x10]
;; size=60 bbWeight=95.23 PerfScore 2095.01
-G_M55780_IG09: ; bbWeight=99, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x27]
- ; byrRegs -[x3]
+G_M55780_IG08: ; bbWeight=99, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x25]
+ ; byrRegs -[x1]
ldr x0, [fp, #0xD1FFAB1E] // [V03 loc1]
; gcrRegs +[x0]
add x19, x0, #8
; byrRegs +[x19]
- add x23, x19, #8
- ; byrRegs +[x23]
- mov x0, x23
+ add x21, x19, #8
+ ; byrRegs +[x21]
+ mov x0, x21
; gcrRegs -[x0]
; byrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -219,16 +213,23 @@ G_M55780_IG09: ; bbWeight=99, gcrefRegs=100000 {x20}, byrefRegs=0000 {},
blr x1
; byrRegs -[x0 x19]
; gcr arg pop 0
- cbnz w0, G_M55780_IG04
+ cbnz w0, G_M55780_IG03
;; size=40 bbWeight=99 PerfScore 990.00
-G_M55780_IG10: ; bbWeight=3.79, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
...
+16 (+5.97%) : 179227.dasm - System.Collections.Generic.HashSet1[int]:IsSubsetOfHashSetWithSameComparer(System.Collections.Generic.HashSet1[int]):ubyte:this (Tier1-OSR)
@@ -6,7 +6,7 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 100.21
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 100.21
; 1 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -14,14 +14,14 @@
; V01 arg1 [V01,T05] ( 4,201.70) ref -> x19 class-hnd single-def <System.Collections.Generic.HashSet`1[int]>
; V02 loc0 [V02,T10] ( 4, 4 ) struct (24) [fp+0x60] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.HashSet`1+Enumerator[int]>
;* V03 loc1 [V03 ] ( 0, 0 ) int -> zero-ref
-;* V04 loc2 [V04,T12] ( 0, 0 ) ubyte -> zero-ref
+;* V04 loc2 [V04,T11] ( 0, 0 ) ubyte -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06,T11] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.HashSet`1+Enumerator[int]>
; V08 tmp3 [V08,T06] ( 3,200 ) ubyte -> x2 "Inline return value spill temp"
; V09 tmp4 [V09,T04] ( 4,246.15) int -> x22 "Inline stloc first use temp"
-; V10 tmp5 [V10,T01] ( 3,369.23) ref -> x0 class-hnd exact "impAppendStmt" <<unknown class>>
-; V11 tmp6 [V11,T08] ( 3,123.08) byref -> x22 "Inline stloc first use temp"
+; V10 tmp5 [V10,T01] ( 3,369.23) ref -> x1 class-hnd exact "impAppendStmt" <<unknown class>>
+; V11 tmp6 [V11,T08] ( 3,123.08) byref -> registers "Inline stloc first use temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref "field V07._hashSet (fldOffset=0x0)" P-INDEP
;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref "field V07._version (fldOffset=0x8)" P-INDEP
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "field V07._index (fldOffset=0xc)" P-INDEP
@@ -30,15 +30,15 @@
; V17 tmp12 [V17,T09] ( 2,101 ) int -> x21 "V02.[008..012)"
; V18 tmp13 [V18,T00] ( 5,385.62) int -> registers "V02.[012..016)"
; V19 tmp14 [V19,T07] ( 3,199.85) int -> x1 "V02.[016..020)"
-; V20 cse0 [V20,T02] ( 3,361.54) int -> x23 hoist "CSE - aggressive"
+; V20 cse0 [V20,T02] ( 3,361.54) int -> x0 hoist "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M12432_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
- stp x23, x24, [sp, #0x30]
+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38]
mov fp, sp
ldr x19, [fp, #0x78]
; gcrRegs +[x19]
@@ -60,21 +60,21 @@ G_M12432_IG03: ; bbWeight=99.85, gcrefRegs=180000 {x19 x20}, byrefRegs=00
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- mov w22, w24
+ mov w22, w23
tbnz w0, #31, G_M12432_IG14
;; size=36 bbWeight=99.85 PerfScore 1048.43
G_M12432_IG04: ; bbWeight=100, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [x20, #0x34]
cmp w21, w0
bne G_M12432_IG13
- ldr w23, [x20, #0x28]
+ ldr w0, [x20, #0x28]
;; size=16 bbWeight=100 PerfScore 750.00
G_M12432_IG05: ; bbWeight=161.54, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cmp w22, w23
+ cmp w22, w0
blo G_M12432_IG10
;; size=8 bbWeight=161.54 PerfScore 242.31
G_M12432_IG06: ; bbWeight=100, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- add w24, w23, #1
+ add w23, w0, #1
mov w1, wzr
mov w2, wzr
;; size=12 bbWeight=100 PerfScore 150.00
@@ -86,50 +86,49 @@ G_M12432_IG08: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov w0, #1
;; size=4 bbWeight=0.14 PerfScore 0.07
G_M12432_IG09: ; bbWeight=0.14, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30]
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
add sp, sp, #80
ret lr
- ;; size=24 bbWeight=0.14 PerfScore 0.77
+ ;; size=24 bbWeight=0.14 PerfScore 0.91
G_M12432_IG10: ; bbWeight=61.54, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20]
- ldr x0, [x20, #0x10]
- ; gcrRegs +[x0]
- add w1, w22, #1
- sxtw w24, w1
- ldr w1, [x0, #0x08]
- cmp w22, w1
- bhs G_M12432_IG11
- mov w1, #12
- mov x2, #16
- umaddl x1, w22, w1, x2
- add x22, x0, x1
+ ldr x1, [x20, #0x10]
+ ; gcrRegs +[x1]
+ add w2, w22, #1
+ sxtw w23, w2
+ ldr w2, [x1, #0x08]
+ cmp w22, w2
+ bhs G_M12432_IG16
+ mov w2, #12
+ mov x3, #16
+ umaddl x2, w22, w2, x3
+ add x22, x1, x2
; byrRegs +[x22]
- ldr w0, [x22, #0x04]
- ; gcrRegs -[x0]
- cmn w0, #1
- bge G_M12432_IG12
- mov w22, w24
+ ldr w1, [x22, #0x04]
+ ; gcrRegs -[x1]
+ cmn w1, #1
+ blt G_M12432_IG12
+ ;; size=52 bbWeight=61.54 PerfScore 1200.00
+G_M12432_IG11: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref
+ mov x0, x22
+ ; byrRegs +[x0]
+ mov w22, w23
; byrRegs -[x22]
- b G_M12432_IG05
- ;; size=60 bbWeight=61.54 PerfScore 1292.31
-G_M12432_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20]
- bl CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M12432_IG12: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref
- ; gcrRegs +[x19-x20]
- ; byrRegs +[x22]
- ldr w1, [x22, #0x08]
+ ldr w1, [x0, #0x08]
mov w2, #1
+ mov w23, w22
b G_M12432_IG07
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M12432_IG12: ; bbWeight=30.77, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x0]
+ mov w22, w23
+ b G_M12432_IG05
+ ;; size=8 bbWeight=30.77 PerfScore 46.15
G_M12432_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20]
- ; byrRegs -[x22]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -142,26 +141,31 @@ G_M12432_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
G_M12432_IG15: ; bbWeight=0, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30]
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
add sp, sp, #80
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
+G_M12432_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 268, prolog size 24, PerfScore 3595.38, instruction count 67, allocated bytes for code 268 (MethodHash=70e5cf6f) for method System.Collections.Generic.HashSet`1[int]:IsSubsetOfHashSetWithSameComparer(System.Collections.Generic.HashSet`1[int]):ubyte:this (Tier1-OSR)
+Total bytes of code 284, prolog size 24, PerfScore 3549.37, instruction count 71, allocated bytes for code 284 (MethodHash=70e5cf6f) for method System.Collections.Generic.HashSet`1[int]:IsSubsetOfHashSetWithSameComparer(System.Collections.Generic.HashSet`1[int]):ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 67 (0x00043) Actual length = 268 (0x00010c)
+ Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -172,10 +176,13 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- E6 save_next
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
05 alloc_s #5 (0x05); sub sp, sp, #80 (0x050)
E4 end
+ E4 end
+ E4 end
+ E4 end
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
-24 (-17.14%) : 48853.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
@@ -8,7 +8,7 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
; V02 loc0 [V02,T06] ( 3, 1.50) int -> x1 ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
@@ -20,9 +20,9 @@
; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> x0 single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V11 tmp6 [V11,T07] ( 3, 1.50) ref -> x2 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+;* V12 rat0 [V12,T05] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -30,10 +30,9 @@ G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldr x0, [x19, #0x20]
@@ -46,54 +45,47 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
blr x2
; gcrRegs -[x0-x1]
; byrRegs +[x0]
- cbz x0, G_M43979_IG05
+ cbz x0, G_M43979_IG04
;; size=32 bbWeight=1 PerfScore 12.50
-G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
+G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
ldr w1, [x0]
ldr x2, [x19, #0x80]
; gcrRegs +[x2]
- ldr x0, [x19]
- ; byrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0xC0]
- cbnz x0, G_M43979_IG07
- ;; size=28 bbWeight=0.50 PerfScore 9.50
-G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- b G_M43979_IG07
- ;; size=4 bbWeight=0.10 PerfScore 0.10
-G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M43979_IG06
+ ;; size=12 bbWeight=0.50 PerfScore 3.50
+G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
+ ; byrRegs -[x0]
mov x0, xzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M43979_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43979_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x2]
ldr w0, [x2, #0x08]
cmp w1, w0
- bhs G_M43979_IG09
+ bhs G_M43979_IG08
add x0, x2, #16
; byrRegs +[x0]
ldr x0, [x0, w1, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M43979_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x2]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 140, prolog size 16, PerfScore 34.35, instruction count 35, allocated bytes for code 140 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
+Total bytes of code 116, prolog size 12, PerfScore 27.25, instruction count 29, allocated bytes for code 116 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -104,7 +96,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-17.14%) : 6292.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
@@ -8,7 +8,7 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
; V02 loc0 [V02,T06] ( 3, 1.50) int -> x1 ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
@@ -20,9 +20,9 @@
; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> x0 single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V11 tmp6 [V11,T07] ( 3, 1.50) ref -> x2 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+;* V12 rat0 [V12,T05] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -30,10 +30,9 @@ G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldr x0, [x19, #0x20]
@@ -46,54 +45,47 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
blr x2
; gcrRegs -[x0-x1]
; byrRegs +[x0]
- cbz x0, G_M43979_IG05
+ cbz x0, G_M43979_IG04
;; size=32 bbWeight=1 PerfScore 12.50
-G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
+G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
ldr w1, [x0]
ldr x2, [x19, #0x80]
; gcrRegs +[x2]
- ldr x0, [x19]
- ; byrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0xD1FFAB1E]
- cbnz x0, G_M43979_IG07
- ;; size=28 bbWeight=0.50 PerfScore 9.50
-G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- b G_M43979_IG07
- ;; size=4 bbWeight=0.10 PerfScore 0.10
-G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M43979_IG06
+ ;; size=12 bbWeight=0.50 PerfScore 3.50
+G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
+ ; byrRegs -[x0]
mov x0, xzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M43979_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43979_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x2]
ldr w0, [x2, #0x08]
cmp w1, w0
- bhs G_M43979_IG09
+ bhs G_M43979_IG08
add x0, x2, #16
; byrRegs +[x0]
ldr x0, [x0, w1, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M43979_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x2]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 140, prolog size 16, PerfScore 34.35, instruction count 35, allocated bytes for code 140 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
+Total bytes of code 116, prolog size 12, PerfScore 27.25, instruction count 29, allocated bytes for code 116 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -104,7 +96,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-17.14%) : 43164.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
@@ -8,7 +8,7 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
; V02 loc0 [V02,T06] ( 3, 1.50) int -> x1 ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
@@ -20,9 +20,9 @@
; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> x0 single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V11 tmp6 [V11,T07] ( 3, 1.50) ref -> x2 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+;* V12 rat0 [V12,T05] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -30,10 +30,9 @@ G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldr x0, [x19, #0x20]
@@ -46,54 +45,47 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
blr x2
; gcrRegs -[x0-x1]
; byrRegs +[x0]
- cbz x0, G_M43979_IG05
+ cbz x0, G_M43979_IG04
;; size=32 bbWeight=1 PerfScore 12.50
-G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
+G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
ldr w1, [x0]
ldr x2, [x19, #0x80]
; gcrRegs +[x2]
- ldr x0, [x19]
- ; byrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0xC0]
- cbnz x0, G_M43979_IG07
- ;; size=28 bbWeight=0.50 PerfScore 9.50
-G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- b G_M43979_IG07
- ;; size=4 bbWeight=0.10 PerfScore 0.10
-G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M43979_IG06
+ ;; size=12 bbWeight=0.50 PerfScore 3.50
+G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
+ ; byrRegs -[x0]
mov x0, xzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M43979_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43979_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x2]
ldr w0, [x2, #0x08]
cmp w1, w0
- bhs G_M43979_IG09
+ bhs G_M43979_IG08
add x0, x2, #16
; byrRegs +[x0]
ldr x0, [x0, w1, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M43979_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x2]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 140, prolog size 16, PerfScore 34.35, instruction count 35, allocated bytes for code 140 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
+Total bytes of code 116, prolog size 12, PerfScore 27.25, instruction count 29, allocated bytes for code 116 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -104,7 +96,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 22184.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNativeIntegerOverflowingUnaryOperator(int,Microsoft.CodeAnalysis.ConstantValue):System.Object (FullOpts)
@@ -24,19 +24,9 @@ G_M35943_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M35943_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov w1, #0xD1FFAB1E
cmp w0, w1
- beq G_M35943_IG05
+ bne G_M35943_IG05
;; size=12 bbWeight=1 PerfScore 2.00
-G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov x0, xzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19]
+G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -57,13 +47,21 @@ G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
mov x0, x20
; gcrRegs +[x0]
;; size=60 bbWeight=0.50 PerfScore 8.50
+G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x20]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M35943_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M35943_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x20]
bl CORINFO_HELP_OVERFLOW
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
+0 (0.00%) : 169696.dasm - System.Xml.XmlConvert:CreateException(System.String,System.String,int,int,int):System.Exception (FullOpts)
@@ -42,9 +42,55 @@ G_M23253_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov w22, w4
;; size=40 bbWeight=1 PerfScore 7.50
G_M23253_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz w2, G_M23253_IG05
+ cbnz w2, G_M23253_IG05
;; size=4 bbWeight=1 PerfScore 1.00
G_M23253_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ str x20, [fp, #0x18] // [V08 tmp3]
+ add x20, fp, #24 // [V08 tmp3]
+ ; gcrRegs -[x20]
+ ; byrRegs +[x20]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #2 LSL #32
+ bl CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[x0]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ mov x2, x20
+ ; byrRegs +[x2]
+ mov w3, #1
+ mov x1, x19
+ ; gcrRegs +[x1]
+ mov x0, xzr
+ ; gcrRegs -[x0]
+ movz x4, #0xD1FFAB1E // code for <unknown method>
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #2 LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x1 x19] +[x0]
+ ; byrRegs -[x2 x20]
+ mov x1, x0
+ ; gcrRegs +[x1]
+ mov x0, x21
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #2 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0-x1]
+ mov x0, x21
+ ; gcrRegs +[x0]
+ ;; size=96 bbWeight=0.50 PerfScore 9.50
+G_M23253_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x50
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
+G_M23253_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x21] +[x19-x20]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #2 LSL #32
@@ -118,52 +164,6 @@ G_M23253_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov x0, x23
; gcrRegs +[x0]
;; size=184 bbWeight=0.50 PerfScore 16.25
-G_M23253_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x23, x24, [sp, #0x40]
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
- ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M23253_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x23] +[x19-x20]
- str x20, [fp, #0x18] // [V08 tmp3]
- add x20, fp, #24 // [V08 tmp3]
- ; gcrRegs -[x20]
- ; byrRegs +[x20]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #2 LSL #32
- bl CORINFO_HELP_NEWSFAST
- ; gcrRegs +[x0]
- mov x21, x0
- ; gcrRegs +[x21]
- mov x2, x20
- ; byrRegs +[x2]
- mov w3, #1
- mov x1, x19
- ; gcrRegs +[x1]
- mov x0, xzr
- ; gcrRegs -[x0]
- movz x4, #0xD1FFAB1E // code for <unknown method>
- movk x4, #0xD1FFAB1E LSL #16
- movk x4, #2 LSL #32
- ldr x4, [x4]
- blr x4
- ; gcrRegs -[x1 x19] +[x0]
- ; byrRegs -[x2 x20]
- mov x1, x0
- ; gcrRegs +[x1]
- mov x0, x21
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #2 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0-x1]
- mov x0, x21
- ; gcrRegs +[x0]
- ;; size=96 bbWeight=0.50 PerfScore 9.50
G_M23253_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
+0 (0.00%) : 173140.dasm - System.Xml.XmlConvert:CreateException(System.String,int,int,int):System.Exception (FullOpts)
@@ -33,9 +33,36 @@ G_M24551_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov w21, w3
;; size=32 bbWeight=1 PerfScore 6.00
G_M24551_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz w1, G_M24551_IG05
+ cbnz w1, G_M24551_IG05
;; size=4 bbWeight=1 PerfScore 1.00
G_M24551_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #2 LSL #32
+ bl CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[x0]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ mov x1, x19
+ ; gcrRegs +[x1]
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #2 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0-x1 x19]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ ;; size=48 bbWeight=0.50 PerfScore 4.75
+G_M24551_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x40
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M24551_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x20] +[x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #2 LSL #32
@@ -107,33 +134,6 @@ G_M24551_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
mov x0, x22
; gcrRegs +[x0]
;; size=188 bbWeight=0.50 PerfScore 16.50
-G_M24551_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
- ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M24551_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x22] +[x19]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #2 LSL #32
- bl CORINFO_HELP_NEWSFAST
- ; gcrRegs +[x0]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x1, x19
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #2 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0-x1 x19]
- mov x0, x20
- ; gcrRegs +[x0]
- ;; size=48 bbWeight=0.50 PerfScore 4.75
G_M24551_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
realworld.run.osx.arm64.checked.mch
-28 (-20.59%) : 11054.dasm - FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
@@ -8,8 +8,8 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 7, 5 ) ref -> x19 this class-hnd single-def <FSharp.Compiler.Infos+PropInfo>
-;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <FSharp.Compiler.Infos+PropInfo>
+; V00 this [V00,T00] ( 6, 4.50) ref -> x19 this class-hnd single-def <FSharp.Compiler.Infos+PropInfo>
+;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <FSharp.Compiler.Infos+PropInfo>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
; V03 loc2 [V03,T04] ( 2, 1 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <FSharp.Compiler.TypedTree+ValRef>
@@ -37,29 +37,16 @@ G_M3270_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbnz x0, G_M3270_IG04
+ cbz x0, G_M3270_IG05
;; size=24 bbWeight=1 PerfScore 4.00
G_M3270_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- mov x1, x19
- ; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[x1 x19] +[x0]
- ; gcr arg pop 0
- cbnz x0, G_M3270_IG06
- b G_M3270_IG06
- ;; size=28 bbWeight=0.50 PerfScore 2.50
-G_M3270_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x19]
ldr x0, [x19, #0x18]
; gcrRegs +[x0]
- cbz x0, G_M3270_IG06
+ cbz x0, G_M3270_IG05
ldr x1, [x19, #0x20]
; gcrRegs +[x1]
- cbnz x1, G_M3270_IG06
+ cbnz x1, G_M3270_IG05
ldr x0, [x0, #0x08]
ldr x1, [x19, #0x08]
movz x2, #0xD1FFAB1E // code for FSharp.Compiler.Infos:ValRef.IsFSharpEventProperty(FSharp.Compiler.TypedTree+ValRef,FSharp.Compiler.TcGlobals+TcGlobals):ubyte
@@ -67,23 +54,23 @@ G_M3270_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movk x2, #1 LSL #32
ldr x2, [x2]
;; size=40 bbWeight=0.50 PerfScore 9.25
-G_M3270_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M3270_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
br x2
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M3270_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3270_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0-x1 x19]
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3270_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M3270_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-Total bytes of code 136, prolog size 16, PerfScore 23.00, instruction count 34, allocated bytes for code 136 (MethodHash=cb2ef339) for method FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
+Total bytes of code 108, prolog size 16, PerfScore 20.50, instruction count 27, allocated bytes for code 108 (MethodHash=cb2ef339) for method FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -94,7 +81,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-8.93%) : 21285.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System._Canon]:getHasAnyApplicableMember():ubyte:this (FullOpts)
@@ -27,10 +27,10 @@
; V16 tmp12 [V16,T00] ( 5, 27 ) int -> x21 "field V01._index (fldOffset=0x8)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) ubyte -> zero-ref "V03.[004..005)"
;* V18 cse0 [V18,T11] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V19 cse1 [V19,T06] ( 2, 2 ) long -> x22 "CSE - aggressive"
-; V20 rat0 [V20,T07] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
+; V19 cse1 [V19,T06] ( 1, 1 ) long -> x22 "CSE - aggressive"
+;* V20 rat0 [V20,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V21 rat1 [V21,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V22 rat2 [V22,T05] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V22 rat2 [V22,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;* V23 rat3 [V23,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
;* V24 rat4 [V24,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
@@ -49,7 +49,7 @@ G_M864_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
mov x19, x0
; gcrRegs +[x19]
;; size=40 bbWeight=1 PerfScore 8.00
-G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:this
@@ -62,15 +62,10 @@ G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byre
; gcrRegs +[x20]
mov w21, w1
ldr x22, [x19]
- mov x0, x22
- ; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x30]
- cbnz x0, G_M864_IG04
b G_M864_IG04
- ;; size=64 bbWeight=1 PerfScore 27.00
+ ;; size=44 bbWeight=1 PerfScore 16.50
G_M864_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
ldr x0, [x20, #0x08]
; gcrRegs +[x0]
add x8, fp, #24 // [V02 loc1]
@@ -118,7 +113,7 @@ G_M864_IG08: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
-Total bytes of code 224, prolog size 36, PerfScore 138.50, instruction count 56, allocated bytes for code 224 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
+Total bytes of code 204, prolog size 36, PerfScore 128.00, instruction count 51, allocated bytes for code 204 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -129,7 +124,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-7.94%) : 22024.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)
@@ -25,10 +25,10 @@
; V14 tmp8 [V14,T05] ( 3, 6 ) ref -> x0 "Field obj"
; V15 tmp9 [V15,T01] ( 2, 8 ) byref -> x2 "argument with side effect"
;* V16 cse0 [V16,T12] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V17 cse1 [V17,T08] ( 3, 3 ) long -> x24 "CSE - aggressive"
-; V18 rat0 [V18,T10] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+; V17 cse1 [V17,T08] ( 2, 2.50) long -> x24 "CSE - aggressive"
+;* V18 rat0 [V18,T10] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V19 rat1 [V19,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V20 rat2 [V20,T09] ( 2, 2 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V20 rat2 [V20,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
@@ -62,7 +62,7 @@ G_M9562_IG02: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=100000 {x
; gcrRegs +[x21]
cbz x21, G_M9562_IG07
;; size=40 bbWeight=1 PerfScore 13.50
-G_M9562_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref, isz
+G_M9562_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x0]
mov x0, x21
; gcrRegs +[x0]
@@ -75,15 +75,10 @@ G_M9562_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=1000
; gcrRegs +[x22]
mov w23, w1
ldr x24, [x19]
- mov x0, x24
- ; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x30]
- cbnz x0, G_M9562_IG05
b G_M9562_IG05
- ;; size=60 bbWeight=0.50 PerfScore 10.75
+ ;; size=40 bbWeight=0.50 PerfScore 5.50
G_M9562_IG04: ; bbWeight=2, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=100000 {x20}, byref
+ ; gcrRegs -[x0]
mov x0, x22
; gcrRegs +[x0]
mov w1, w23
@@ -133,7 +128,7 @@ G_M9562_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
ret lr
;; size=20 bbWeight=1 PerfScore 5.00
-Total bytes of code 252, prolog size 24, PerfScore 106.75, instruction count 63, allocated bytes for code 252 (MethodHash=57bfdaa5) for method Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)
+Total bytes of code 232, prolog size 24, PerfScore 101.50, instruction count 58, allocated bytes for code 232 (MethodHash=57bfdaa5) for method Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)
; ============================================================
Unwind Info:
@@ -144,7 +139,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 63 (0x0003f) Actual length = 252 (0x0000fc)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 19702.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNativeIntegerOverflowingUnaryOperator(int,Microsoft.CodeAnalysis.ConstantValue):System.Object (FullOpts)
@@ -24,19 +24,9 @@ G_M35943_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M35943_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov w1, #0xD1FFAB1E
cmp w0, w1
- beq G_M35943_IG05
+ bne G_M35943_IG05
;; size=12 bbWeight=1 PerfScore 2.00
-G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov x0, xzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19]
+G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -57,13 +47,21 @@ G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
mov x0, x20
; gcrRegs +[x0]
;; size=60 bbWeight=0.50 PerfScore 8.50
+G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x20]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M35943_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M35943_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x20]
bl CORINFO_HELP_OVERFLOW
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
+0 (0.00%) : 3180.dasm - FSharp.Compiler.CompilerConfig+TcConfig:computeKnownDllReference(System.String):System.Tuple2[FSharp.Compiler.CompilerConfig+AssemblyReference,Microsoft.FSharp.Core.FSharpOption1[System.String]]:this (FullOpts)
@@ -22,11 +22,12 @@
; V11 tmp5 [V11,T00] ( 6, 10 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CompilerConfig+AssemblyReference>
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-;* V14 tmp8 [V14,T09] ( 0, 0 ) long -> zero-ref single-def "field V07.code1 (fldOffset=0x0)" P-INDEP
-;* V15 tmp9 [V15,T10] ( 0, 0 ) long -> zero-ref single-def "field V07.code2 (fldOffset=0x8)" P-INDEP
-; V16 cse0 [V16,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
-;* V17 cse1 [V17,T11] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-; V18 cse2 [V18,T06] ( 3, 3 ) long -> x21 "CSE - aggressive"
+;* V14 tmp8 [V14,T10] ( 0, 0 ) long -> zero-ref single-def "field V07.code1 (fldOffset=0x0)" P-INDEP
+;* V15 tmp9 [V15,T11] ( 0, 0 ) long -> zero-ref single-def "field V07.code2 (fldOffset=0x8)" P-INDEP
+; V16 tmp10 [V16,T09] ( 2, 1 ) ref -> x2 single-def "Field obj"
+; V17 cse0 [V17,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
+;* V18 cse1 [V18,T12] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V19 cse2 [V19,T06] ( 3, 3 ) long -> x21 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -102,7 +103,7 @@ G_M10872_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
cbz x2, G_M10872_IG05
;; size=160 bbWeight=1 PerfScore 38.50
G_M10872_IG03: ; bbWeight=0.50, gcrefRegs=500005 {x0 x2 x20 x22}, byrefRegs=0000 {}, byref
- ldr xzr, [x2, #0x10]
+ ldrsb wzr, [x2]
ldr x2, [x0, #0x08]
mov x0, x20
mov x1, x22
+0 (0.00%) : 25888.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
@@ -20,7 +20,7 @@
; V09 loc7 [V09,T44] ( 10, 5 ) ref -> x20 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundDagSliceEvaluation>
; V10 loc8 [V10,T45] ( 10, 5 ) ref -> x22 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
;* V11 loc9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundDagTemp>
-; V12 loc10 [V12,T131] ( 3, 1.50) ref -> x28 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V12 loc10 [V12,T131] ( 3, 1.50) ref -> x23 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V13 loc11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
; V14 loc12 [V14,T85] ( 5, 2.50) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol>
;* V15 loc13 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundDagTemp>
@@ -50,8 +50,8 @@
; V39 loc37 [V39,T153] ( 2, 1 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V40 loc38 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundDagTemp>
; V41 loc39 [V41,T135] ( 3, 1.50) ref -> x2 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V42 loc40 [V42,T72] ( 6, 3 ) ref -> x27 class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V43 loc41 [V43,T130] ( 4, 1.75) ref -> x28 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundImplicitIndexerAccess>
+; V42 loc40 [V42,T72] ( 6, 3 ) ref -> x22 class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V43 loc41 [V43,T130] ( 4, 1.75) ref -> x23 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundImplicitIndexerAccess>
; V44 loc42 [V44,T154] ( 2, 1 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V45 loc43 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundDagTemp>
; V46 loc44 [V46,T136] ( 3, 1.50) ref -> x2 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
@@ -60,7 +60,7 @@
;* V49 tmp2 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundDagFieldEvaluation>
; V50 tmp3 [V50,T99] ( 2, 2 ) ref -> x23 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
; V51 tmp4 [V51,T22] ( 8, 8 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundDagTemp>
-; V52 tmp5 [V52,T74] ( 3, 3 ) ref -> x27 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.LocalRewriter>
+; V52 tmp5 [V52,T74] ( 3, 3 ) ref -> x26 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.LocalRewriter>
; V53 tmp6 [V53,T50] ( 4, 4 ) ref -> x20 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
;* V54 tmp7 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundDagPropertyEvaluation>
; V55 tmp8 [V55,T100] ( 2, 2 ) ref -> x23 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
@@ -97,15 +97,15 @@
;* V86 tmp39 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter+DagTempAllocator>
;* V87 tmp40 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundDagSliceEvaluation>
;* V88 tmp41 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundImplicitIndexerAccess>
-; V89 tmp42 [V89,T28] ( 9, 9 ) ref -> x22 class-hnd exact single-def "dup spill" <<unknown class>>
-; V90 tmp43 [V90,T107] ( 2, 2 ) ref -> x28 class-hnd exact single-def "non-inline candidate call" <Microsoft.CodeAnalysis.CSharp.BoundSlicePatternRangePlaceholder>
+; V89 tmp42 [V89,T28] ( 9, 9 ) ref -> x23 class-hnd exact single-def "dup spill" <<unknown class>>
+; V90 tmp43 [V90,T107] ( 2, 2 ) ref -> x21 class-hnd exact single-def "non-inline candidate call" <Microsoft.CodeAnalysis.CSharp.BoundSlicePatternRangePlaceholder>
; V91 tmp44 [V91,T91] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
; V92 tmp45 [V92,T151] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
; V93 tmp46 [V93,T68] ( 5, 3.75) ref -> x21 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
; V94 tmp47 [V94,T108] ( 2, 2 ) ref -> x22 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
; V95 tmp48 [V95,T29] ( 8, 8 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundDagTemp>
;* V96 tmp49 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter+DagTempAllocator>
-;* V97 tmp50 [V97,T198] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V97 tmp50 [V97 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V98 tmp51 [V98 ] ( 3, 1.50) struct (24) [fp+0xD0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V99 tmp52 [V99,T137] ( 3, 1.50) ref -> x26 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V100 tmp53 [V100,T52] ( 4, 4 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
@@ -122,11 +122,11 @@
;* V111 tmp64 [V111 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V112 tmp65 [V112 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V113 tmp66 [V113 ] ( 3, 1.50) struct (24) [fp+0xB8] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V114 tmp67 [V114,T94] ( 4, 2 ) ref -> x23 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V114 tmp67 [V114,T94] ( 4, 2 ) ref -> x24 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V115 tmp68 [V115,T53] ( 4, 4 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
;* V116 tmp69 [V116 ] ( 0, 0 ) ref -> zero-ref single-def
; V117 tmp70 [V117,T87] ( 5, 2.50) ref -> x3 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V118 tmp71 [V118,T13] ( 14, 14 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundFieldAccess>
+; V118 tmp71 [V118,T13] ( 14, 14 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundFieldAccess>
;* V119 tmp72 [V119 ] ( 0, 0 ) ref -> zero-ref
; V120 tmp73 [V120,T138] ( 3, 1.50) ref -> x21 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
; V121 tmp74 [V121,T31] ( 8, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundAddressOfOperator>
@@ -420,7 +420,7 @@ G_M26377_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
;; size=60 bbWeight=1 PerfScore 21.00
G_M26377_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- b G_M26377_IG18
+ b G_M26377_IG10
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M26377_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
add x0, x8, #0xD1FFAB1E
@@ -428,7 +428,7 @@ G_M26377_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
bne G_M26377_IG05
mov x22, x20
; gcrRegs +[x22]
- b G_M26377_IG31
+ b G_M26377_IG23
;; size=20 bbWeight=0.50 PerfScore 1.75
G_M26377_IG05: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22]
@@ -437,7 +437,7 @@ G_M26377_IG05: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
bne G_M26377_IG06
mov x23, x20
; gcrRegs +[x23]
- b G_M26377_IG37
+ b G_M26377_IG29
;; size=20 bbWeight=0.50 PerfScore 1.75
G_M26377_IG06: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x23]
@@ -448,7 +448,7 @@ G_M26377_IG06: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
bne G_M26377_IG07
mov x24, x20
; gcrRegs +[x24]
- b G_M26377_IG57
+ b G_M26377_IG49
;; size=28 bbWeight=0.50 PerfScore 2.25
G_M26377_IG07: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x24]
@@ -457,7 +457,7 @@ G_M26377_IG07: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
bne G_M26377_IG08
mov x25, x20
; gcrRegs +[x25]
- b G_M26377_IG70
+ b G_M26377_IG62
;; size=20 bbWeight=0.50 PerfScore 1.75
G_M26377_IG08: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
@@ -468,7 +468,7 @@ G_M26377_IG08: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
bne G_M26377_IG09
mov x26, x20
; gcrRegs +[x26]
- b G_M26377_IG72
+ b G_M26377_IG64
;; size=28 bbWeight=0.50 PerfScore 2.25
G_M26377_IG09: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x26]
@@ -476,241 +476,10 @@ G_M26377_IG09: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
movk x8, #0xD1FFAB1E LSL #16
movk x8, #1 LSL #32
cmp x1, x8
- bne G_M26377_IG86
- ldr x27, [x20, #0x30]
- ; gcrRegs +[x27]
- mov x28, x27
- ; gcrRegs +[x28]
- cbz x28, G_M26377_IG11
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M26377_IG10: ; bbWeight=0.25, gcrefRegs=18380000 {x19 x20 x21 x27 x28}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x28]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- cmp x0, x1
- beq G_M26377_IG82
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M26377_IG11: ; bbWeight=0.50, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x28]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- mov w1, #0xD1FFAB1E
- bl CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
- movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #2 LSL #32
- ldr x0, [x0]
- ; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- ldr wzr, [x0]
- blr x1
- mov x22, x0
- ; gcrRegs +[x22]
- ldr x1, [x20, #0x38]
- ; gcrRegs +[x1]
- ldrsb wzr, [x22]
- mov x0, x22
- mov x2, x21
- ; gcrRegs +[x2]
- mov w3, #2
- movz x4, #0xD1FFAB1E // code for <unknown method>
- movk x4, #0xD1FFAB1E LSL #16
- movk x4, #1 LSL #32
- ldr x4, [x4]
- blr x4
- ; gcrRegs -[x0-x2 x21]
- movz x1, #0xD1FFAB1E // code for <unknown method>
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- blr x1
- ldr x28, [x20, #0x40]
- ; gcrRegs +[x28]
- mov x0, x19
- ; gcrRegs +[x0]
- mov x1, x20
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- mov x2, x0
- ; gcrRegs +[x2]
- mov x0, x22
- mov x1, x28
- ; gcrRegs +[x1]
- mov w3, #2
- movz x4, #0xD1FFAB1E // code for <unknown method>
- movk x4, #0xD1FFAB1E LSL #16
- movk x4, #1 LSL #32
- ldr x4, [x4]
- blr x4
- ; gcrRegs -[x0-x2 x28]
- movz x1, #0xD1FFAB1E // code for <unknown method>
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- blr x1
- mov x0, x22
- ; gcrRegs +[x0]
- mov x1, x27
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.LocalRewriter+PlaceholderReplacer:Replace(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.BoundEarlyValuePlaceholderBase,Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1 x27]
- mov x27, x0
- ; gcrRegs +[x27]
- mov x0, x22
- movz x1, #0xD1FFAB1E // code for System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Clear():this
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- blr x1
- ; gcrRegs -[x0]
- ldr x0, [x22, #0x48]
- ; gcrRegs +[x0]
- cbz x0, G_M26377_IG12
- ldr x14, [x0, #0x08]
- ; gcrRegs +[x14]
- cbnz x14, G_M26377_IG83
- add x14, x0, #8
- ; gcrRegs -[x14]
- ; byrRegs +[x14]
- mov x15, x22
- ; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x22]
- ; byrRegs -[x14]
- ;; size=296 bbWeight=0.50 PerfScore 40.25
-G_M26377_IG12: ; bbWeight=0.50, gcrefRegs=8180000 {x19 x20 x27}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
- mov x1, x27
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.LocalRewriter:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- ldr wzr, [x0]
- blr x2
- ; gcrRegs -[x1 x27]
- mov x1, x0
- ; gcrRegs +[x1]
...
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.osx.arm64.checked.mch |
27 |
27 |
0 |
0 |
-480 |
+0 |
| benchmarks.run_pgo.osx.arm64.checked.mch |
268 |
194 |
2 |
72 |
-4,320 |
+72 |
| benchmarks.run_tiered.osx.arm64.checked.mch |
13 |
11 |
0 |
2 |
-228 |
+0 |
| coreclr_tests.run.osx.arm64.checked.mch |
421 |
240 |
5 |
176 |
-5,472 |
+52 |
| libraries.crossgen2.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries.pmi.osx.arm64.checked.mch |
199 |
185 |
0 |
14 |
-3,432 |
+0 |
| libraries_tests.run.osx.arm64.Release.mch |
958 |
757 |
17 |
184 |
-16,836 |
+220 |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
250 |
231 |
0 |
19 |
-3,688 |
+0 |
| realworld.run.osx.arm64.checked.mch |
55 |
52 |
0 |
3 |
-1,272 |
+0 |
|
2,191 |
1,697 |
24 |
470 |
-35,728 |
+344 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.osx.arm64.checked.mch |
24,861 |
5 |
24,856 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.osx.arm64.checked.mch |
84,163 |
48,254 |
35,909 |
13 (0.02%) |
13 (0.02%) |
| benchmarks.run_tiered.osx.arm64.checked.mch |
48,057 |
37,339 |
10,718 |
0 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.osx.arm64.checked.mch |
584,881 |
356,502 |
228,379 |
7 (0.00%) |
7 (0.00%) |
| libraries.crossgen2.osx.arm64.checked.mch |
1,881 |
0 |
1,881 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.osx.arm64.checked.mch |
316,291 |
18 |
316,273 |
3 (0.00%) |
3 (0.00%) |
| libraries_tests.run.osx.arm64.Release.mch |
634,566 |
463,650 |
170,916 |
83 (0.01%) |
83 (0.01%) |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
303,144 |
21,597 |
281,547 |
2 (0.00%) |
2 (0.00%) |
| realworld.run.osx.arm64.checked.mch |
31,542 |
3 |
31,539 |
1 (0.00%) |
1 (0.00%) |
|
2,029,386 |
927,368 |
1,102,018 |
109 (0.01%) |
109 (0.01%) |
jit-analyze output
benchmarks.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 11185284 (overridden on cmd)
Total bytes of diff: 11184804 (overridden on cmd)
Total bytes of delta: -480 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 27 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
benchmarks.run_pgo.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 34533064 (overridden on cmd)
Total bytes of diff: 34528816 (overridden on cmd)
Total bytes of delta: -4248 (-0.01 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 91 unchanged.
benchmarks.run_tiered.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15508464 (overridden on cmd)
Total bytes of diff: 15508236 (overridden on cmd)
Total bytes of delta: -228 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 13 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
coreclr_tests.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 483586020 (overridden on cmd)
Total bytes of diff: 483580600 (overridden on cmd)
Total bytes of delta: -5420 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 68 unchanged.
libraries.pmi.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 80207064 (overridden on cmd)
Total bytes of diff: 80203632 (overridden on cmd)
Total bytes of delta: -3432 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 61 unchanged.
libraries_tests.run.osx.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 313700576 (overridden on cmd)
Total bytes of diff: 313683960 (overridden on cmd)
Total bytes of delta: -16616 (-0.01 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 85 unchanged.
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 163153084 (overridden on cmd)
Total bytes of diff: 163149396 (overridden on cmd)
Total bytes of delta: -3688 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 64 unchanged.
realworld.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15075948 (overridden on cmd)
Total bytes of diff: 15074676 (overridden on cmd)
Total bytes of delta: -1272 (-0.01 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 49 unchanged.
windows arm64
Diffs are based on 2,070,850 contexts (937,853 MinOpts, 1,132,997 FullOpts).
MISSED contexts: 139 (0.01%)
Overall (-34,708 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.arm64.checked.mch |
10,966,596 |
-412 |
| benchmarks.run_pgo.windows.arm64.checked.mch |
46,609,220 |
-3,884 |
| benchmarks.run_tiered.windows.arm64.checked.mch |
15,506,140 |
-160 |
| coreclr_tests.run.windows.arm64.checked.mch |
496,298,628 |
-4,988 |
| libraries.pmi.windows.arm64.checked.mch |
79,834,280 |
-3,640 |
| libraries_tests.run.windows.arm64.Release.mch |
326,696,628 |
-16,284 |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
171,564,828 |
-3,968 |
| realworld.run.windows.arm64.checked.mch |
15,891,320 |
-1,372 |
FullOpts (-34,708 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.arm64.checked.mch |
10,966,060 |
-412 |
| benchmarks.run_pgo.windows.arm64.checked.mch |
30,351,028 |
-3,884 |
| benchmarks.run_tiered.windows.arm64.checked.mch |
4,328,392 |
-160 |
| coreclr_tests.run.windows.arm64.checked.mch |
156,624,224 |
-4,988 |
| libraries.pmi.windows.arm64.checked.mch |
79,714,296 |
-3,640 |
| libraries_tests.run.windows.arm64.Release.mch |
123,222,780 |
-16,284 |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
158,411,116 |
-3,968 |
| realworld.run.windows.arm64.checked.mch |
15,327,340 |
-1,372 |
Example diffs
benchmarks.run.windows.arm64.checked.mch
-24 (-12.50%) : 21681.dasm - System.Collections.IterateForEach`1[System.Canon]:ImmutableStack():System.Canon:this (FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
; V01 loc0 [V01,T04] ( 3, 4 ) ref -> x20 ld-addr-op class-hnd <System.__Canon>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Collections.Immutable.ImmutableStack`1[System.__Canon]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def <System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]>
@@ -23,22 +23,21 @@
; V12 tmp7 [V12,T06] ( 2, 3 ) ref -> x21 "field V03._originalStack (fldOffset=0x0)" P-INDEP
; V13 tmp8 [V13,T00] ( 8, 27 ) ref -> x22 "field V03._remainingStack (fldOffset=0x8)" P-INDEP
;* V14 cse0 [V14,T07] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V15 rat0 [V15,T03] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
+;* V15 rat0 [V15,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V16 rat1 [V16,T05] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V17 rat2 [V17,T02] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V17 rat2 [V17,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M64146_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
mov fp, sp
- str x0, [fp, #0x18]
mov x19, x0
; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M64146_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=1 PerfScore 4.00
+G_M64146_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x20, xzr
; gcrRegs +[x20]
ldr x0, [x19, #0xA0]
@@ -54,16 +53,10 @@ G_M64146_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x21]
mov x22, x1
; gcrRegs +[x22]
- ldr x0, [x19]
- ; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x20]
- cbnz x0, G_M64146_IG04
b G_M64146_IG04
- ;; size=64 bbWeight=1 PerfScore 27.00
+ ;; size=44 bbWeight=1 PerfScore 14.00
G_M64146_IG03: ; bbWeight=2, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x0-x1 x20]
mov x0, x22
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableStack`1[System.__Canon]:Peek():System.__Canon:this
@@ -110,13 +103,13 @@ G_M64146_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 0.50
G_M64146_IG09: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-Total bytes of code 192, prolog size 20, PerfScore 113.50, instruction count 48, allocated bytes for code 192 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
+Total bytes of code 168, prolog size 16, PerfScore 99.50, instruction count 42, allocated bytes for code 168 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -127,7 +120,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -136,8 +129,8 @@ Unwind Info:
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
E6 save_next
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
E4 end
-12 (-7.14%) : 14701.dasm - System.Collections.Generic.PriorityQueue2[int,int]:MoveUpDefaultComparer(System.ValueTuple2[int,int],int):this (FullOpts)
@@ -16,11 +16,11 @@
;* V05 loc2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.ValueTuple`2[int,int]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V08 tmp2 [V08,T03] ( 3, 20 ) int -> x7 ld-addr-op "Inlining Arg"
+; V08 tmp2 [V08,T03] ( 2, 16 ) int -> x7 ld-addr-op "Inlining Arg"
;* V09 tmp3 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V10 tmp4 [V10,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V11 tmp5 [V11,T08] ( 2, 8 ) int -> x6 "field V05.Item1 (fldOffset=0x0)" P-INDEP
-; V12 tmp6 [V12,T05] ( 4, 14 ) int -> x5 "field V05.Item2 (fldOffset=0x4)" P-INDEP
+; V12 tmp6 [V12,T05] ( 3, 12 ) int -> x5 "field V05.Item2 (fldOffset=0x4)" P-INDEP
; V13 tmp7 [V13,T01] ( 3, 24 ) byref -> x5 "BlockOp address local"
; V14 tmp8 [V14,T02] ( 3, 24 ) byref -> x2 "BlockOp address local"
; V15 cse0 [V15,T07] ( 5, 11 ) int -> x1 hoist multi-def "CSE - aggressive"
@@ -37,7 +37,7 @@ G_M9068_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
ldr x0, [x0, #0x08]
cmp w2, #0
- ble G_M9068_IG06
+ ble G_M9068_IG04
ldr w1, [x0, #0x08]
ldr w3, [fp, #0x1C] // [V01 arg1+0x04]
;; size=20 bbWeight=1 PerfScore 9.50
@@ -45,7 +45,7 @@ G_M9068_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sub w4, w2, #1
asr w4, w4, #2
cmp w4, w1
- bhs G_M9068_IG08
+ bhs G_M9068_IG06
ubfiz x5, x4, #3, #32
add x5, x5, #16
add x5, x0, x5
@@ -54,16 +54,9 @@ G_M9068_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; byrRegs -[x5]
sxtw w7, w3
cmp w7, w5
- blt G_M9068_IG05
- ;; size=44 bbWeight=4 PerfScore 40.00
-G_M9068_IG04: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- cmp w7, w5
- ble G_M9068_IG06
- b G_M9068_IG06
- ;; size=12 bbWeight=2 PerfScore 5.00
-G_M9068_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ bge G_M9068_IG04
cmp w2, w1
- bhs G_M9068_IG08
+ bhs G_M9068_IG06
ubfiz x2, x2, #3, #32
add x2, x2, #16
add x2, x0, x2
@@ -73,28 +66,28 @@ G_M9068_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; byrRegs -[x2]
cmp w2, #0
bgt G_M9068_IG03
- ;; size=36 bbWeight=4 PerfScore 26.00
-G_M9068_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=4 PerfScore 66.00
+G_M9068_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr w1, [x0, #0x08]
cmp w2, w1
- bhs G_M9068_IG08
+ bhs G_M9068_IG06
ubfiz x1, x2, #3, #32
add x1, x1, #16
ldr x2, [fp, #0x18] // [V01 arg1]
str x2, [x0, x1]
;; size=28 bbWeight=1 PerfScore 9.00
-G_M9068_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M9068_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M9068_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M9068_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 168, prolog size 12, PerfScore 94.00, instruction count 42, allocated bytes for code 168 (MethodHash=d4dadc93) for method System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (FullOpts)
+Total bytes of code 156, prolog size 12, PerfScore 89.00, instruction count 39, allocated bytes for code 156 (MethodHash=d4dadc93) for method System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (FullOpts)
; ============================================================
Unwind Info:
@@ -105,7 +98,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-6.67%) : 4410.dasm - System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
@@ -41,15 +41,15 @@ G_M29540_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=36 bbWeight=1 PerfScore 6.50
G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
ldr w14, [x20, #0x68]
- cbnz w14, G_M29540_IG11
- cbz x19, G_M29540_IG12
+ cbnz w14, G_M29540_IG10
+ cbz x19, G_M29540_IG11
add x14, x19, #244
; byrRegs +[x14]
mov w15, #1
mov w12, wzr
mov w1, w12
casal w1, w15, [x14]
- cbnz w1, G_M29540_IG13
+ cbnz w1, G_M29540_IG12
mov w14, #7
; byrRegs -[x14]
str w14, [x19, #0xDC]
@@ -61,20 +61,9 @@ G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=380
; gcrRegs -[x15]
; byrRegs -[x14]
ldrb w0, [x19, #0xFA]
- cbnz w0, G_M29540_IG04
+ cbz w0, G_M29540_IG04
;; size=64 bbWeight=1 PerfScore 18.50
-G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x0, [x0]
- ; gcrRegs +[x0]
- ldrb w0, [x0, #0x9D]
- ; gcrRegs -[x0]
- cbz w0, G_M29540_IG05
- b G_M29540_IG05
- ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -90,7 +79,7 @@ G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
; gcrRegs -[x0 x15]
; byrRegs -[x14]
;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M29540_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M29540_IG04: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
ldr x14, [x19, #0xB0]
; gcrRegs +[x14]
add x14, x14, #8
@@ -102,14 +91,14 @@ G_M29540_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
; gcrRegs -[x15]
; byrRegs -[x14]
;; size=16 bbWeight=1 PerfScore 5.00
-G_M29540_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M29540_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x20, #0x08]
; gcrRegs +[x1]
ldr x0, [x19, #0x18]
; gcrRegs +[x0]
- cbz x0, G_M29540_IG08
+ cbz x0, G_M29540_IG07
;; size=12 bbWeight=1 PerfScore 7.00
-G_M29540_IG07: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M29540_IG06: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x20-x21]
mov x0, x19
; gcrRegs +[x0]
@@ -120,9 +109,9 @@ G_M29540_IG07: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M29540_IG09
+ b G_M29540_IG08
;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M29540_IG08: ; bbWeight=0.50, gcrefRegs=280002 {x1 x19 x21}, byrefRegs=0000 {}, byref
+G_M29540_IG07: ; bbWeight=0.50, gcrefRegs=280002 {x1 x19 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x21]
mov x0, x19
; gcrRegs +[x0]
@@ -136,19 +125,19 @@ G_M29540_IG08: ; bbWeight=0.50, gcrefRegs=280002 {x1 x19 x21}, byrefRegs=
; gcrRegs -[x0-x2 x21]
; gcr arg pop 0
;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M29540_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
; GC ptr vars -{V01}
cmp w0, #0xD1FFAB1E
cset x0, eq
;; size=8 bbWeight=1 PerfScore 1.00
-G_M29540_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M29540_IG09: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x38]
ldp x19, x20, [sp, #0x28]
ldp fp, lr, [sp], #0x40
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x20]
mov x0, x20
; gcrRegs +[x0]
@@ -161,7 +150,7 @@ G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000
; gcr arg pop 0
brk_windows #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M29540_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29540_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -178,7 +167,7 @@ G_M29540_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_windows #0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M29540_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
; GC ptr vars +{V00 V01}
mov x0, x19
@@ -193,7 +182,7 @@ G_M29540_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=800
; gcr arg pop 0
brk_windows #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M29540_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M29540_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x18]
@@ -201,7 +190,7 @@ G_M29540_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
add x3, fp, #64
str x3, [sp, #0x10]
;; size=20 bbWeight=0 PerfScore 0.00
-G_M29540_IG15: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -217,7 +206,7 @@ G_M29540_IG15: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
brk_windows #0
;; size=32 bbWeight=0 PerfScore 0.00
-Total bytes of code 420, prolog size 36, PerfScore 58.25, instruction count 105, allocated bytes for code 420 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
+Total bytes of code 392, prolog size 36, PerfScore 53.50, instruction count 98, allocated bytes for code 392 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -228,7 +217,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 92 (0x0005c) Actual length = 368 (0x000170)
+ Function Length : 85 (0x00055) Actual length = 340 (0x000154)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -263,4 +252,4 @@ Unwind Info:
*************** EH table for System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M29540_IG06..G_M29540_IG09) handled by [G_M29540_IG14..END) (class: 1000001)
+EH#0: try [G_M29540_IG05..G_M29540_IG08) handled by [G_M29540_IG13..END) (class: 1000001)
-24 (-0.36%) : 18646.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 149 single block inlinees; 52 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 20, 11 ) ref -> x22 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Binder>
+; V00 this [V00,T06] ( 20, 11 ) ref -> x22 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Binder>
; V01 arg1 [V01,T01] ( 33, 17.50) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
; V02 arg2 [V02,T00] ( 53, 18 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
; V03 arg3 [V03,T14] ( 5, 3.50) ushort -> x24 single-def
; V04 arg4 [V04,T09] ( 10, 6 ) ubyte -> x23 single-def
; V05 arg5 [V05,T02] ( 32, 17 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag>
-; V06 loc0 [V06,T06] ( 26, 13 ) ubyte -> x25
+; V06 loc0 [V06,T08] ( 23, 11.50) ubyte -> x25
;* V07 loc1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.BoundNamespaceExpression>
;* V08 loc2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
;* V09 loc3 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.BoundUnconvertedAddressOfOperator>
@@ -574,7 +574,7 @@
; V563 cse0 [V563,T186] ( 3, 1.50) ref -> x2 "CSE - conservative"
; V564 cse1 [V564,T187] ( 3, 1.50) ref -> x2 "CSE - conservative"
; V565 cse2 [V565,T04] ( 31, 15.50) int -> x26 multi-def "CSE - aggressive"
-; V566 cse3 [V566,T08] ( 24, 12 ) long -> x27 multi-def "CSE - aggressive"
+; V566 cse3 [V566,T07] ( 24, 12 ) long -> x27 multi-def "CSE - aggressive"
; V567 rat0 [V567,T56] ( 3, 3 ) int -> x25 "ReplaceWithLclVar is creating a new local variable"
; V568 rat1 [V568,T57] ( 3, 3 ) int -> x28 "ReplaceWithLclVar is creating a new local variable"
; V569 rat2 [V569,T58] ( 3, 3 ) int -> x7 "ReplaceWithLclVar is creating a new local variable"
@@ -624,7 +624,7 @@ G_M42189_IG02: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg
ldr wzr, [x0]
blr x1
; gcrRegs -[x0]
- cbnz w0, G_M42189_IG168
+ cbnz w0, G_M42189_IG167
;; size=32 bbWeight=1 PerfScore 10.00
G_M42189_IG03: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x12]
@@ -644,7 +644,7 @@ G_M42189_IG04: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x27, x0
- bne G_M42189_IG170
+ bne G_M42189_IG169
ldr x4, [x19, #0x40]
; gcrRegs +[x4]
ldrb w4, [x4, #0x12]
@@ -670,7 +670,7 @@ G_M42189_IG05: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
ldr x6, [x6]
blr x6
; gcrRegs -[x0-x2 x5 x19-x22]
- b G_M42189_IG150
+ b G_M42189_IG149
;; size=52 bbWeight=0.50 PerfScore 5.00
G_M42189_IG06: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x21-x22]
@@ -679,7 +679,7 @@ G_M42189_IG06: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x27, x0
- bne G_M42189_IG171
+ bne G_M42189_IG170
mov x1, x19
; gcrRegs +[x1]
uxth w26, w24
@@ -694,7 +694,7 @@ G_M42189_IG06: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
ldr x4, [x4]
blr x4
; gcrRegs -[x0-x1 x3 x19 x21-x22]
- b G_M42189_IG150
+ b G_M42189_IG149
;; size=68 bbWeight=0.50 PerfScore 7.50
G_M42189_IG07: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x22]
@@ -712,7 +712,7 @@ G_M42189_IG07: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x0-x1 x19-x22]
- b G_M42189_IG150
+ b G_M42189_IG149
;; size=48 bbWeight=0.50 PerfScore 5.00
G_M42189_IG08: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x22]
@@ -860,37 +860,27 @@ G_M42189_IG21: ; bbWeight=0.50, gcrefRegs=200004 {x2 x21}, byrefRegs=0000
ldr x3, [x3]
blr x3
; gcrRegs -[x0 x2 x21]
- b G_M42189_IG168
+ b G_M42189_IG167
;; size=32 bbWeight=0.50 PerfScore 3.75
G_M42189_IG22: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x22]
ldrb w25, [x19, #0x12]
cmp w25, #48
- bhi G_M42189_IG27
- cmp w25, #12
- bhi G_M42189_IG24
- cmp w25, #6
- bhi G_M42189_IG23
- cmp w25, #4
- ccmp w25, #6, z, ne
- beq G_M42189_IG165
- b G_M42189_IG165
- ;; size=44 bbWeight=0.50 PerfScore 5.25
-G_M42189_IG23: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19 x22]
- cmp w25, #10
- beq G_M42189_IG161
- cmp w25, #12
- beq G_M42189_IG165
- b G_M42189_IG165
- ;; size=20 bbWeight=0.50 PerfScore 2.00
-G_M42189_IG24: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19 x22]
- cmp w25, #35
bhi G_M42189_IG26
+ cmp w25, #12
+ bhi G_M42189_IG23
+ cmp w25, #6
+ bls G_M42189_IG164
+ cmp w25, #10
+ beq G_M42189_IG160
+ b G_M42189_IG164
+ ;; size=40 bbWeight=0.50 PerfScore 5.00
+G_M42189_IG23: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+ cmp w25, #35
+ bhi G_M42189_IG25
sub w28, w25, #22
cmp w28, #10
- bhi G_M42189_IG25
+ bhi G_M42189_IG24
mov w0, w28
adr x1, [@RWD16]
ldr w1, [x1, x0, LSL #2]
@@ -898,25 +888,25 @@ G_M42189_IG24: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
add x1, x1, x2
br x1
;; size=44 bbWeight=0.50 PerfScore 4.75
-G_M42189_IG25: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG24: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19 x22]
cmp w25, #35
- beq G_M42189_IG128
- b G_M42189_IG165
+ beq G_M42189_IG127
+ b G_M42189_IG164
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M42189_IG26: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG25: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x22]
cmp w25, #42
- beq G_M42189_IG164
+ beq G_M42189_IG163
cmp w25, #47
- beq G_M42189_IG160
+ beq G_M42189_IG159
cmp w25, #48
- bne G_M42189_IG165
+ bne G_M42189_IG164
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x27, x0
- bne G_M42189_IG172
+ bne G_M42189_IG171
ldr x3, [x19, #0x28]
; gcrRegs +[x3]
mov w2, w26
@@ -932,25 +922,25 @@ G_M42189_IG26: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
ldr x5, [x5]
blr x5
; gcrRegs -[x0-x1 x3-x4 x19-x22]
- b G_M42189_IG150
+ b G_M42189_IG149
;; size=88 bbWeight=0.50 PerfScore 9.50
-G_M42189_IG27: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG26: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x22]
cmp w25, #151
- bhi G_M42189_IG30
+ bhi G_M42189_IG29
cmp w25, #110
- bhi G_M42189_IG28
+ bhi G_M42189_IG27
cmp w25, #70
- beq G_M42189_IG116
+ beq G_M42189_IG115
cmp w25, #110
- bne G_M42189_IG165
- tbz w26, #5, G_M42189_IG142
- b G_M42189_IG139
+ bne G_M42189_IG164
+ tbz w26, #5, G_M42189_IG141
+ b G_M42189_IG138
;; size=40 bbWeight=0.50 PerfScore 4.00
-G_M42189_IG28: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG27: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
sub w7, w25, #114
cmp w7, #3
- bhi G_M42189_IG29
+ bhi G_M42189_IG28
mov w0, w7
adr x1, [@RWD60]
ldr w1, [x1, x0, LSL #2]
@@ -958,25 +948,25 @@ G_M42189_IG28: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
add x1, x1, x2
br x1
;; size=36 bbWeight=0.50 PerfScore 4.00
-G_M42189_IG29: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG28: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19 x22]
cmp w25, #151
- beq G_M42189_IG128
- b G_M42189_IG165
+ beq G_M42189_IG127
+ b G_M42189_IG164
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M42189_IG30: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG29: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x22]
cmp w25, #159
- bhi G_M42189_IG31
+ bhi G_M42189_IG30
cmp w25, #157
- beq G_M42189_IG80
+ beq G_M42189_IG79
cmp w25, #159
- bne G_M42189_IG165
+ bne G_M42189_IG164
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x27, x0
- bne G_M42189_IG173
+ bne G_M42189_IG172
mov x2, x19
; gcrRegs +[x2]
ldr x1, [x2, #0x28]
@@ -996,17 +986,17 @@ G_M42189_IG30: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
ldr x7, [x7]
blr x7
; gcrRegs -[x0-x3 x6 x19-x22]
- b G_M42189_IG150
+ b G_M42189_IG149
;; size=100 bbWeight=0.50 PerfScore 11.50
-G_M42189_IG31: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M42189_IG30: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x22]
cmp w25, #173
- beq G_M42189_IG128
+ beq G_M42189_IG127
cmp w25, #177
- beq G_M42189_IG161
+ beq G_M42189_IG160
...
-32 (-0.24%) : 9370.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
@@ -60,7 +60,7 @@
; V49 tmp36 [V49,T154] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
; V50 tmp37 [V50,T155] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
; V51 tmp38 [V51,T156] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
-; V52 tmp39 [V52,T335] ( 3, 1.50) long -> x0 single-def "Inline stloc first use temp"
+; V52 tmp39 [V52,T335] ( 2, 1 ) long -> x0 single-def "Inline stloc first use temp"
;* V53 tmp40 [V53,T336] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V54 tmp41 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V55 tmp42 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
@@ -109,7 +109,7 @@
;* V98 tmp85 [V98 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V99 tmp86 [V99 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V100 tmp87 [V100 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V101 tmp88 [V101,T114] ( 3, 10 ) long -> x2 "Inline stloc first use temp"
+; V101 tmp88 [V101,T114] ( 2, 8 ) long -> x2 "Inline stloc first use temp"
;* V102 tmp89 [V102,T124] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V103 tmp90 [V103 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V104 tmp91 [V104 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
@@ -529,7 +529,7 @@ G_M11467_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x2, [x24, #0x10]
blr x2
; gcrRegs -[x0-x1 x19]
- b G_M11467_IG269
+ b G_M11467_IG267
;; size=40 bbWeight=0.50 PerfScore 8.00
G_M11467_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x21]
@@ -578,13 +578,13 @@ G_M11467_IG05: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byre
; gcrRegs -[x0-x1]
ldr w0, [x25, #0x08]
cmp w0, #0
- blt G_M11467_IG271
+ blt G_M11467_IG269
sxtw w26, w0
cmp w0, #0
ble G_M11467_IG44
ldr w0, [x25, #0x08]
cmp w0, #0
- bls G_M11467_IG270
+ bls G_M11467_IG268
ldrb w27, [x25, #0x10]
mov w0, #0xD1FFAB1E
cmp w27, w0
@@ -764,7 +764,7 @@ G_M11467_IG17: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byre
ldr x4, [x4]
; gcrRegs +[x4]
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x27, x4, #16
; byrRegs +[x27]
ldrh w4, [x27, w2, UXTW #2]
@@ -780,7 +780,7 @@ G_M11467_IG18: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byre
; gcrRegs +[x4]
add w5, w2, #1
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x27, x4, #16
; byrRegs +[x27]
add w4, w2, #1
@@ -797,7 +797,7 @@ G_M11467_IG19: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byre
; gcrRegs +[x4]
add w5, w2, #2
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x27, x4, #16
; byrRegs +[x27]
add w2, w2, #2
@@ -813,7 +813,7 @@ G_M11467_IG20: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byre
ldr x4, [x2]
; gcrRegs +[x4]
cmp w1, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x27, x4, #16
; byrRegs +[x27]
ldrh w2, [x27, w1, UXTW #2]
@@ -829,7 +829,7 @@ G_M11467_IG21: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byre
; gcrRegs +[x4]
add w2, w1, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x27, x4, #16
; byrRegs +[x27]
add w2, w1, #1
@@ -849,7 +849,7 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byre
add w4, w1, #2
; gcrRegs -[x4]
cmp w4, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x27, x2, #16
; byrRegs +[x27]
add w2, w1, #2
@@ -857,18 +857,18 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byre
ldrh w2, [x27, w2, UXTW #2]
strh w2, [x21, #0x1C]
cmp w0, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
ldrh w2, [x27, w0, UXTW #2]
strh w2, [x21, #0x1E]
add w2, w0, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add w2, w0, #1
ldrh w2, [x27, w2, UXTW #2]
strh w2, [x21, #0x20]
add w2, w0, #2
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add w2, w0, #2
ldrh w2, [x27, w2, UXTW #2]
strh w2, [x21, #0x22]
@@ -892,7 +892,7 @@ G_M11467_IG24: ; bbWeight=4, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRe
beq G_M11467_IG44
ldr w1, [x25, #0x08]
cmp w27, w1
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x1, x25, #16
; byrRegs +[x1]
ldrb w28, [x1, w27, UXTW #2]
@@ -1096,7 +1096,7 @@ G_M11467_IG37: ; bbWeight=2, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRe
ldr x4, [x4]
; gcrRegs +[x4]
cmp w1, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1112,7 +1112,7 @@ G_M11467_IG38: ; bbWeight=2, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRe
; gcrRegs +[x4]
add w5, w1, #1
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1129,7 +1129,7 @@ G_M11467_IG39: ; bbWeight=2, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRe
; gcrRegs +[x4]
add w5, w1, #2
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1146,7 +1146,7 @@ G_M11467_IG40: ; bbWeight=2, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRe
ldr x4, [x2]
; gcrRegs +[x4]
cmp w1, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1162,7 +1162,7 @@ G_M11467_IG41: ; bbWeight=2, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRe
; gcrRegs +[x4]
add w2, w1, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1182,7 +1182,7 @@ G_M11467_IG42: ; bbWeight=2, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRe
add w4, w1, #2
; gcrRegs -[x4]
cmp w4, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x4, x2, #16
; byrRegs +[x4]
add w2, w1, #2
@@ -1190,18 +1190,18 @@ G_M11467_IG42: ; bbWeight=2, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRe
ldrh w2, [x4, w2, UXTW #2]
strh w2, [x21, #0x1C]
cmp w0, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
ldrh w2, [x4, w0, UXTW #2]
strh w2, [x21, #0x1E]
add w2, w0, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add w2, w0, #1
ldrh w2, [x4, w2, UXTW #2]
strh w2, [x21, #0x20]
add w2, w0, #2
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add w2, w0, #2
ldrh w2, [x4, w2, UXTW #2]
strh w2, [x21, #0x22]
@@ -1252,7 +1252,7 @@ G_M11467_IG45: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
ldr x2, [x24, #0x10]
blr x2
; gcrRegs -[x0-x1 x25]
- b G_M11467_IG100
+ b G_M11467_IG98
;; size=56 bbWeight=0.50 PerfScore 10.75
G_M11467_IG46: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x25]
@@ -1265,34 +1265,28 @@ G_M11467_IG46: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byre
; gcrRegs -[x0-x1]
ldr w0, [x25, #0x08]
cmp w0, #0
- blt G_M11467_IG271
+ blt G_M11467_IG269
sxtw w27, w0
cmp w0, #0
- ble G_M11467_IG99
+ ble G_M11467_IG97
ldr w0, [x25, #0x08]
cmp w0, #0
- bls G_M11467_IG270
+ bls G_M11467_IG268
ldr x28, [x25, #0x10]
and x0, x28, #0xD1FFAB1E
- cbz x0, G_M11467_IG47
- mov x1, #0xD1FFAB1E
- cmp x0, x1
- beq G_M11467_IG48
- b G_M11467_IG48
- ;; size=80 bbWeight=0.50 PerfScore 13.00
-G_M11467_IG47: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRegs=0000 {}, byref
+ cbnz x0, G_M11467_IG47
and x0, x28, #0xD1FFAB1E
orr x28, x0, #0xD1FFAB1E
- ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M11467_IG48: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRegs=0000 {}, byref, isz
+ ;; size=72 bbWeight=0.50 PerfScore 12.00
+G_M11467_IG47: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRegs=0000 {}, byref, isz
and x0, x28, #0xD1FFAB1E
- cbz x0, G_M11467_IG49
+ cbz x0, G_M11467_IG48
mov x1, #0xD1FFAB1E
cmp x0, x1
- bne G_M11467_IG49
- b G_M11467_IG51
...
-8 (-0.20%) : 14889.dasm - System.IO.Strategies.BufferedFileStreamStrategy+d__37:MoveNext():this (FullOpts)
@@ -30,15 +30,15 @@
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V20 tmp1 [V20 ] ( 0, 0 ) int -> zero-ref "dup spill"
; V21 tmp2 [V21 ] ( 8, 16 ) struct (16) [fp+0x38] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
-; V22 tmp3 [V22,T36] ( 3, 6 ) ref -> x4 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V22 tmp3 [V22,T35] ( 3, 6 ) ref -> x4 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V23 tmp4 [V23 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask`1[int]>
-; V24 tmp5 [V24,T44] ( 3, 6 ) int -> x1 "impAppendStmt"
+; V24 tmp5 [V24,T43] ( 3, 6 ) int -> x1 "impAppendStmt"
;* V25 tmp6 [V25 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V26 tmp7 [V26 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V27 tmp8 [V27 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask`1[int]>
;* V28 tmp9 [V28 ] ( 0, 0 ) int -> zero-ref "dup spill"
; V29 tmp10 [V29 ] ( 5, 10 ) struct (16) [fp+0x28] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
-; V30 tmp11 [V30,T37] ( 3, 6 ) ref -> x5 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V30 tmp11 [V30,T36] ( 3, 6 ) ref -> x5 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V31 tmp12 [V31 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask>
;* V32 tmp13 [V32 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V33 tmp14 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
@@ -48,7 +48,7 @@
; V37 tmp18 [V37,T128] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V38 tmp19 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp20 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V40 tmp21 [V40,T38] ( 3, 6 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V40 tmp21 [V40,T37] ( 3, 6 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V41 tmp22 [V41 ] ( 0, 0 ) ref -> zero-ref
; V42 tmp23 [V42,T96] ( 2, 2 ) ref -> x14 single-def
;* V43 tmp24 [V43,T117] ( 0, 0 ) int -> zero-ref
@@ -66,14 +66,14 @@
;* V55 tmp36 [V55 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V56 tmp37 [V56 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V57 tmp38 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
-; V58 tmp39 [V58,T39] ( 3, 6 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V58 tmp39 [V58,T38] ( 3, 6 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
; V59 tmp40 [V59,T68] ( 2, 4 ) int -> x2 "Inlining Arg"
;* V60 tmp41 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V61 tmp42 [V61,T04] ( 12, 12 ) int -> x20 "Inline return value spill temp"
-; V62 tmp43 [V62,T45] ( 3, 6 ) int -> x3 "Inlining Arg"
-; V63 tmp44 [V63,T46] ( 3, 6 ) int -> x1 "Inlining Arg"
+; V62 tmp43 [V62,T44] ( 3, 6 ) int -> x3 "Inlining Arg"
+; V63 tmp44 [V63,T45] ( 3, 6 ) int -> x1 "Inlining Arg"
; V64 tmp45 [V64,T11] ( 4, 8 ) ref -> x1 class-hnd single-def "Inlining Arg" <ubyte[]>
-; V65 tmp46 [V65,T33] ( 4, 6 ) int -> x2 "Inlining Arg"
+; V65 tmp46 [V65,T46] ( 3, 6 ) int -> x2 "Inlining Arg"
;* V66 tmp47 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V67 tmp48 [V67 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
; V68 tmp49 [V68,T27] ( 6, 6 ) byref -> x24 "Inline stloc first use temp"
@@ -196,8 +196,8 @@
; V185 tmp166 [V185,T75] ( 2, 4 ) long -> x2 "Inlining Arg"
; V186 tmp167 [V186,T05] ( 6, 12 ) ref -> x0 class-hnd "Inlining Arg" <System.Threading.SemaphoreSlim>
; V187 tmp168 [V187,T08] ( 5, 10 ) byref -> x19 single-def "Inlining Arg"
-; V188 tmp169 [V188,T40] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox[int]>
-; V189 tmp170 [V189,T41] ( 3, 6 ) byref -> x0 single-def "Inlining Arg"
+; V188 tmp169 [V188,T39] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox[int]>
+; V189 tmp170 [V189,T40] ( 3, 6 ) byref -> x0 single-def "Inlining Arg"
; V190 tmp171 [V190 ] ( 6, 6 ) ref -> [fp+0x98] do-not-enreg[X] addr-exposed "field V04.m_task (fldOffset=0x0)" P-DEP
; V191 tmp172 [V191 ] ( 6, 6 ) int -> [fp+0xA0] do-not-enreg[X] addr-exposed "field V04.m_options (fldOffset=0x8)" P-DEP
;* V192 tmp173 [V192 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
@@ -210,8 +210,8 @@
; V199 tmp180 [V199,T59] ( 4, 4 ) short -> [fp+0x64] do-not-enreg[] "field V14._token (fldOffset=0xc)" P-DEP
; V200 tmp181 [V200,T107] ( 2, 2 ) ubyte -> [fp+0x66] do-not-enreg[] "field V14._continueOnCapturedContext (fldOffset=0xe)" P-DEP
; V201 tmp182 [V201,T32] ( 4, 6 ) ref -> [fp+0x38] do-not-enreg[] "field V21._object (fldOffset=0x0)" P-DEP
-; V202 tmp183 [V202,T34] ( 4, 6 ) int -> [fp+0x40] do-not-enreg[] "field V21._index (fldOffset=0x8)" P-DEP
-; V203 tmp184 [V203,T35] ( 4, 6 ) int -> [fp+0x44] do-not-enreg[] "field V21._length (fldOffset=0xc)" P-DEP
+; V202 tmp183 [V202,T33] ( 4, 6 ) int -> [fp+0x40] do-not-enreg[] "field V21._index (fldOffset=0x8)" P-DEP
+; V203 tmp184 [V203,T34] ( 4, 6 ) int -> [fp+0x44] do-not-enreg[] "field V21._length (fldOffset=0xc)" P-DEP
;* V204 tmp185 [V204 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
;* V205 tmp186 [V205 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
; V206 tmp187 [V206,T51] ( 3, 5 ) ref -> [fp+0x28] do-not-enreg[] "field V29._object (fldOffset=0x0)" P-DEP
@@ -269,10 +269,10 @@
;* V258 tmp239 [V258 ] ( 0, 0 ) int -> zero-ref "field V181._length (fldOffset=0x8)" P-INDEP
;* V259 tmp240 [V259 ] ( 0, 0 ) byref -> zero-ref single-def "field V182._reference (fldOffset=0x0)" P-INDEP
;* V260 tmp241 [V260 ] ( 0, 0 ) int -> zero-ref "field V182._length (fldOffset=0x8)" P-INDEP
-; V261 tmp242 [V261,T42] ( 3, 6 ) ref -> x1 single-def "argument with side effect"
+; V261 tmp242 [V261,T41] ( 3, 6 ) ref -> x1 single-def "argument with side effect"
; V262 tmp243 [V262,T64] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V263 tmp244 [V263,T65] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V264 tmp245 [V264,T43] ( 3, 6 ) ref -> x4 single-def "argument with side effect"
+; V264 tmp245 [V264,T42] ( 3, 6 ) ref -> x4 single-def "argument with side effect"
; V265 tmp246 [V265,T66] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V266 tmp247 [V266,T67] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V267 PSPSym [V267,T127] ( 1, 1 ) long -> [fp+0xB0] do-not-enreg[V] "PSPSym"
@@ -421,7 +421,7 @@ G_M33324_IG06: ; bbWeight=1, gcVars=0000000000000000000000000000000000000
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M33324_IG92
+ b G_M33324_IG91
;; size=80 bbWeight=1 PerfScore 21.00
G_M33324_IG07: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000003 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, nogc
; gcrRegs +[x19]
@@ -491,7 +491,7 @@ G_M33324_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ble G_M33324_IG15
ldr x1, [x19, #0x20]
; gcrRegs +[x1]
- cbz x1, G_M33324_IG75
+ cbz x1, G_M33324_IG74
mov w3, w2
add x3, x3, w20, UXTW
ldr w4, [x1, #0x08]
@@ -596,7 +596,7 @@ G_M33324_IG14: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=1200000 {x2
blr x1
; gcr arg pop 0
cmp w22, w25
- bhi G_M33324_IG76
+ bhi G_M33324_IG75
mov w2, w22
mov x0, x24
; byrRegs +[x0]
@@ -620,7 +620,7 @@ G_M33324_IG15: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0},
cmp w20, w1
bne G_M33324_IG16
str w20, [fp, #0xA8] // [V03 loc2]
- b G_M33324_IG80
+ b G_M33324_IG79
;; size=20 bbWeight=1 PerfScore 6.50
G_M33324_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
cmp w20, #0
@@ -629,7 +629,7 @@ G_M33324_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0},
; byrRegs +[x1]
ldr w2, [x1, #0x0C]
cmp w20, w2
- bhi G_M33324_IG77
+ bhi G_M33324_IG76
ldr x21, [x1]
; gcrRegs +[x21]
ldr w1, [x1, #0x08]
@@ -949,7 +949,7 @@ G_M33324_IG28: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
ldr w0, [x21, #0x14]
add w0, w20, w0
str w0, [fp, #0xA8] // [V03 loc2]
- b G_M33324_IG86
+ b G_M33324_IG85
;; size=16 bbWeight=1 PerfScore 5.50
G_M33324_IG29: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x21]
@@ -1032,7 +1032,7 @@ G_M33324_IG33: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M33324_IG82
+ b G_M33324_IG81
;; size=96 bbWeight=1 PerfScore 24.50
G_M33324_IG34: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, nogc
; byrRegs -[x21]
@@ -1140,7 +1140,7 @@ G_M33324_IG41: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M33324_IG84
+ b G_M33324_IG83
;; size=92 bbWeight=1 PerfScore 22.50
G_M33324_IG42: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x21]
@@ -1411,7 +1411,7 @@ G_M33324_IG57: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M33324_IG88
+ b G_M33324_IG87
;; size=96 bbWeight=1 PerfScore 24.50
G_M33324_IG58: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x21]
@@ -1666,7 +1666,7 @@ G_M33324_IG73: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=2600000 {x2
blr x1
; gcr arg pop 0
cmp w23, w26
- bhi G_M33324_IG76
+ bhi G_M33324_IG75
mov w2, w23
mov x0, x25
; byrRegs +[x0]
@@ -1679,7 +1679,7 @@ G_M33324_IG73: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=2600000 {x2
blr x3
; byrRegs -[x0-x1 x22 x25]
; gcr arg pop 0
- b G_M33324_IG78
+ b G_M33324_IG77
;; size=72 bbWeight=1 PerfScore 16.00
G_M33324_IG74: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x21]
@@ -1691,13 +1691,7 @@ G_M33324_IG74: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M33324_IG75: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
- ; byrRegs +[x0]
- cbnz w2, G_M33324_IG74
- b G_M33324_IG74
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M33324_IG76: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; byrRegs -[x0]
+G_M33324_IG75: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -1706,7 +1700,7 @@ G_M33324_IG76: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M33324_IG77: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M33324_IG76: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov w0, #33
movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
movk x1, #0xD1FFAB1E LSL #16
@@ -1716,7 +1710,7 @@ G_M33324_IG77: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
brk_windows #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M33324_IG78: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
+G_M33324_IG77: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
; byrRegs +[x21]
ldr w0, [x19, #0x30]
add w0, w0, w20
@@ -1725,9 +1719,9 @@ G_M33324_IG78: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
add w0, w0, w20
str w0, [fp, #0xA8] // [V03 loc2]
;; size=24 bbWeight=1 PerfScore 9.00
-G_M33324_IG79: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+G_M33324_IG78: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
ldr w0, [fp, #0xAC] // [V01 loc0]
- tbz w0, #31, G_M33324_IG90
+ tbz w0, #31, G_M33324_IG89
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldrsb wzr, [x0]
@@ -1740,51 +1734,51 @@ G_M33324_IG79: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
blr x2
; gcrRegs -[x0 x19]
; gcr arg pop 0
- b G_M33324_IG90
+ b G_M33324_IG89
;; size=44 bbWeight=1 PerfScore 16.00
-G_M33324_IG80: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000003 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, gcvars, byref
+G_M33324_IG79: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000003 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs +[x19]
; byrRegs -[x21] +[x0]
; GC ptr vars +{V01 V02}
ldr x0, [fp, #0xB0] // [V267 PSPSym]
; byrRegs -[x0]
- bl G_M33324_IG93
+ bl G_M33324_IG92
;; size=8 bbWeight=1 PerfScore 3.00
-G_M33324_IG81: ; bbWeight=1, nogc, extend
- b G_M33324_IG90
+G_M33324_IG80: ; bbWeight=1, nogc, extend
+ b G_M33324_IG89
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG82: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
+G_M33324_IG81: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
...
benchmarks.run_pgo.windows.arm64.checked.mch
-24 (-14.63%) : 39877.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 6.86) ref -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V00 this [V00,T00] ( 7, 6.14) ref -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
; V01 arg1 [V01,T01] ( 4, 3 ) byref -> x1 single-def
; V02 loc0 [V02,T02] ( 6, 4.86) int -> x2
; V03 loc1 [V03,T04] ( 4, 3.43) ref -> x3 class-hnd single-def <<unknown class>>
@@ -17,9 +17,9 @@
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V07 cse0 [V07,T06] ( 3, 2.71) int -> x4 "CSE - aggressive"
-; V08 rat0 [V08,T05] ( 2, 2.86) long -> x0 "Spilling to split statement for tree"
+;* V08 rat0 [V08,T05] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V10 rat2 [V10,T03] ( 2, 2.86) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V10 rat2 [V10,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -27,10 +27,9 @@ G_M49890_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
ldr w0, [x19, #0x10]
@@ -39,9 +38,9 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1},
; gcrRegs +[x3]
ldr w4, [x3, #0x08]
cmp w4, w2
- bls G_M49890_IG05
+ bls G_M49890_IG04
;; size=24 bbWeight=1 PerfScore 11.00
-G_M49890_IG03: ; bbWeight=0.71, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, byref, isz
+G_M49890_IG03: ; bbWeight=0.71, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, byref
ldr w14, [x19, #0x14]
add w14, w14, #1
stp w2, w14, [x19, #0x10]
@@ -53,51 +52,44 @@ G_M49890_IG03: ; bbWeight=0.71, gcrefRegs=80008 {x3 x19}, byrefRegs=0002
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x1 x14]
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x18]
- cbnz x0, G_M49890_IG07
- ;; size=48 bbWeight=0.71 PerfScore 16.07
-G_M49890_IG04: ; bbWeight=0.14, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, byref
- b G_M49890_IG07
- ;; size=4 bbWeight=0.14 PerfScore 0.14
-G_M49890_IG05: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
+ b G_M49890_IG06
+ ;; size=32 bbWeight=0.71 PerfScore 7.50
+G_M49890_IG04: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
; gcrRegs -[x3]
; byrRegs +[x1]
str xzr, [x1]
mov w0, wzr
;; size=8 bbWeight=0.29 PerfScore 0.43
-G_M49890_IG06: ; bbWeight=0.29, epilog, nogc, extend
+G_M49890_IG05: ; bbWeight=0.29, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.29 PerfScore 1.14
-G_M49890_IG07: ; bbWeight=0.71, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M49890_IG06: ; bbWeight=0.71, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x3]
; byrRegs -[x1]
sxtw x0, w2
mov w1, w4
cmp x0, x1
- bhs G_M49890_IG09
+ bhs G_M49890_IG08
add x0, x3, #16
; byrRegs +[x0]
str xzr, [x0, w2, SXTW #3]
mov w0, #1
; byrRegs -[x0]
;; size=28 bbWeight=0.71 PerfScore 3.21
-G_M49890_IG08: ; bbWeight=0.71, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.71, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.71 PerfScore 2.86
-G_M49890_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M49890_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x3]
bl CORINFO_HELP_RNGCHKFAIL
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 164, prolog size 16, PerfScore 38.86, instruction count 41, allocated bytes for code 164 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 140, prolog size 12, PerfScore 29.14, instruction count 35, allocated bytes for code 140 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -108,7 +100,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-14.63%) : 38130.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 7.69) ref -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V00 this [V00,T00] ( 7, 6.77) ref -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
; V01 arg1 [V01,T03] ( 4, 3 ) byref -> x1 single-def
; V02 loc0 [V02,T01] ( 6, 5.69) int -> x2
; V03 loc1 [V03,T05] ( 4, 3.84) ref -> x3 class-hnd single-def <<unknown class>>
@@ -17,9 +17,9 @@
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V07 cse0 [V07,T06] ( 3, 2.92) int -> x4 "CSE - aggressive"
-; V08 rat0 [V08,T04] ( 2, 3.69) long -> x0 "Spilling to split statement for tree"
+;* V08 rat0 [V08,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V10 rat2 [V10,T02] ( 2, 3.69) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V10 rat2 [V10,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -27,10 +27,9 @@ G_M49890_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
ldr w0, [x19, #0x10]
@@ -39,9 +38,9 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1},
; gcrRegs +[x3]
ldr w4, [x3, #0x08]
cmp w4, w2
- bls G_M49890_IG05
+ bls G_M49890_IG04
;; size=24 bbWeight=1 PerfScore 11.00
-G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, byref, isz
+G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, byref
ldr w14, [x19, #0x14]
add w14, w14, #1
stp w2, w14, [x19, #0x10]
@@ -53,51 +52,44 @@ G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=80008 {x3 x19}, byrefRegs=0002
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x1 x14]
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x18]
- cbnz x0, G_M49890_IG07
- ;; size=48 bbWeight=0.92 PerfScore 20.74
-G_M49890_IG04: ; bbWeight=0.18, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, byref
- b G_M49890_IG07
- ;; size=4 bbWeight=0.18 PerfScore 0.18
-G_M49890_IG05: ; bbWeight=0.08, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
+ b G_M49890_IG06
+ ;; size=32 bbWeight=0.92 PerfScore 9.68
+G_M49890_IG04: ; bbWeight=0.08, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
; gcrRegs -[x3]
; byrRegs +[x1]
str xzr, [x1]
mov w0, wzr
;; size=8 bbWeight=0.08 PerfScore 0.12
-G_M49890_IG06: ; bbWeight=0.08, epilog, nogc, extend
+G_M49890_IG05: ; bbWeight=0.08, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.08 PerfScore 0.31
-G_M49890_IG07: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M49890_IG06: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x3]
; byrRegs -[x1]
sxtw x0, w2
mov w1, w4
cmp x0, x1
- bhs G_M49890_IG09
+ bhs G_M49890_IG08
add x0, x3, #16
; byrRegs +[x0]
str xzr, [x0, w2, SXTW #3]
mov w0, #1
; byrRegs -[x0]
;; size=28 bbWeight=0.92 PerfScore 4.15
-G_M49890_IG08: ; bbWeight=0.92, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.92, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.92 PerfScore 3.69
-G_M49890_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M49890_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x3]
bl CORINFO_HELP_RNGCHKFAIL
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 164, prolog size 16, PerfScore 44.19, instruction count 41, allocated bytes for code 164 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 140, prolog size 12, PerfScore 31.94, instruction count 35, allocated bytes for code 140 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -108,7 +100,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-14.63%) : 41684.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 7.68) ref -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V00 this [V00,T00] ( 7, 6.76) ref -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
; V01 arg1 [V01,T03] ( 4, 3 ) byref -> x1 single-def
; V02 loc0 [V02,T01] ( 6, 5.68) int -> x2
; V03 loc1 [V03,T05] ( 4, 3.84) ref -> x3 class-hnd single-def <<unknown class>>
@@ -17,9 +17,9 @@
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V07 cse0 [V07,T06] ( 3, 2.92) int -> x4 "CSE - aggressive"
-; V08 rat0 [V08,T04] ( 2, 3.68) long -> x0 "Spilling to split statement for tree"
+;* V08 rat0 [V08,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V10 rat2 [V10,T02] ( 2, 3.68) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V10 rat2 [V10,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -27,10 +27,9 @@ G_M49890_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
ldr w0, [x19, #0x10]
@@ -39,9 +38,9 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1},
; gcrRegs +[x3]
ldr w4, [x3, #0x08]
cmp w4, w2
- bls G_M49890_IG05
+ bls G_M49890_IG04
;; size=24 bbWeight=1 PerfScore 11.00
-G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, byref, isz
+G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, byref
ldr w14, [x19, #0x14]
add w14, w14, #1
stp w2, w14, [x19, #0x10]
@@ -53,51 +52,44 @@ G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=80008 {x3 x19}, byrefRegs=0002
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x1 x14]
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x18]
- cbnz x0, G_M49890_IG07
- ;; size=48 bbWeight=0.92 PerfScore 20.72
-G_M49890_IG04: ; bbWeight=0.18, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, byref
- b G_M49890_IG07
- ;; size=4 bbWeight=0.18 PerfScore 0.18
-G_M49890_IG05: ; bbWeight=0.08, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
+ b G_M49890_IG06
+ ;; size=32 bbWeight=0.92 PerfScore 9.67
+G_M49890_IG04: ; bbWeight=0.08, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
; gcrRegs -[x3]
; byrRegs +[x1]
str xzr, [x1]
mov w0, wzr
;; size=8 bbWeight=0.08 PerfScore 0.12
-G_M49890_IG06: ; bbWeight=0.08, epilog, nogc, extend
+G_M49890_IG05: ; bbWeight=0.08, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.08 PerfScore 0.32
-G_M49890_IG07: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M49890_IG06: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x3]
; byrRegs -[x1]
sxtw x0, w2
mov w1, w4
cmp x0, x1
- bhs G_M49890_IG09
+ bhs G_M49890_IG08
add x0, x3, #16
; byrRegs +[x0]
str xzr, [x0, w2, SXTW #3]
mov w0, #1
; byrRegs -[x0]
;; size=28 bbWeight=0.92 PerfScore 4.14
-G_M49890_IG08: ; bbWeight=0.92, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.92, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.92 PerfScore 3.68
-G_M49890_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M49890_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x3]
bl CORINFO_HELP_RNGCHKFAIL
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 164, prolog size 16, PerfScore 44.17, instruction count 41, allocated bytes for code 164 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 140, prolog size 12, PerfScore 31.93, instruction count 35, allocated bytes for code 140 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -108,7 +100,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+0.44%) : 70701.dasm - LinqBenchmarks:Where00LinqQueryX():ubyte:this (Tier1-OSR)
@@ -12,55 +12,56 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <LinqBenchmarks>
; V01 loc0 [V01,T19] ( 5, 66.69) ref -> x20 class-hnd <System.Collections.Generic.List`1[Product]>
-; V02 loc1 [V02,T14] ( 5, 166.65) int -> x19
+; V02 loc1 [V02,T15] ( 5, 166.65) int -> x19
; V03 loc2 [V03,T24] ( 3, 50.02) int -> x21
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Generic.IEnumerable`1[Product]>
-; V05 loc4 [V05,T11] ( 32, 395.48) ref -> [fp+0x100] do-not-enreg[Z] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[Product]>
+; V05 loc4 [V05,T12] ( 32, 401.90) ref -> [fp+0x100] do-not-enreg[Z] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[Product]>
;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <Product>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T20] ( 2, 66.69) ref -> x23 class-hnd "dup spill" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref
-; V10 tmp3 [V10,T18] ( 8, 66.71) ref -> x23
+; V10 tmp3 [V10,T17] ( 8, 66.71) ref -> x23
; V11 tmp4 [V11,T33] ( 5, 0.11) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V12 tmp5 [V12,T29] ( 3, 33.35) ref -> x25 "guarded devirt return temp"
+; V12 tmp5 [V12,T29] ( 3, 33.35) ref -> x26 "guarded devirt return temp"
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-; V16 tmp9 [V16,T10] ( 5, 200.00) int -> x2 "guarded devirt return temp"
-; V17 tmp10 [V17,T02] ( 14, 7810.33) ref -> x22 class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
+; V16 tmp9 [V16,T10] ( 5, 200.00) int -> x3 "guarded devirt return temp"
+; V17 tmp10 [V17,T04] ( 14, 6533.96) ref -> x22 class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-;* V19 tmp12 [V19,T15] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V19 tmp12 [V19 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
; V20 tmp13 [V20,T34] ( 2, 0.04) ref -> x15 class-hnd exact "Inlining Arg" <LinqBenchmarks+<>c>
-; V21 tmp14 [V21,T16] ( 11, 83.37) ref -> x25 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Product]>
+; V21 tmp14 [V21,T16] ( 11, 83.37) ref -> x26 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Product]>
; V22 tmp15 [V22,T27] ( 4, 33.35) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V23 tmp16 [V23,T28] ( 4, 33.35) ref -> x24 class-hnd "Inline stloc first use temp" <<unknown class>>
; V24 tmp17 [V24,T23] ( 3, 50.02) ref -> x22 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
-; V25 tmp18 [V25,T35] ( 5, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V26 tmp19 [V26,T13] ( 5, 166.74) ref -> x25 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-; V27 tmp20 [V27,T36] ( 5, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V28 tmp21 [V28,T22] ( 4, 50.02) ref -> x25
+; V25 tmp18 [V25,T35] ( 5, 0 ) ref -> x26 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T14] ( 5, 166.74) ref -> x26 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
+; V27 tmp20 [V27,T36] ( 5, 0 ) ref -> x26 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V28 tmp21 [V28,T22] ( 4, 50.02) ref -> x26
;* V29 tmp22 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V30 tmp23 [V30 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V31 tmp24 [V31,T12] ( 6, 283.32) int -> x23 "Inline stloc first use temp"
+; V31 tmp24 [V31,T13] ( 6, 283.32) int -> x23 "Inline stloc first use temp"
; V32 tmp25 [V32,T06] ( 8, 5106.84) ref -> x28 class-hnd "Inline stloc first use temp" <Product>
; V33 tmp26 [V33,T09] ( 4, 2553.35) int -> x0 "guarded devirt return temp"
-; V34 tmp27 [V34,T01] ( 8,10213.97) ref -> x3 "guarded devirt arg temp"
+; V34 tmp27 [V34,T01] ( 8,10213.97) ref -> x4 "guarded devirt arg temp"
;* V35 tmp28 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <LinqBenchmarks+<>c>
-; V36 tmp29 [V36,T17] ( 4, 67.88) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+; V36 tmp29 [V36,T18] ( 4, 66.70) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
;* V37 tmp30 [V37 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Product]>
;* V38 tmp31 [V38 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V39 tmp32 [V39,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V40 tmp33 [V40,T00] ( 24,25833.73) byref -> x25 "Inlining Arg"
+; V40 tmp33 [V40,T00] ( 24,25833.73) byref -> x2 "Inlining Arg"
; V41 tmp34 [V41,T05] ( 8, 5156.83) ref -> x26 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
-; V42 tmp35 [V42,T21] ( 6, 50.91) ref -> x15 "field V37._list (fldOffset=0x0)" P-INDEP
+; V42 tmp35 [V42,T21] ( 6, 50.03) ref -> x15 "field V37._list (fldOffset=0x0)" P-INDEP
;* V43 tmp36 [V43,T30] ( 0, 0 ) ref -> zero-ref "field V37._current (fldOffset=0x8)" P-INDEP
;* V44 tmp37 [V44,T31] ( 0, 0 ) int -> zero-ref "field V37._index (fldOffset=0x10)" P-INDEP
-; V45 tmp38 [V45,T26] ( 4, 33.94) int -> x24 "field V37._version (fldOffset=0x14)" P-INDEP
-; V46 tmp39 [V46,T03] ( 6, 7660.91) ref -> x27 "arr expr"
-; V47 tmp40 [V47,T04] ( 6, 7660.91) int -> x2 "index expr"
+; V45 tmp38 [V45,T26] ( 4, 33.35) int -> x24 "field V37._version (fldOffset=0x14)" P-INDEP
+; V46 tmp39 [V46,T02] ( 6, 7660.91) ref -> x27 "arr expr"
+; V47 tmp40 [V47,T03] ( 6, 7660.91) int -> x3 "index expr"
; V48 PSPSym [V48,T32] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V49 cse0 [V49,T07] ( 3, 3824.86) int -> x2 "CSE - aggressive"
-; V50 cse1 [V50,T25] ( 3, 38.63) int -> x2 "CSE - moderate"
+; V49 cse0 [V49,T07] ( 3, 3824.86) int -> x3 "CSE - aggressive"
+; V50 cse1 [V50,T25] ( 3, 38.63) int -> x3 "CSE - moderate"
+; V51 cse2 [V51,T11] ( 4, 1310.31) byref -> x25 hoist multi-def "CSE - aggressive"
;
; Lcl frame size = 16
@@ -79,12 +80,12 @@ G_M15171_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr w19, [fp, #0xD1FFAB1E]
ldr w21, [fp, #0xD1FFAB1E]
;; size=48 bbWeight=1 PerfScore 14.00
-G_M15171_IG02: ; bbWeight=1, gcVars=0000000000000800 {V05}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars +{V05 V11}
+G_M15171_IG02: ; bbWeight=1, gcVars=0000000000001000 {V05}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars +{V05 V12}
b G_M15171_IG10
;; size=4 bbWeight=1 PerfScore 1.00
G_M15171_IG03: ; bbWeight=16.67, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V05 V11}
+ ; GC ptr vars -{V05 V12}
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -93,8 +94,8 @@ G_M15171_IG03: ; bbWeight=16.67, gcVars=0000000000000000 {}, gcrefRegs=10
cbz x23, G_M15171_IG08
;; size=20 bbWeight=16.67 PerfScore 91.71
G_M15171_IG04: ; bbWeight=16.67, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M15171_IG47
- cbz x23, G_M15171_IG48
+ cbz x20, G_M15171_IG48
+ cbz x23, G_M15171_IG49
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -103,7 +104,7 @@ G_M15171_IG04: ; bbWeight=16.67, gcrefRegs=900000 {x20 x23}, byrefRegs=00
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbnz x0, G_M15171_IG49
+ cbnz x0, G_M15171_IG50
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -115,7 +116,7 @@ G_M15171_IG04: ; bbWeight=16.67, gcrefRegs=900000 {x20 x23}, byrefRegs=00
; gcr arg pop 0
mov x24, x0
; gcrRegs +[x24]
- cbnz x24, G_M15171_IG50
+ cbnz x24, G_M15171_IG51
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -127,7 +128,7 @@ G_M15171_IG04: ; bbWeight=16.67, gcrefRegs=900000 {x20 x23}, byrefRegs=00
; gcr arg pop 0
mov x22, x0
; gcrRegs +[x22]
- cbz x22, G_M15171_IG52
+ cbz x22, G_M15171_IG53
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -135,20 +136,20 @@ G_M15171_IG04: ; bbWeight=16.67, gcrefRegs=900000 {x20 x23}, byrefRegs=00
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
- mov x25, x0
- ; gcrRegs +[x25]
+ mov x26, x0
+ ; gcrRegs +[x26]
bl <unknown method>
; gcrRegs -[x0]
; gcr arg pop 0
- str w0, [x25, #0x10]
- add x14, x25, #24
+ str w0, [x26, #0x10]
+ add x14, x26, #24
; byrRegs +[x14]
mov x15, x22
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x22]
; byrRegs -[x14]
- add x14, x25, #32
+ add x14, x26, #32
; byrRegs +[x14]
mov x15, x23
; gcrRegs +[x15]
@@ -156,32 +157,32 @@ G_M15171_IG04: ; bbWeight=16.67, gcrefRegs=900000 {x20 x23}, byrefRegs=00
; gcrRegs -[x15 x23]
; byrRegs -[x14]
;; size=140 bbWeight=16.67 PerfScore 400.17
-G_M15171_IG05: ; bbWeight=16.67, gcrefRegs=2100000 {x20 x25}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x25]
+G_M15171_IG05: ; bbWeight=16.67, gcrefRegs=4100000 {x20 x26}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x26]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M15171_IG54
- ldr w0, [x25, #0x14]
- cbnz w0, G_M15171_IG53
- ldr w23, [x25, #0x10]
+ bne G_M15171_IG55
+ ldr w0, [x26, #0x14]
+ cbnz w0, G_M15171_IG54
+ ldr w25, [x26, #0x10]
bl <unknown method>
; gcr arg pop 0
- cmp w23, w0
- bne G_M15171_IG53
+ cmp w25, w0
+ bne G_M15171_IG54
;; size=48 bbWeight=16.67 PerfScore 258.44
-G_M15171_IG06: ; bbWeight=16.67, gcrefRegs=2100000 {x20 x25}, byrefRegs=0000 {}, byref
+G_M15171_IG06: ; bbWeight=16.67, gcrefRegs=4100000 {x20 x26}, byrefRegs=0000 {}, byref
mov w0, #1
- str w0, [x25, #0x14]
+ str w0, [x26, #0x14]
;; size=8 bbWeight=16.67 PerfScore 25.01
-G_M15171_IG07: ; bbWeight=16.67, gcrefRegs=2100000 {x20 x25}, byrefRegs=0000 {}, byref
- str x25, [fp, #0xD1FFAB1E] // [V05 loc4]
+G_M15171_IG07: ; bbWeight=16.67, gcrefRegs=4100000 {x20 x26}, byrefRegs=0000 {}, byref
+ str x26, [fp, #0xD1FFAB1E] // [V05 loc4]
; GC ptr vars +{V05}
b G_M15171_IG10
;; size=8 bbWeight=16.67 PerfScore 33.35
G_M15171_IG08: ; bbWeight=0.01, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x25]
+ ; gcrRegs -[x26]
; GC ptr vars -{V05}
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -220,19 +221,15 @@ G_M15171_IG09: ; bbWeight=16.67, gcrefRegs=100000 {x20}, byrefRegs=0000 {
movz w14, #0xD1FFAB1E
movk w14, #15 LSL #16
cmp w21, w14
- bge G_M15171_IG45
+ bge G_M15171_IG46
b G_M15171_IG03
;; size=24 bbWeight=16.67 PerfScore 66.69
-G_M15171_IG10: ; bbWeight=16.67, gcVars=0000000000000800 {V05}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars +{V05 V11}
+G_M15171_IG10: ; bbWeight=16.67, gcVars=0000000000001000 {V05}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V05 V12}
ldr x14, [fp, #0xD1FFAB1E] // [V05 loc4]
; gcrRegs +[x14]
cbz x14, G_M15171_IG27
- ;; size=8 bbWeight=16.67 PerfScore 50.02
-G_M15171_IG11: ; bbWeight=8.49, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x14]
ldr x14, [fp, #0xD1FFAB1E] // [V05 loc4]
- ; gcrRegs +[x14]
ldr x14, [x14]
; gcrRegs -[x14]
movz x15, #0xD1FFAB1E
@@ -240,12 +237,12 @@ G_M15171_IG11: ; bbWeight=8.49, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
movk x15, #0xD1FFAB1E LSL #32
cmp x14, x15
bne G_M15171_IG27
- b G_M15171_IG13
- ;; size=32 bbWeight=8.49 PerfScore 76.37
-G_M15171_IG12: ; bbWeight=82.49, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ b G_M15171_IG12
+ ;; size=40 bbWeight=16.67 PerfScore 200.08
+G_M15171_IG11: ; bbWeight=82.49, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
add w19, w19, #1
;; size=4 bbWeight=82.49 PerfScore 41.25
-G_M15171_IG13: ; bbWeight=99.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M15171_IG12: ; bbWeight=99.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldr x22, [fp, #0xD1FFAB1E] // [V05 loc4]
; gcrRegs +[x22]
mov x14, x22
@@ -254,60 +251,65 @@ G_M15171_IG13: ; bbWeight=99.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {
cmp w23, #1
beq G_M15171_IG23
;; size=20 bbWeight=99.00 PerfScore 693.00
-G_M15171_IG14: ; bbWeight=82.49, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
...
+8 (+0.44%) : 73328.dasm - LinqBenchmarks:Where00LinqMethodX():ubyte:this (Tier1-OSR)
@@ -12,55 +12,56 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <LinqBenchmarks>
; V01 loc0 [V01,T19] ( 5, 66.69) ref -> x20 class-hnd <System.Collections.Generic.List`1[Product]>
-; V02 loc1 [V02,T14] ( 5, 166.65) int -> x19
+; V02 loc1 [V02,T15] ( 5, 166.65) int -> x19
; V03 loc2 [V03,T24] ( 3, 50.02) int -> x21
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Generic.IEnumerable`1[Product]>
-; V05 loc4 [V05,T11] ( 32, 395.48) ref -> [fp+0x100] do-not-enreg[Z] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[Product]>
+; V05 loc4 [V05,T12] ( 32, 401.90) ref -> [fp+0x100] do-not-enreg[Z] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[Product]>
;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <Product>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T20] ( 2, 66.69) ref -> x23 class-hnd "dup spill" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref
-; V10 tmp3 [V10,T18] ( 8, 66.71) ref -> x23
+; V10 tmp3 [V10,T17] ( 8, 66.71) ref -> x23
; V11 tmp4 [V11,T33] ( 5, 0.11) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V12 tmp5 [V12,T29] ( 3, 33.35) ref -> x25 "guarded devirt return temp"
+; V12 tmp5 [V12,T29] ( 3, 33.35) ref -> x26 "guarded devirt return temp"
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-; V16 tmp9 [V16,T10] ( 5, 200.00) int -> x2 "guarded devirt return temp"
-; V17 tmp10 [V17,T02] ( 14, 7797.08) ref -> x22 class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
+; V16 tmp9 [V16,T10] ( 5, 200.00) int -> x3 "guarded devirt return temp"
+; V17 tmp10 [V17,T04] ( 14, 6522.91) ref -> x22 class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-;* V19 tmp12 [V19,T15] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V19 tmp12 [V19 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
; V20 tmp13 [V20,T34] ( 2, 0.04) ref -> x15 class-hnd exact "Inlining Arg" <LinqBenchmarks+<>c>
-; V21 tmp14 [V21,T16] ( 11, 83.37) ref -> x25 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Product]>
+; V21 tmp14 [V21,T16] ( 11, 83.37) ref -> x26 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Product]>
; V22 tmp15 [V22,T27] ( 4, 33.35) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V23 tmp16 [V23,T28] ( 4, 33.35) ref -> x24 class-hnd "Inline stloc first use temp" <<unknown class>>
; V24 tmp17 [V24,T23] ( 3, 50.02) ref -> x22 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
-; V25 tmp18 [V25,T35] ( 5, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V26 tmp19 [V26,T13] ( 5, 166.74) ref -> x25 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
-; V27 tmp20 [V27,T36] ( 5, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V28 tmp21 [V28,T22] ( 4, 50.02) ref -> x25
+; V25 tmp18 [V25,T35] ( 5, 0 ) ref -> x26 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T14] ( 5, 166.74) ref -> x26 class-hnd exact "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[Product]>
+; V27 tmp20 [V27,T36] ( 5, 0 ) ref -> x26 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V28 tmp21 [V28,T22] ( 4, 50.02) ref -> x26
;* V29 tmp22 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V30 tmp23 [V30 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V31 tmp24 [V31,T12] ( 6, 283.32) int -> x23 "Inline stloc first use temp"
+; V31 tmp24 [V31,T13] ( 6, 283.32) int -> x23 "Inline stloc first use temp"
; V32 tmp25 [V32,T06] ( 8, 5098.01) ref -> x28 class-hnd "Inline stloc first use temp" <Product>
; V33 tmp26 [V33,T09] ( 4, 2548.93) int -> x0 "guarded devirt return temp"
-; V34 tmp27 [V34,T01] ( 8,10196.29) ref -> x3 "guarded devirt arg temp"
+; V34 tmp27 [V34,T01] ( 8,10196.29) ref -> x4 "guarded devirt arg temp"
;* V35 tmp28 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <LinqBenchmarks+<>c>
-; V36 tmp29 [V36,T17] ( 4, 67.88) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+; V36 tmp29 [V36,T18] ( 4, 66.70) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
;* V37 tmp30 [V37 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Product]>
;* V38 tmp31 [V38 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V39 tmp32 [V39,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V40 tmp33 [V40,T00] ( 24,25789.59) byref -> x25 "Inlining Arg"
+; V40 tmp33 [V40,T00] ( 24,25789.59) byref -> x2 "Inlining Arg"
; V41 tmp34 [V41,T05] ( 8, 5148.00) ref -> x26 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
-; V42 tmp35 [V42,T21] ( 6, 50.91) ref -> x15 "field V37._list (fldOffset=0x0)" P-INDEP
+; V42 tmp35 [V42,T21] ( 6, 50.03) ref -> x15 "field V37._list (fldOffset=0x0)" P-INDEP
;* V43 tmp36 [V43,T30] ( 0, 0 ) ref -> zero-ref "field V37._current (fldOffset=0x8)" P-INDEP
;* V44 tmp37 [V44,T31] ( 0, 0 ) int -> zero-ref "field V37._index (fldOffset=0x10)" P-INDEP
-; V45 tmp38 [V45,T26] ( 4, 33.94) int -> x24 "field V37._version (fldOffset=0x14)" P-INDEP
-; V46 tmp39 [V46,T03] ( 6, 7647.64) ref -> x27 "arr expr"
-; V47 tmp40 [V47,T04] ( 6, 7647.64) int -> x2 "index expr"
+; V45 tmp38 [V45,T26] ( 4, 33.35) int -> x24 "field V37._version (fldOffset=0x14)" P-INDEP
+; V46 tmp39 [V46,T02] ( 6, 7647.64) ref -> x27 "arr expr"
+; V47 tmp40 [V47,T03] ( 6, 7647.64) int -> x3 "index expr"
; V48 PSPSym [V48,T32] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V49 cse0 [V49,T07] ( 3, 3818.30) int -> x2 "CSE - aggressive"
-; V50 cse1 [V50,T25] ( 3, 38.57) int -> x2 "CSE - moderate"
+; V49 cse0 [V49,T07] ( 3, 3818.30) int -> x3 "CSE - aggressive"
+; V50 cse1 [V50,T25] ( 3, 38.57) int -> x3 "CSE - moderate"
+; V51 cse2 [V51,T11] ( 4, 1308.10) byref -> x25 hoist multi-def "CSE - aggressive"
;
; Lcl frame size = 16
@@ -79,12 +80,12 @@ G_M64534_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr w19, [fp, #0xD1FFAB1E]
ldr w21, [fp, #0xD1FFAB1E]
;; size=48 bbWeight=1 PerfScore 14.00
-G_M64534_IG02: ; bbWeight=1, gcVars=0000000000000800 {V05}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars +{V05 V11}
+G_M64534_IG02: ; bbWeight=1, gcVars=0000000000001000 {V05}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars +{V05 V12}
b G_M64534_IG10
;; size=4 bbWeight=1 PerfScore 1.00
G_M64534_IG03: ; bbWeight=16.67, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V05 V11}
+ ; GC ptr vars -{V05 V12}
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -93,8 +94,8 @@ G_M64534_IG03: ; bbWeight=16.67, gcVars=0000000000000000 {}, gcrefRegs=10
cbz x23, G_M64534_IG08
;; size=20 bbWeight=16.67 PerfScore 91.71
G_M64534_IG04: ; bbWeight=16.67, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M64534_IG47
- cbz x23, G_M64534_IG48
+ cbz x20, G_M64534_IG48
+ cbz x23, G_M64534_IG49
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -103,7 +104,7 @@ G_M64534_IG04: ; bbWeight=16.67, gcrefRegs=900000 {x20 x23}, byrefRegs=00
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbnz x0, G_M64534_IG49
+ cbnz x0, G_M64534_IG50
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -115,7 +116,7 @@ G_M64534_IG04: ; bbWeight=16.67, gcrefRegs=900000 {x20 x23}, byrefRegs=00
; gcr arg pop 0
mov x24, x0
; gcrRegs +[x24]
- cbnz x24, G_M64534_IG50
+ cbnz x24, G_M64534_IG51
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -127,7 +128,7 @@ G_M64534_IG04: ; bbWeight=16.67, gcrefRegs=900000 {x20 x23}, byrefRegs=00
; gcr arg pop 0
mov x22, x0
; gcrRegs +[x22]
- cbz x22, G_M64534_IG52
+ cbz x22, G_M64534_IG53
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -135,20 +136,20 @@ G_M64534_IG04: ; bbWeight=16.67, gcrefRegs=900000 {x20 x23}, byrefRegs=00
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
- mov x25, x0
- ; gcrRegs +[x25]
+ mov x26, x0
+ ; gcrRegs +[x26]
bl <unknown method>
; gcrRegs -[x0]
; gcr arg pop 0
- str w0, [x25, #0x10]
- add x14, x25, #24
+ str w0, [x26, #0x10]
+ add x14, x26, #24
; byrRegs +[x14]
mov x15, x22
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x22]
; byrRegs -[x14]
- add x14, x25, #32
+ add x14, x26, #32
; byrRegs +[x14]
mov x15, x23
; gcrRegs +[x15]
@@ -156,32 +157,32 @@ G_M64534_IG04: ; bbWeight=16.67, gcrefRegs=900000 {x20 x23}, byrefRegs=00
; gcrRegs -[x15 x23]
; byrRegs -[x14]
;; size=140 bbWeight=16.67 PerfScore 400.17
-G_M64534_IG05: ; bbWeight=16.67, gcrefRegs=2100000 {x20 x25}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x25]
+G_M64534_IG05: ; bbWeight=16.67, gcrefRegs=4100000 {x20 x26}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x26]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M64534_IG54
- ldr w0, [x25, #0x14]
- cbnz w0, G_M64534_IG53
- ldr w23, [x25, #0x10]
+ bne G_M64534_IG55
+ ldr w0, [x26, #0x14]
+ cbnz w0, G_M64534_IG54
+ ldr w25, [x26, #0x10]
bl <unknown method>
; gcr arg pop 0
- cmp w23, w0
- bne G_M64534_IG53
+ cmp w25, w0
+ bne G_M64534_IG54
;; size=48 bbWeight=16.67 PerfScore 258.44
-G_M64534_IG06: ; bbWeight=16.67, gcrefRegs=2100000 {x20 x25}, byrefRegs=0000 {}, byref
+G_M64534_IG06: ; bbWeight=16.67, gcrefRegs=4100000 {x20 x26}, byrefRegs=0000 {}, byref
mov w0, #1
- str w0, [x25, #0x14]
+ str w0, [x26, #0x14]
;; size=8 bbWeight=16.67 PerfScore 25.01
-G_M64534_IG07: ; bbWeight=16.67, gcrefRegs=2100000 {x20 x25}, byrefRegs=0000 {}, byref
- str x25, [fp, #0xD1FFAB1E] // [V05 loc4]
+G_M64534_IG07: ; bbWeight=16.67, gcrefRegs=4100000 {x20 x26}, byrefRegs=0000 {}, byref
+ str x26, [fp, #0xD1FFAB1E] // [V05 loc4]
; GC ptr vars +{V05}
b G_M64534_IG10
;; size=8 bbWeight=16.67 PerfScore 33.35
G_M64534_IG08: ; bbWeight=0.01, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x25]
+ ; gcrRegs -[x26]
; GC ptr vars -{V05}
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -220,19 +221,15 @@ G_M64534_IG09: ; bbWeight=16.67, gcrefRegs=100000 {x20}, byrefRegs=0000 {
movz w14, #0xD1FFAB1E
movk w14, #15 LSL #16
cmp w21, w14
- bge G_M64534_IG45
+ bge G_M64534_IG46
b G_M64534_IG03
;; size=24 bbWeight=16.67 PerfScore 66.69
-G_M64534_IG10: ; bbWeight=16.67, gcVars=0000000000000800 {V05}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars +{V05 V11}
+G_M64534_IG10: ; bbWeight=16.67, gcVars=0000000000001000 {V05}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V05 V12}
ldr x14, [fp, #0xD1FFAB1E] // [V05 loc4]
; gcrRegs +[x14]
cbz x14, G_M64534_IG27
- ;; size=8 bbWeight=16.67 PerfScore 50.02
-G_M64534_IG11: ; bbWeight=8.49, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x14]
ldr x14, [fp, #0xD1FFAB1E] // [V05 loc4]
- ; gcrRegs +[x14]
ldr x14, [x14]
; gcrRegs -[x14]
movz x15, #0xD1FFAB1E
@@ -240,12 +237,12 @@ G_M64534_IG11: ; bbWeight=8.49, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
movk x15, #0xD1FFAB1E LSL #32
cmp x14, x15
bne G_M64534_IG27
- b G_M64534_IG13
- ;; size=32 bbWeight=8.49 PerfScore 76.37
-G_M64534_IG12: ; bbWeight=82.49, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ b G_M64534_IG12
+ ;; size=40 bbWeight=16.67 PerfScore 200.08
+G_M64534_IG11: ; bbWeight=82.49, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
add w19, w19, #1
;; size=4 bbWeight=82.49 PerfScore 41.25
-G_M64534_IG13: ; bbWeight=99.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M64534_IG12: ; bbWeight=99.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldr x22, [fp, #0xD1FFAB1E] // [V05 loc4]
; gcrRegs +[x22]
mov x14, x22
@@ -254,60 +251,65 @@ G_M64534_IG13: ; bbWeight=99.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {
cmp w23, #1
beq G_M64534_IG23
;; size=20 bbWeight=99.00 PerfScore 693.00
-G_M64534_IG14: ; bbWeight=82.49, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
...
+16 (+7.27%) : 83784.dasm - LinqBenchmarks:Count00ForX():ubyte:this (Tier1-OSR)
@@ -6,113 +6,121 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 98.95
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 98.95
; 1 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <LinqBenchmarks>
-; V01 loc0 [V01,T11] ( 2, 2.57) ref -> x2 class-hnd <System.Collections.Generic.List`1[Product]>
-; V02 loc1 [V02,T08] ( 3, 12.81) int -> x0
-; V03 loc2 [V03,T10] ( 3, 3.85) int -> x1
-; V04 loc3 [V04,T09] ( 4, 4 ) struct (24) [fp+0x38] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
+; V01 loc0 [V01,T09] ( 2, 2.57) ref -> x19 class-hnd <System.Collections.Generic.List`1[Product]>
+; V02 loc1 [V02,T06] ( 3, 12.81) int -> x0
+; V03 loc2 [V03,T08] ( 3, 3.85) int -> x1
+; V04 loc3 [V04,T07] ( 4, 4 ) struct (24) [fp+0x58] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <Product>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V07 tmp1 [V07,T07] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Product]>
-; V09 tmp3 [V09,T03] ( 3,200 ) ubyte -> x8 "Inline return value spill temp"
+; V09 tmp3 [V09,T03] ( 3,200 ) ubyte -> x3 "Inline return value spill temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref "field V08._list (fldOffset=0x0)" P-INDEP
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref "field V08._current (fldOffset=0x8)" P-INDEP
;* V13 tmp7 [V13 ] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x10)" P-INDEP
-; V14 tmp8 [V14,T12] ( 2, 2.57) int -> x5 "field V08._version (fldOffset=0x14)" P-INDEP
-; V15 tmp9 [V15,T02] ( 6,210.37) ref -> x3 "V04.[000..008)"
-; V16 tmp10 [V16,T04] ( 3,198.72) ref -> x7 "V04.[008..016)"
-; V17 tmp11 [V17,T01] ( 8,498.43) int -> x4 "V04.[016..020)"
-; V18 tmp12 [V18,T06] ( 3,102.28) int -> x5 "V04.[020..024)"
-; V19 tmp13 [V19,T00] ( 3,592.30) ref -> x7 "arr expr"
-; V20 cse0 [V20,T05] ( 2,108.08) int -> x6 hoist "CSE - aggressive"
+; V14 tmp8 [V14,T10] ( 2, 2.57) int -> x22 "field V08._version (fldOffset=0x14)" P-INDEP
+; V15 tmp9 [V15,T02] ( 6,302.28) ref -> x20 "V04.[000..008)"
+; V16 tmp10 [V16,T04] ( 3,198.72) ref -> x2 "V04.[008..016)"
+; V17 tmp11 [V17,T01] ( 8,498.43) int -> x21 "V04.[016..020)"
+; V18 tmp12 [V18,T05] ( 3,102.28) int -> x22 "V04.[020..024)"
+; V19 tmp13 [V19,T00] ( 3,592.30) ref -> x2 "arr expr"
;
; Lcl frame size = 0
G_M51974_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
mov fp, sp
- ldr x2, [fp, #0x58]
- ; gcrRegs +[x2]
- ldp w1, w0, [fp, #0x50]
- ;; size=16 bbWeight=1 PerfScore 5.50
-G_M51974_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ldr x3, [fp, #0x38] // [V04 loc3]
- ; gcrRegs +[x3]
- ldp w4, w5, [fp, #0x48] // [V04 loc3+0x10], [V04 loc3+0x14]
- b G_M51974_IG04
+ ldr x19, [fp, #0x78]
+ ; gcrRegs +[x19]
+ ldp w1, w0, [fp, #0x70]
+ ;; size=24 bbWeight=1 PerfScore 7.50
+G_M51974_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr x20, [fp, #0x58] // [V04 loc3]
+ ; gcrRegs +[x20]
+ ldp w21, w22, [fp, #0x68] // [V04 loc3+0x10], [V04 loc3+0x14]
+ b G_M51974_IG05
;; size=12 bbWeight=1 PerfScore 5.00
-G_M51974_IG03: ; bbWeight=1.28, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x3]
- ldr w5, [x2, #0x14]
- mov x3, x2
- ; gcrRegs +[x3]
- mov w4, wzr
- ;; size=12 bbWeight=1.28 PerfScore 5.13
-G_M51974_IG04: ; bbWeight=8.08, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- ldr w6, [x3, #0x14]
- b G_M51974_IG06
- ;; size=8 bbWeight=8.08 PerfScore 32.34
-G_M51974_IG05: ; bbWeight=98.72, gcrefRegs=008C {x2 x3 x7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x7]
- ldr w7, [x7, #0x1C]
- ; gcrRegs -[x7]
- cbz w7, G_M51974_IG10
+G_M51974_IG03: ; bbWeight=1.28, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ ldr w22, [x19, #0x14]
+ mov x20, x19
+ ; gcrRegs +[x20]
+ mov w21, wzr
+ b G_M51974_IG05
+ ;; size=16 bbWeight=1.28 PerfScore 6.42
+G_M51974_IG04: ; bbWeight=98.72, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x2]
+ ldr w2, [x2, #0x1C]
+ ; gcrRegs -[x2]
+ cbz w2, G_M51974_IG09
;; size=8 bbWeight=98.72 PerfScore 394.87
-G_M51974_IG06: ; bbWeight=100, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
- cmp w5, w6
- bne G_M51974_IG15
- ldr w7, [x3, #0x10]
- cmp w4, w7
- bhs G_M51974_IG11
- ;; size=20 bbWeight=100 PerfScore 600.00
-G_M51974_IG07: ; bbWeight=98.72, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
- ldr x7, [x3, #0x08]
- ; gcrRegs +[x7]
- ldr w8, [x7, #0x08]
- cmp w4, w8
+G_M51974_IG05: ; bbWeight=100, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr w2, [x20, #0x14]
+ cmp w22, w2
+ bne G_M51974_IG11
+ ldr w2, [x20, #0x10]
+ cmp w21, w2
+ bhs G_M51974_IG10
+ ;; size=24 bbWeight=100 PerfScore 900.00
+G_M51974_IG06: ; bbWeight=98.72, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x2, [x20, #0x08]
+ ; gcrRegs +[x2]
+ ldr w3, [x2, #0x08]
+ cmp w21, w3
bhs G_M51974_IG12
- add x7, x7, #16
- ; gcrRegs -[x7]
- ; byrRegs +[x7]
- ldr x7, [x7, w4, UXTW #3]
- ; gcrRegs +[x7]
- ; byrRegs -[x7]
- add w4, w4, #1
- mov w8, #1
+ add x2, x2, #16
+ ; gcrRegs -[x2]
+ ; byrRegs +[x2]
+ ldr x2, [x2, w21, UXTW #3]
+ ; gcrRegs +[x2]
+ ; byrRegs -[x2]
+ add w21, w21, #1
+ mov w3, #1
;; size=32 bbWeight=98.72 PerfScore 1184.60
-G_M51974_IG08: ; bbWeight=100, gcrefRegs=008C {x2 x3 x7}, byrefRegs=0000 {}, byref, isz
- cbnz w8, G_M51974_IG05
+G_M51974_IG07: ; bbWeight=100, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz w3, G_M51974_IG04
;; size=4 bbWeight=100 PerfScore 100.00
-G_M51974_IG09: ; bbWeight=1.28, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x3 x7]
+G_M51974_IG08: ; bbWeight=1.28, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x2 x20]
add w1, w1, #1
- movz w3, #0xD1FFAB1E
- movk w3, #15 LSL #16
- cmp w1, w3
+ movz w2, #0xD1FFAB1E
+ movk w2, #15 LSL #16
+ cmp w1, w2
bge G_M51974_IG13
b G_M51974_IG03
;; size=24 bbWeight=1.28 PerfScore 5.13
-G_M51974_IG10: ; bbWeight=6.41, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x3]
+G_M51974_IG09: ; bbWeight=6.41, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x20]
add w0, w0, #1
- b G_M51974_IG06
+ b G_M51974_IG05
;; size=8 bbWeight=6.41 PerfScore 9.61
-G_M51974_IG11: ; bbWeight=1.28, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- ldr w4, [x3, #0x10]
- add w4, w4, #1
- mov x7, xzr
- ; gcrRegs +[x7]
- mov w8, wzr
- b G_M51974_IG08
+G_M51974_IG10: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ldr w2, [x20, #0x10]
+ add w21, w2, #1
+ mov x2, xzr
+ ; gcrRegs +[x2]
+ mov w3, wzr
+ b G_M51974_IG07
;; size=20 bbWeight=1.28 PerfScore 7.06
+G_M51974_IG11: ; bbWeight=1.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2 x19-x20]
+ movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ ldr x0, [x0]
+ blr x0
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=24 bbWeight=1.28 PerfScore 8.34
G_M51974_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2-x3 x7]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
@@ -123,32 +131,25 @@ G_M51974_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cset x0, eq
;; size=16 bbWeight=0 PerfScore 0.00
G_M51974_IG14: ; bbWeight=0, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x30
add sp, sp, #96
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M51974_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x0, [x0]
- blr x0
- ; gcr arg pop 0
- brk_windows #0
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=0 PerfScore 0.00
-Total bytes of code 220, prolog size 16, PerfScore 2349.24, instruction count 55, allocated bytes for code 220 (MethodHash=877634f9) for method LinqBenchmarks:Count00ForX():ubyte:this (Tier1-OSR)
+Total bytes of code 236, prolog size 24, PerfScore 2628.53, instruction count 59, allocated bytes for code 236 (MethodHash=877634f9) for method LinqBenchmarks:Count00ForX():ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 59 (0x0003b) Actual length = 236 (0x0000ec)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -156,7 +157,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ E6 save_next
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
06 alloc_s #6 (0x06); sub sp, sp, #96 (0x060)
E4 end
...
benchmarks.run_tiered.windows.arm64.checked.mch
-28 (-6.67%) : 43233.dasm - System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
@@ -41,15 +41,15 @@ G_M29540_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=36 bbWeight=1 PerfScore 6.50
G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
ldr w14, [x20, #0x68]
- cbnz w14, G_M29540_IG11
- cbz x19, G_M29540_IG12
+ cbnz w14, G_M29540_IG10
+ cbz x19, G_M29540_IG11
add x14, x19, #244
; byrRegs +[x14]
mov w15, #1
mov w12, wzr
mov w1, w12
casal w1, w15, [x14]
- cbnz w1, G_M29540_IG13
+ cbnz w1, G_M29540_IG12
mov w14, #7
; byrRegs -[x14]
str w14, [x19, #0xDC]
@@ -61,20 +61,9 @@ G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=380
; gcrRegs -[x15]
; byrRegs -[x14]
ldrb w0, [x19, #0xFA]
- cbnz w0, G_M29540_IG04
+ cbz w0, G_M29540_IG04
;; size=64 bbWeight=1 PerfScore 18.50
-G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x0, [x0]
- ; gcrRegs +[x0]
- ldrb w0, [x0, #0x9D]
- ; gcrRegs -[x0]
- cbz w0, G_M29540_IG05
- b G_M29540_IG05
- ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -90,7 +79,7 @@ G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
; gcrRegs -[x0 x15]
; byrRegs -[x14]
;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M29540_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M29540_IG04: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
ldr x14, [x19, #0xB0]
; gcrRegs +[x14]
add x14, x14, #8
@@ -102,14 +91,14 @@ G_M29540_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
; gcrRegs -[x15]
; byrRegs -[x14]
;; size=16 bbWeight=1 PerfScore 5.00
-G_M29540_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M29540_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x20, #0x08]
; gcrRegs +[x1]
ldr x0, [x19, #0x18]
; gcrRegs +[x0]
- cbz x0, G_M29540_IG08
+ cbz x0, G_M29540_IG07
;; size=12 bbWeight=1 PerfScore 7.00
-G_M29540_IG07: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M29540_IG06: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x20-x21]
mov x0, x19
; gcrRegs +[x0]
@@ -120,9 +109,9 @@ G_M29540_IG07: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M29540_IG09
+ b G_M29540_IG08
;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M29540_IG08: ; bbWeight=0.50, gcrefRegs=280002 {x1 x19 x21}, byrefRegs=0000 {}, byref
+G_M29540_IG07: ; bbWeight=0.50, gcrefRegs=280002 {x1 x19 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x21]
mov x0, x19
; gcrRegs +[x0]
@@ -136,19 +125,19 @@ G_M29540_IG08: ; bbWeight=0.50, gcrefRegs=280002 {x1 x19 x21}, byrefRegs=
; gcrRegs -[x0-x2 x21]
; gcr arg pop 0
;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M29540_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
; GC ptr vars -{V01}
cmp w0, #0xD1FFAB1E
cset x0, eq
;; size=8 bbWeight=1 PerfScore 1.00
-G_M29540_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M29540_IG09: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x38]
ldp x19, x20, [sp, #0x28]
ldp fp, lr, [sp], #0x40
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x20]
mov x0, x20
; gcrRegs +[x0]
@@ -161,7 +150,7 @@ G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000
; gcr arg pop 0
brk_windows #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M29540_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29540_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -178,7 +167,7 @@ G_M29540_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_windows #0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M29540_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
; GC ptr vars +{V00 V01}
mov x0, x19
@@ -193,7 +182,7 @@ G_M29540_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=800
; gcr arg pop 0
brk_windows #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M29540_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M29540_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x18]
@@ -201,7 +190,7 @@ G_M29540_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
add x3, fp, #64
str x3, [sp, #0x10]
;; size=20 bbWeight=0 PerfScore 0.00
-G_M29540_IG15: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -217,7 +206,7 @@ G_M29540_IG15: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
brk_windows #0
;; size=32 bbWeight=0 PerfScore 0.00
-Total bytes of code 420, prolog size 36, PerfScore 58.25, instruction count 105, allocated bytes for code 420 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
+Total bytes of code 392, prolog size 36, PerfScore 53.50, instruction count 98, allocated bytes for code 392 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -228,7 +217,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 92 (0x0005c) Actual length = 368 (0x000170)
+ Function Length : 85 (0x00055) Actual length = 340 (0x000154)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -263,4 +252,4 @@ Unwind Info:
*************** EH table for System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M29540_IG06..G_M29540_IG09) handled by [G_M29540_IG14..END) (class: 1000001)
+EH#0: try [G_M29540_IG05..G_M29540_IG08) handled by [G_M29540_IG13..END) (class: 1000001)
-28 (-6.67%) : 43175.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
@@ -41,15 +41,15 @@ G_M23091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=36 bbWeight=1 PerfScore 6.50
G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
ldr w14, [x20, #0x68]
- cbnz w14, G_M23091_IG11
- cbz x19, G_M23091_IG12
+ cbnz w14, G_M23091_IG10
+ cbz x19, G_M23091_IG11
add x14, x19, #244
; byrRegs +[x14]
mov w15, #1
mov w12, wzr
mov w1, w12
casal w1, w15, [x14]
- cbnz w1, G_M23091_IG13
+ cbnz w1, G_M23091_IG12
mov w14, #4
; byrRegs -[x14]
str w14, [x19, #0xDC]
@@ -61,20 +61,9 @@ G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=380
; gcrRegs -[x15]
; byrRegs -[x14]
ldrb w0, [x19, #0xFA]
- cbnz w0, G_M23091_IG04
+ cbz w0, G_M23091_IG04
;; size=64 bbWeight=1 PerfScore 18.50
-G_M23091_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x0, [x0]
- ; gcrRegs +[x0]
- ldrb w0, [x0, #0x9D]
- ; gcrRegs -[x0]
- cbz w0, G_M23091_IG05
- b G_M23091_IG05
- ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M23091_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M23091_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -90,7 +79,7 @@ G_M23091_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
; gcrRegs -[x0 x15]
; byrRegs -[x14]
;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M23091_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M23091_IG04: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
ldr x14, [x19, #0xB0]
; gcrRegs +[x14]
add x14, x14, #8
@@ -102,14 +91,14 @@ G_M23091_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
; gcrRegs -[x15]
; byrRegs -[x14]
;; size=16 bbWeight=1 PerfScore 5.00
-G_M23091_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M23091_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x20, #0x08]
; gcrRegs +[x1]
ldr x0, [x19, #0x18]
; gcrRegs +[x0]
- cbz x0, G_M23091_IG08
+ cbz x0, G_M23091_IG07
;; size=12 bbWeight=1 PerfScore 7.00
-G_M23091_IG07: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M23091_IG06: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x20-x21]
mov x0, x19
; gcrRegs +[x0]
@@ -120,9 +109,9 @@ G_M23091_IG07: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M23091_IG09
+ b G_M23091_IG08
;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M23091_IG08: ; bbWeight=0.50, gcrefRegs=280002 {x1 x19 x21}, byrefRegs=0000 {}, byref
+G_M23091_IG07: ; bbWeight=0.50, gcrefRegs=280002 {x1 x19 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x21]
mov x0, x19
; gcrRegs +[x0]
@@ -136,19 +125,19 @@ G_M23091_IG08: ; bbWeight=0.50, gcrefRegs=280002 {x1 x19 x21}, byrefRegs=
; gcrRegs -[x0-x2 x21]
; gcr arg pop 0
;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M23091_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
; GC ptr vars -{V01}
cmp w0, #0xD1FFAB1E
cset x0, eq
;; size=8 bbWeight=1 PerfScore 1.00
-G_M23091_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M23091_IG09: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x38]
ldp x19, x20, [sp, #0x28]
ldp fp, lr, [sp], #0x40
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x20]
mov x0, x20
; gcrRegs +[x0]
@@ -161,7 +150,7 @@ G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000
; gcr arg pop 0
brk_windows #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M23091_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23091_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -178,7 +167,7 @@ G_M23091_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_windows #0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M23091_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
; GC ptr vars +{V00 V01}
mov x0, x19
@@ -193,7 +182,7 @@ G_M23091_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=800
; gcr arg pop 0
brk_windows #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M23091_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M23091_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x18]
@@ -201,7 +190,7 @@ G_M23091_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
add x3, fp, #64
str x3, [sp, #0x10]
;; size=20 bbWeight=0 PerfScore 0.00
-G_M23091_IG15: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -217,7 +206,7 @@ G_M23091_IG15: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
brk_windows #0
;; size=32 bbWeight=0 PerfScore 0.00
-Total bytes of code 420, prolog size 36, PerfScore 58.25, instruction count 105, allocated bytes for code 420 (MethodHash=03bba5cc) for method System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
+Total bytes of code 392, prolog size 36, PerfScore 53.50, instruction count 98, allocated bytes for code 392 (MethodHash=03bba5cc) for method System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -228,7 +217,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 92 (0x0005c) Actual length = 368 (0x000170)
+ Function Length : 85 (0x00055) Actual length = 340 (0x000154)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -263,4 +252,4 @@ Unwind Info:
*************** EH table for System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M23091_IG06..G_M23091_IG09) handled by [G_M23091_IG14..END) (class: 1000001)
+EH#0: try [G_M23091_IG05..G_M23091_IG08) handled by [G_M23091_IG13..END) (class: 1000001)
-28 (-3.72%) : 22570.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
@@ -50,8 +50,8 @@ G_M38239_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M38239_IG02: ; bbWeight=1, gcVars=0000000000000003 {V00 V01}, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0]
ldr w1, [x0, #0x68]
- cbnz w1, G_M38239_IG16
- cbz x19, G_M38239_IG17
+ cbnz w1, G_M38239_IG15
+ cbz x19, G_M38239_IG16
ldr x1, [x19, #0x28]
; gcrRegs +[x1]
str x1, [fp, #0x30] // [V03 loc0]
@@ -62,7 +62,7 @@ G_M38239_IG03: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=
; gcrRegs -[x1]
ldr x1, [fp, #0x30] // [V03 loc0]
; gcrRegs +[x1]
- cbz x1, G_M38239_IG18
+ cbz x1, G_M38239_IG17
add x1, fp, #48 // [V03 loc0]
; gcrRegs -[x1]
movz x2, #0xD1FFAB1E // code for System.Net.Sockets.Socket:Serialize(byref):System.Net.SocketAddress:this
@@ -88,7 +88,7 @@ G_M38239_IG04: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=000
mov w12, wzr
mov w1, w12
casal w1, w15, [x14]
- cbnz w1, G_M38239_IG19
+ cbnz w1, G_M38239_IG18
mov w14, #9
; byrRegs -[x14]
str w14, [x19, #0xDC]
@@ -100,20 +100,9 @@ G_M38239_IG04: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=000
; gcrRegs -[x0 x15]
; byrRegs -[x14]
ldrb w1, [x19, #0xFA]
- cbnz w1, G_M38239_IG06
+ cbz w1, G_M38239_IG06
;; size=52 bbWeight=1 PerfScore 13.50
-G_M38239_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- ; gcrRegs +[x1]
- ldrb w1, [x1, #0x9D]
- ; gcrRegs -[x1]
- cbz w1, G_M38239_IG07
- b G_M38239_IG07
- ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M38239_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M38239_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E // code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -129,7 +118,7 @@ G_M38239_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x0 x15]
; byrRegs -[x14]
;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M38239_IG07: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M38239_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x14, [x19, #0xB0]
; gcrRegs +[x14]
add x14, x14, #8
@@ -148,9 +137,9 @@ G_M38239_IG07: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs +[x21]
str x21, [fp, #0x18] // [V04 loc1]
; GC ptr vars +{V04}
- cbnz x14, G_M38239_IG09
+ cbnz x14, G_M38239_IG08
;; size=36 bbWeight=1 PerfScore 12.50
-G_M38239_IG08: ; bbWeight=0.50, gcVars=0000000000000103 {V00 V01 V04}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG07: ; bbWeight=0.50, gcVars=0000000000000103 {V00 V01 V04}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x14]
add x14, x0, #16
; byrRegs +[x14]
@@ -160,14 +149,14 @@ G_M38239_IG08: ; bbWeight=0.50, gcVars=0000000000000103 {V00 V01 V04}, gc
; gcrRegs -[x15]
; byrRegs -[x14]
;; size=12 bbWeight=0.50 PerfScore 1.75
-G_M38239_IG09: ; bbWeight=1, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M38239_IG08: ; bbWeight=1, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0, #0x08]
; gcrRegs +[x1]
ldr x2, [x19, #0x18]
; gcrRegs +[x2]
- cbz x2, G_M38239_IG11
+ cbz x2, G_M38239_IG10
;; size=12 bbWeight=1 PerfScore 7.00
-G_M38239_IG10: ; bbWeight=0.50, gcrefRegs=280002 {x1 x19 x21}, byrefRegs=0000 {}, byref
+G_M38239_IG09: ; bbWeight=0.50, gcrefRegs=280002 {x1 x19 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x2 x20]
mov x0, x19
; gcrRegs +[x0]
@@ -179,9 +168,9 @@ G_M38239_IG10: ; bbWeight=0.50, gcrefRegs=280002 {x1 x19 x21}, byrefRegs=
; gcrRegs -[x0-x1]
; gcr arg pop 0
sxtw w22, w0
- b G_M38239_IG12
+ b G_M38239_IG11
;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M38239_IG11: ; bbWeight=0.50, gcrefRegs=380002 {x1 x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M38239_IG10: ; bbWeight=0.50, gcrefRegs=380002 {x1 x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x20]
mov x0, x19
; gcrRegs +[x0]
@@ -196,7 +185,7 @@ G_M38239_IG11: ; bbWeight=0.50, gcrefRegs=380002 {x1 x19 x20 x21}, byrefR
; gcr arg pop 0
sxtw w22, w0
;; size=32 bbWeight=0.50 PerfScore 3.50
-G_M38239_IG12: ; bbWeight=1, gcVars=0000000000000102 {V00 V04}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38239_IG11: ; bbWeight=1, gcVars=0000000000000102 {V00 V04}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x19]
; GC ptr vars -{V00 V01}
ldr x0, [fp, #0x28] // [V00 this]
@@ -209,9 +198,9 @@ G_M38239_IG12: ; bbWeight=1, gcVars=0000000000000102 {V00 V04}, gcrefRegs
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- cbnz w0, G_M38239_IG14
+ cbnz w0, G_M38239_IG13
;; size=32 bbWeight=1 PerfScore 9.00
-G_M38239_IG13: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M38239_IG12: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x28] // [V00 this]
; gcrRegs +[x0]
add x14, x0, #16
@@ -224,19 +213,19 @@ G_M38239_IG13: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}
; byrRegs -[x14]
str xzr, [x0, #0x20]
;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M38239_IG14: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG13: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
; GC ptr vars -{V00}
cmp w22, #0xD1FFAB1E
cset x0, eq
;; size=8 bbWeight=1 PerfScore 1.00
-G_M38239_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M38239_IG14: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x50]
ldp x19, x20, [sp, #0x40]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M38239_IG16: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG15: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
; GC ptr vars +{V00 V01}
movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowObjectDisposedException(System.Object)
@@ -249,7 +238,7 @@ G_M38239_IG16: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000
; gcr arg pop 0
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M38239_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38239_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -266,7 +255,7 @@ G_M38239_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_windows #0
;; size=44 bbWeight=0 PerfScore 0.00
-G_M38239_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38239_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -331,7 +320,7 @@ G_M38239_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19]
; gcr arg pop 0
;; size=156 bbWeight=0 PerfScore 0.00
-G_M38239_IG19: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG18: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
; GC ptr vars +{V00 V01}
mov x0, x19
@@ -346,7 +335,7 @@ G_M38239_IG19: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=800
; gcr arg pop 0
brk_windows #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M38239_IG20: ; bbWeight=0, gcVars=0000000000000103 {V00 V01 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M38239_IG19: ; bbWeight=0, gcVars=0000000000000103 {V00 V01 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01 V04 V08}
stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x20]
@@ -354,7 +343,7 @@ G_M38239_IG20: ; bbWeight=0, gcVars=0000000000000103 {V00 V01 V04}, gcref
add x3, fp, #96
str x3, [sp, #0x18]
;; size=20 bbWeight=0 PerfScore 0.00
-G_M38239_IG21: ; bbWeight=0, gcVars=0000000000000103 {V00 V01 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG20: ; bbWeight=0, gcVars=0000000000000103 {V00 V01 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x28] // [V00 this]
; gcrRegs +[x0]
add x14, x0, #16
@@ -380,7 +369,7 @@ G_M38239_IG21: ; bbWeight=0, gcVars=0000000000000103 {V00 V01 V04}, gcref
brk_windows #0
;; size=52 bbWeight=0 PerfScore 0.00
-Total bytes of code 752, prolog size 40, PerfScore 94.50, instruction count 188, allocated bytes for code 752 (MethodHash=86656aa0) for method System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
+Total bytes of code 724, prolog size 40, PerfScore 89.75, instruction count 181, allocated bytes for code 724 (MethodHash=86656aa0) for method System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -391,7 +380,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 170 (0x000aa) Actual length = 680 (0x0002a8)
+ Function Length : 163 (0x000a3) Actual length = 652 (0x00028c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -428,4 +417,4 @@ Unwind Info:
*************** EH table for System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M38239_IG09..G_M38239_IG12) handled by [G_M38239_IG20..END) (class: 1000001)
+EH#0: try [G_M38239_IG08..G_M38239_IG11) handled by [G_M38239_IG19..END) (class: 1000001)
-32 (-0.24%) : 21329.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
@@ -60,7 +60,7 @@
; V49 tmp36 [V49,T154] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
; V50 tmp37 [V50,T155] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
; V51 tmp38 [V51,T156] ( 2, 8 ) int -> x2 "Strict ordering of exceptions for Array store"
-; V52 tmp39 [V52,T335] ( 3, 1.50) long -> x0 single-def "Inline stloc first use temp"
+; V52 tmp39 [V52,T335] ( 2, 1 ) long -> x0 single-def "Inline stloc first use temp"
;* V53 tmp40 [V53,T336] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V54 tmp41 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V55 tmp42 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
@@ -109,7 +109,7 @@
;* V98 tmp85 [V98 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V99 tmp86 [V99 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V100 tmp87 [V100 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V101 tmp88 [V101,T114] ( 3, 10 ) long -> x2 "Inline stloc first use temp"
+; V101 tmp88 [V101,T114] ( 2, 8 ) long -> x2 "Inline stloc first use temp"
;* V102 tmp89 [V102,T124] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V103 tmp90 [V103 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V104 tmp91 [V104 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
@@ -529,7 +529,7 @@ G_M11467_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x2, [x24, #0x10]
blr x2
; gcrRegs -[x0-x1 x19]
- b G_M11467_IG269
+ b G_M11467_IG267
;; size=40 bbWeight=0.50 PerfScore 8.00
G_M11467_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x21]
@@ -578,13 +578,13 @@ G_M11467_IG05: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byre
; gcrRegs -[x0-x1]
ldr w0, [x25, #0x08]
cmp w0, #0
- blt G_M11467_IG271
+ blt G_M11467_IG269
sxtw w26, w0
cmp w0, #0
ble G_M11467_IG44
ldr w0, [x25, #0x08]
cmp w0, #0
- bls G_M11467_IG270
+ bls G_M11467_IG268
ldrb w27, [x25, #0x10]
mov w0, #0xD1FFAB1E
cmp w27, w0
@@ -764,7 +764,7 @@ G_M11467_IG17: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byre
ldr x4, [x4]
; gcrRegs +[x4]
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x27, x4, #16
; byrRegs +[x27]
ldrh w4, [x27, w2, UXTW #2]
@@ -780,7 +780,7 @@ G_M11467_IG18: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byre
; gcrRegs +[x4]
add w5, w2, #1
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x27, x4, #16
; byrRegs +[x27]
add w4, w2, #1
@@ -797,7 +797,7 @@ G_M11467_IG19: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byre
; gcrRegs +[x4]
add w5, w2, #2
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x27, x4, #16
; byrRegs +[x27]
add w2, w2, #2
@@ -813,7 +813,7 @@ G_M11467_IG20: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byre
ldr x4, [x2]
; gcrRegs +[x4]
cmp w1, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x27, x4, #16
; byrRegs +[x27]
ldrh w2, [x27, w1, UXTW #2]
@@ -829,7 +829,7 @@ G_M11467_IG21: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byre
; gcrRegs +[x4]
add w2, w1, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x27, x4, #16
; byrRegs +[x27]
add w2, w1, #1
@@ -849,7 +849,7 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byre
add w4, w1, #2
; gcrRegs -[x4]
cmp w4, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x27, x2, #16
; byrRegs +[x27]
add w2, w1, #2
@@ -857,18 +857,18 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byre
ldrh w2, [x27, w2, UXTW #2]
strh w2, [x21, #0x1C]
cmp w0, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
ldrh w2, [x27, w0, UXTW #2]
strh w2, [x21, #0x1E]
add w2, w0, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add w2, w0, #1
ldrh w2, [x27, w2, UXTW #2]
strh w2, [x21, #0x20]
add w2, w0, #2
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add w2, w0, #2
ldrh w2, [x27, w2, UXTW #2]
strh w2, [x21, #0x22]
@@ -892,7 +892,7 @@ G_M11467_IG24: ; bbWeight=4, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRe
beq G_M11467_IG44
ldr w1, [x25, #0x08]
cmp w27, w1
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x1, x25, #16
; byrRegs +[x1]
ldrb w28, [x1, w27, UXTW #2]
@@ -1096,7 +1096,7 @@ G_M11467_IG37: ; bbWeight=2, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRe
ldr x4, [x4]
; gcrRegs +[x4]
cmp w1, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1112,7 +1112,7 @@ G_M11467_IG38: ; bbWeight=2, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRe
; gcrRegs +[x4]
add w5, w1, #1
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1129,7 +1129,7 @@ G_M11467_IG39: ; bbWeight=2, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRe
; gcrRegs +[x4]
add w5, w1, #2
cmp w5, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1146,7 +1146,7 @@ G_M11467_IG40: ; bbWeight=2, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRe
ldr x4, [x2]
; gcrRegs +[x4]
cmp w1, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1162,7 +1162,7 @@ G_M11467_IG41: ; bbWeight=2, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRe
; gcrRegs +[x4]
add w2, w1, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
@@ -1182,7 +1182,7 @@ G_M11467_IG42: ; bbWeight=2, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRe
add w4, w1, #2
; gcrRegs -[x4]
cmp w4, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add x4, x2, #16
; byrRegs +[x4]
add w2, w1, #2
@@ -1190,18 +1190,18 @@ G_M11467_IG42: ; bbWeight=2, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRe
ldrh w2, [x4, w2, UXTW #2]
strh w2, [x21, #0x1C]
cmp w0, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
ldrh w2, [x4, w0, UXTW #2]
strh w2, [x21, #0x1E]
add w2, w0, #1
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add w2, w0, #1
ldrh w2, [x4, w2, UXTW #2]
strh w2, [x21, #0x20]
add w2, w0, #2
cmp w2, #0xD1FFAB1E
- bhs G_M11467_IG270
+ bhs G_M11467_IG268
add w2, w0, #2
ldrh w2, [x4, w2, UXTW #2]
strh w2, [x21, #0x22]
@@ -1252,7 +1252,7 @@ G_M11467_IG45: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
ldr x2, [x24, #0x10]
blr x2
; gcrRegs -[x0-x1 x25]
- b G_M11467_IG100
+ b G_M11467_IG98
;; size=56 bbWeight=0.50 PerfScore 10.75
G_M11467_IG46: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x25]
@@ -1265,34 +1265,28 @@ G_M11467_IG46: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byre
; gcrRegs -[x0-x1]
ldr w0, [x25, #0x08]
cmp w0, #0
- blt G_M11467_IG271
+ blt G_M11467_IG269
sxtw w27, w0
cmp w0, #0
- ble G_M11467_IG99
+ ble G_M11467_IG97
ldr w0, [x25, #0x08]
cmp w0, #0
- bls G_M11467_IG270
+ bls G_M11467_IG268
ldr x28, [x25, #0x10]
and x0, x28, #0xD1FFAB1E
- cbz x0, G_M11467_IG47
- mov x1, #0xD1FFAB1E
- cmp x0, x1
- beq G_M11467_IG48
- b G_M11467_IG48
- ;; size=80 bbWeight=0.50 PerfScore 13.00
-G_M11467_IG47: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRegs=0000 {}, byref
+ cbnz x0, G_M11467_IG47
and x0, x28, #0xD1FFAB1E
orr x28, x0, #0xD1FFAB1E
- ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M11467_IG48: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRegs=0000 {}, byref, isz
+ ;; size=72 bbWeight=0.50 PerfScore 12.00
+G_M11467_IG47: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRegs=0000 {}, byref, isz
and x0, x28, #0xD1FFAB1E
- cbz x0, G_M11467_IG49
+ cbz x0, G_M11467_IG48
mov x1, #0xD1FFAB1E
cmp x0, x1
- bne G_M11467_IG49
- b G_M11467_IG51
...
+0 (0.00%) : 46573.dasm - LinqBenchmarks:Count00ForX():ubyte:this (Tier1-OSR)
@@ -10,27 +10,26 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <LinqBenchmarks>
-; V01 loc0 [V01,T11] ( 2, 4 ) ref -> x2 class-hnd <System.Collections.Generic.List`1[Product]>
-; V02 loc1 [V02,T10] ( 3, 17 ) int -> x1
-; V03 loc2 [V03,T08] ( 3, 24 ) int -> x0
-; V04 loc3 [V04,T13] ( 4, 1.03) struct (24) [fp+0x38] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
+; V01 loc0 [V01,T09] ( 2, 4 ) ref -> x2 class-hnd <System.Collections.Generic.List`1[Product]>
+; V02 loc1 [V02,T08] ( 3, 17 ) int -> x1
+; V03 loc2 [V03,T06] ( 3, 24 ) int -> x0
+; V04 loc3 [V04,T11] ( 4, 1.03) struct (24) [fp+0x38] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[Product]>
;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <Product>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V07 tmp1 [V07,T03] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Product]>
-; V09 tmp3 [V09,T00] ( 3, 80 ) ubyte -> x8 "Inline return value spill temp"
+; V09 tmp3 [V09,T01] ( 3, 80 ) ubyte -> x7 "Inline return value spill temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Product]>
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref "field V08._list (fldOffset=0x0)" P-INDEP
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref "field V08._current (fldOffset=0x8)" P-INDEP
;* V13 tmp7 [V13 ] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x10)" P-INDEP
-; V14 tmp8 [V14,T12] ( 2, 4 ) int -> x5 "field V08._version (fldOffset=0x14)" P-INDEP
-; V15 tmp9 [V15,T06] ( 5, 26.01) ref -> x3 "V04.[000..008)"
-; V16 tmp10 [V16,T07] ( 3, 24 ) ref -> x7 "V04.[008..016)"
-; V17 tmp11 [V17,T04] ( 8, 50.01) int -> x4 "V04.[016..020)"
+; V14 tmp8 [V14,T10] ( 2, 4 ) int -> x5 "field V08._version (fldOffset=0x14)" P-INDEP
+; V15 tmp9 [V15,T00] ( 5, 82.01) ref -> x3 "V04.[000..008)"
+; V16 tmp10 [V16,T05] ( 3, 24 ) ref -> x6 "V04.[008..016)"
+; V17 tmp11 [V17,T03] ( 8, 50.01) int -> x4 "V04.[016..020)"
; V18 tmp12 [V18,T02] ( 3, 66.01) int -> x5 "V04.[020..024)"
-; V19 tmp13 [V19,T05] ( 3, 48 ) ref -> x7 "arr expr"
-; V20 cse0 [V20,T01] ( 2, 72 ) int -> x6 hoist "CSE - aggressive"
-; V21 cse1 [V21,T09] ( 3, 24 ) int -> x7 "CSE - aggressive"
+; V19 tmp13 [V19,T04] ( 3, 48 ) ref -> x6 "arr expr"
+; V20 cse0 [V20,T07] ( 3, 24 ) int -> x6 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -45,7 +44,7 @@ G_M51974_IG02: ; bbWeight=0.01, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
ldr x3, [fp, #0x38] // [V04 loc3]
; gcrRegs +[x3]
ldp w4, w5, [fp, #0x48] // [V04 loc3+0x10], [V04 loc3+0x14]
- b G_M51974_IG04
+ b G_M51974_IG05
;; size=12 bbWeight=0.01 PerfScore 0.05
G_M51974_IG03: ; bbWeight=2, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x3]
@@ -53,76 +52,74 @@ G_M51974_IG03: ; bbWeight=2, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byre
mov x3, x2
; gcrRegs +[x3]
mov w4, wzr
- ;; size=12 bbWeight=2 PerfScore 8.00
-G_M51974_IG04: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- ldr w6, [x3, #0x14]
- b G_M51974_IG06
- ;; size=8 bbWeight=8 PerfScore 32.00
-G_M51974_IG05: ; bbWeight=8, gcrefRegs=008C {x2 x3 x7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x7]
- ldr w7, [x7, #0x1C]
- ; gcrRegs -[x7]
- cbnz w7, G_M51974_IG06
+ b G_M51974_IG05
+ ;; size=16 bbWeight=2 PerfScore 10.00
+G_M51974_IG04: ; bbWeight=8, gcrefRegs=004C {x2 x3 x6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x6]
+ ldr w6, [x6, #0x1C]
+ ; gcrRegs -[x6]
+ cbnz w6, G_M51974_IG05
add w1, w1, #1
;; size=12 bbWeight=8 PerfScore 36.00
-G_M51974_IG06: ; bbWeight=64, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+G_M51974_IG05: ; bbWeight=64, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+ ldr w6, [x3, #0x14]
cmp w5, w6
- bne G_M51974_IG14
- ;; size=8 bbWeight=64 PerfScore 96.00
-G_M51974_IG07: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
- ldr w7, [x3, #0x10]
+ bne G_M51974_IG13
+ ;; size=12 bbWeight=64 PerfScore 288.00
+G_M51974_IG06: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+ ldr w6, [x3, #0x10]
+ cmp w4, w6
+ bhs G_M51974_IG07
+ ldr x6, [x3, #0x08]
+ ; gcrRegs +[x6]
+ ldr w7, [x6, #0x08]
cmp w4, w7
- bhs G_M51974_IG08
- ldr x7, [x3, #0x08]
- ; gcrRegs +[x7]
- ldr w8, [x7, #0x08]
- cmp w4, w8
- bhs G_M51974_IG13
- add x7, x7, #16
- ; gcrRegs -[x7]
- ; byrRegs +[x7]
- ldr x7, [x7, w4, UXTW #3]
- ; gcrRegs +[x7]
- ; byrRegs -[x7]
+ bhs G_M51974_IG12
+ add x6, x6, #16
+ ; gcrRegs -[x6]
+ ; byrRegs +[x6]
+ ldr x6, [x6, w4, UXTW #3]
+ ; gcrRegs +[x6]
+ ; byrRegs -[x6]
add w4, w4, #1
- mov w8, #1
- b G_M51974_IG09
+ mov w7, #1
+ b G_M51974_IG08
;; size=48 bbWeight=8 PerfScore 140.00
-G_M51974_IG08: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x7]
- add w4, w7, #1
- mov x7, xzr
- ; gcrRegs +[x7]
- mov w8, wzr
+G_M51974_IG07: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x6]
+ add w4, w6, #1
+ mov x6, xzr
+ ; gcrRegs +[x6]
+ mov w7, wzr
;; size=12 bbWeight=8 PerfScore 12.00
-G_M51974_IG09: ; bbWeight=64, gcrefRegs=008C {x2 x3 x7}, byrefRegs=0000 {}, byref, isz
- cbnz w8, G_M51974_IG05
+G_M51974_IG08: ; bbWeight=64, gcrefRegs=004C {x2 x3 x6}, byrefRegs=0000 {}, byref, isz
+ cbnz w7, G_M51974_IG04
;; size=4 bbWeight=64 PerfScore 64.00
-G_M51974_IG10: ; bbWeight=8, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x3 x7]
+G_M51974_IG09: ; bbWeight=8, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x3 x6]
add w0, w0, #1
movz w3, #0xD1FFAB1E
movk w3, #15 LSL #16
cmp w0, w3
blt G_M51974_IG03
;; size=20 bbWeight=8 PerfScore 24.00
-G_M51974_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51974_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
movz w0, #0xD1FFAB1E
movk w0, #76 LSL #16
cmp w1, w0
cset x0, eq
;; size=16 bbWeight=1 PerfScore 2.00
-G_M51974_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M51974_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
add sp, sp, #96
ret lr
;; size=12 bbWeight=1 PerfScore 2.50
-G_M51974_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M51974_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M51974_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51974_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -132,7 +129,7 @@ G_M51974_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 208, prolog size 16, PerfScore 416.61, instruction count 52, allocated bytes for code 208 (MethodHash=877634f9) for method LinqBenchmarks:Count00ForX():ubyte:this (Tier1-OSR)
+Total bytes of code 208, prolog size 16, PerfScore 578.61, instruction count 52, allocated bytes for code 208 (MethodHash=877634f9) for method LinqBenchmarks:Count00ForX():ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
+0 (0.00%) : 29475.dasm - PerfLabTests.LowLevelPerf:ForeachOverList100Elements():int:this (Tier1-OSR)
@@ -10,27 +10,26 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.LowLevelPerf>
-; V01 loc0 [V01,T11] ( 2, 4 ) ref -> x2 class-hnd <System.Collections.Generic.List`1[int]>
-; V02 loc1 [V02,T10] ( 2, 9 ) int -> x1
-; V03 loc2 [V03,T07] ( 3, 24 ) int -> x0
-; V04 loc3 [V04,T13] ( 4, 1.03) struct (24) [fp+0x38] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[int]>
+; V01 loc0 [V01,T09] ( 2, 4 ) ref -> x2 class-hnd <System.Collections.Generic.List`1[int]>
+; V02 loc1 [V02,T08] ( 2, 9 ) int -> x1
+; V03 loc2 [V03,T05] ( 3, 24 ) int -> x0
+; V04 loc3 [V04,T11] ( 4, 1.03) struct (24) [fp+0x38] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[int]>
;* V05 loc4 [V05 ] ( 0, 0 ) int -> zero-ref
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V07 tmp1 [V07,T03] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]>
-; V09 tmp3 [V09,T00] ( 3, 80 ) ubyte -> x8 "Inline return value spill temp"
+; V09 tmp3 [V09,T01] ( 3, 80 ) ubyte -> x7 "Inline return value spill temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[int]>
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref "field V08._list (fldOffset=0x0)" P-INDEP
;* V12 tmp6 [V12 ] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x8)" P-INDEP
-; V13 tmp7 [V13,T12] ( 2, 4 ) int -> x5 "field V08._version (fldOffset=0xc)" P-INDEP
+; V13 tmp7 [V13,T10] ( 2, 4 ) int -> x5 "field V08._version (fldOffset=0xc)" P-INDEP
;* V14 tmp8 [V14 ] ( 0, 0 ) int -> zero-ref "field V08._current (fldOffset=0x10)" P-INDEP
-; V15 tmp9 [V15,T06] ( 5, 26.01) ref -> x3 "V04.[000..008)"
-; V16 tmp10 [V16,T04] ( 8, 50.01) int -> x4 "V04.[008..012)"
+; V15 tmp9 [V15,T00] ( 5, 82.01) ref -> x3 "V04.[000..008)"
+; V16 tmp10 [V16,T03] ( 8, 50.01) int -> x4 "V04.[008..012)"
; V17 tmp11 [V17,T02] ( 3, 66.01) int -> x5 "V04.[012..016)"
-; V18 tmp12 [V18,T08] ( 3, 24 ) int -> x7 "V04.[016..020)"
-; V19 tmp13 [V19,T05] ( 3, 48 ) ref -> x7 "arr expr"
-; V20 cse0 [V20,T01] ( 2, 72 ) int -> x6 hoist "CSE - aggressive"
-; V21 cse1 [V21,T09] ( 3, 24 ) int -> x7 "CSE - aggressive"
+; V18 tmp12 [V18,T06] ( 3, 24 ) int -> x6 "V04.[016..020)"
+; V19 tmp13 [V19,T04] ( 3, 48 ) ref -> x6 "arr expr"
+; V20 cse0 [V20,T07] ( 3, 24 ) int -> x6 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -45,7 +44,7 @@ G_M6486_IG02: ; bbWeight=0.01, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, by
ldr x3, [fp, #0x38] // [V04 loc3]
; gcrRegs +[x3]
ldp w4, w5, [fp, #0x40] // [V04 loc3+0x08], [V04 loc3+0x0c]
- b G_M6486_IG04
+ b G_M6486_IG05
;; size=12 bbWeight=0.01 PerfScore 0.05
G_M6486_IG03: ; bbWeight=2, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x3]
@@ -53,45 +52,43 @@ G_M6486_IG03: ; bbWeight=2, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
mov x3, x2
; gcrRegs +[x3]
mov w4, wzr
- ;; size=12 bbWeight=2 PerfScore 8.00
+ b G_M6486_IG05
+ ;; size=16 bbWeight=2 PerfScore 10.00
G_M6486_IG04: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- ldr w6, [x3, #0x14]
- b G_M6486_IG06
- ;; size=8 bbWeight=8 PerfScore 32.00
-G_M6486_IG05: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- sxtw w1, w7
+ sxtw w1, w6
;; size=4 bbWeight=8 PerfScore 4.00
-G_M6486_IG06: ; bbWeight=64, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+G_M6486_IG05: ; bbWeight=64, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+ ldr w6, [x3, #0x14]
cmp w5, w6
- bne G_M6486_IG14
- ;; size=8 bbWeight=64 PerfScore 96.00
-G_M6486_IG07: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
- ldr w7, [x3, #0x10]
+ bne G_M6486_IG13
+ ;; size=12 bbWeight=64 PerfScore 288.00
+G_M6486_IG06: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+ ldr w6, [x3, #0x10]
+ cmp w4, w6
+ bhs G_M6486_IG07
+ ldr x6, [x3, #0x08]
+ ; gcrRegs +[x6]
+ ldr w7, [x6, #0x08]
cmp w4, w7
- bhs G_M6486_IG08
- ldr x7, [x3, #0x08]
- ; gcrRegs +[x7]
- ldr w8, [x7, #0x08]
- cmp w4, w8
- bhs G_M6486_IG13
- add x7, x7, #16
- ; gcrRegs -[x7]
- ; byrRegs +[x7]
- ldr w7, [x7, w4, UXTW #2]
- ; byrRegs -[x7]
+ bhs G_M6486_IG12
+ add x6, x6, #16
+ ; gcrRegs -[x6]
+ ; byrRegs +[x6]
+ ldr w6, [x6, w4, UXTW #2]
+ ; byrRegs -[x6]
add w4, w4, #1
- mov w8, #1
- b G_M6486_IG09
+ mov w7, #1
+ b G_M6486_IG08
;; size=48 bbWeight=8 PerfScore 140.00
-G_M6486_IG08: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- add w4, w7, #1
+G_M6486_IG07: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
+ add w4, w6, #1
+ mov w6, wzr
mov w7, wzr
- mov w8, wzr
;; size=12 bbWeight=8 PerfScore 12.00
-G_M6486_IG09: ; bbWeight=64, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
- cbnz w8, G_M6486_IG05
+G_M6486_IG08: ; bbWeight=64, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+ cbnz w7, G_M6486_IG04
;; size=4 bbWeight=64 PerfScore 64.00
-G_M6486_IG10: ; bbWeight=8, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M6486_IG09: ; bbWeight=8, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x3]
add w0, w0, #1
movz x3, #0xD1FFAB1E // data for <unknown class>:<unknown field>
@@ -101,20 +98,20 @@ G_M6486_IG10: ; bbWeight=8, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
cmp w0, w4
blt G_M6486_IG03
;; size=28 bbWeight=8 PerfScore 52.00
-G_M6486_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6486_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
mov w0, w1
;; size=4 bbWeight=1 PerfScore 0.50
-G_M6486_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M6486_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
add sp, sp, #96
ret lr
;; size=12 bbWeight=1 PerfScore 2.50
-G_M6486_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6486_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M6486_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6486_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -124,7 +121,7 @@ G_M6486_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-Total bytes of code 196, prolog size 16, PerfScore 411.11, instruction count 49, allocated bytes for code 196 (MethodHash=b0f1e6a9) for method PerfLabTests.LowLevelPerf:ForeachOverList100Elements():int:this (Tier1-OSR)
+Total bytes of code 196, prolog size 16, PerfScore 573.11, instruction count 49, allocated bytes for code 196 (MethodHash=b0f1e6a9) for method PerfLabTests.LowLevelPerf:ForeachOverList100Elements():int:this (Tier1-OSR)
; ============================================================
Unwind Info:
coreclr_tests.run.windows.arm64.checked.mch
-44 (-55.00%) : 528887.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 5, 4 ) float -> d0 single-def
+;* V00 loc0 [V00 ] ( 0, 0 ) float -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 4 ) float -> d0 "Single return block return value"
+; V02 tmp1 [V02,T00] ( 2, 4 ) float -> d0 "Single return block return value"
;
; Lcl frame size = 0
@@ -18,34 +18,19 @@ G_M53791_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
- fmov s16, #10.0000
- fcmp s0, s16
- ble G_M53791_IG04
- ;; size=32 bbWeight=1 PerfScore 8.00
-G_M53791_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M53791_IG05
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M53791_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- fmov s16, #10.0000
- fcmp s0, s16
- blo G_M53791_IG03
- fmov s16, #10.0000
- fcmp s0, s16
- bne G_M53791_IG03
- b G_M53791_IG03
- ;; size=28 bbWeight=0.50 PerfScore 3.00
-G_M53791_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M53791_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-Total bytes of code 80, prolog size 8, PerfScore 15.50, instruction count 20, allocated bytes for code 80 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -56,7 +41,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-43.75%) : 528835.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 4, 3.50) float -> d0 single-def
+;* V00 loc0 [V00 ] ( 0, 0 ) float -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
@@ -17,28 +17,19 @@ G_M53663_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
- fmov s16, #10.0000
- fcmp s0, s16
- bhs G_M53663_IG04
- ;; size=32 bbWeight=1 PerfScore 8.00
-G_M53663_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M53663_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- fmov s16, #10.0000
- fcmp s0, s16
- bne G_M53663_IG03
- b G_M53663_IG03
- ;; size=16 bbWeight=0.50 PerfScore 1.75
-Total bytes of code 64, prolog size 8, PerfScore 13.25, instruction count 16, allocated bytes for code 64 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -49,7 +40,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-43.75%) : 524892.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 4, 3.50) float -> d0 single-def
+; V00 loc0 [V00,T00] ( 2, 2 ) float -> d0 single-def
;* V01 loc1 [V01 ] ( 0, 0 ) float -> zero-ref
;* V02 loc2 [V02 ] ( 0, 0 ) float -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -19,28 +19,19 @@ G_M53663_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
- fmov s16, #10.0000
- fcmp s0, s16
- bhs G_M53663_IG04
- ;; size=32 bbWeight=1 PerfScore 8.00
-G_M53663_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M53663_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- fmov s16, #10.0000
- fcmp s0, s16
- bne G_M53663_IG03
- b G_M53663_IG03
- ;; size=16 bbWeight=0.50 PerfScore 1.75
-Total bytes of code 64, prolog size 8, PerfScore 13.25, instruction count 16, allocated bytes for code 64 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -51,7 +42,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+6.25%) : 404742.dasm - testout1:SubFunclet106():int (FullOpts)
@@ -15,14 +15,14 @@
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
; V05 loc5 [V05,T01] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T04] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T03] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
; V08 loc8 [V08,T00] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref single-def
+;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref single-def
@@ -31,60 +31,60 @@
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref single-def
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-;* V23 tmp14 [V23,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V23 tmp14 [V23,T20] ( 0, 0 ) int -> zero-ref single-def
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T08] ( 2, 2 ) int -> x1 single-def
+; V26 tmp17 [V26,T09] ( 2, 2 ) int -> x2 single-def
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-; V29 tmp20 [V29,T09] ( 2, 2 ) int -> x1 single-def
+; V29 tmp20 [V29,T10] ( 2, 2 ) int -> x2 single-def
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
-; V32 tmp23 [V32,T10] ( 2, 2 ) int -> x1 single-def
+; V32 tmp23 [V32,T11] ( 2, 2 ) int -> x2 single-def
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp26 [V35,T11] ( 2, 2 ) int -> x0 single-def
+;* V35 tmp26 [V35,T12] ( 0, 0 ) int -> zero-ref single-def
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
-; V38 tmp29 [V38,T12] ( 2, 2 ) int -> x0 single-def
+;* V38 tmp29 [V38,T13] ( 0, 0 ) int -> zero-ref single-def
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T13] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V44 tmp35 [V44,T21] ( 0, 0 ) int -> zero-ref single-def
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
-;* V47 tmp38 [V47,T14] ( 0, 0 ) int -> zero-ref single-def
+; V47 tmp38 [V47,T14] ( 2, 2 ) int -> x2 single-def
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
-;* V50 tmp41 [V50,T15] ( 0, 0 ) int -> zero-ref single-def
+; V50 tmp41 [V50,T15] ( 2, 2 ) int -> x1 single-def
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp44 [V53,T16] ( 0, 0 ) int -> zero-ref single-def
+; V53 tmp44 [V53,T16] ( 2, 2 ) int -> x1 single-def
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T23] ( 0, 0 ) int -> zero-ref single-def
+; V56 tmp47 [V56,T17] ( 2, 2 ) int -> x1 single-def
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp50 [V59,T18] ( 0, 0 ) int -> zero-ref single-def
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp53 [V62,T19] ( 0, 0 ) int -> zero-ref single-def
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp56 [V65,T22] ( 0, 0 ) int -> zero-ref single-def
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
-;* V68 tmp59 [V68,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref
-; V71 cse0 [V71,T05] ( 2, 2 ) int -> x0 "CSE - aggressive"
-;* V72 cse1 [V72,T20] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V73 cse2 [V73,T02] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V74 cse3 [V74,T06] ( 2, 2 ) int -> x1 "CSE - aggressive"
-; V75 cse4 [V75,T07] ( 2, 2 ) int -> x2 "CSE - aggressive"
-; V76 cse5 [V76,T03] ( 3, 3 ) long -> x1 "CSE - aggressive"
+; V71 cse0 [V71,T04] ( 2, 2 ) int -> x2 "CSE - aggressive"
+; V72 cse1 [V72,T05] ( 2, 2 ) int -> x0 "CSE - aggressive"
+; V73 cse2 [V73,T06] ( 3, 3 ) int -> x1 "CSE - aggressive"
+; V74 cse3 [V74,T07] ( 3, 3 ) int -> x3 "CSE - aggressive"
+; V75 cse4 [V75,T08] ( 3, 3 ) int -> x0 "CSE - aggressive"
+; V76 cse5 [V76,T02] ( 3, 3 ) long -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -136,21 +136,24 @@ G_M50161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str w1, [x19, #0x08]
strh w2, [x19, #0x0C]
ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ sxtw w2, w1
+ add w2, w2, #17
+ ldp w0, w3, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
+ add w2, w2, w3
+ add w2, w2, w0
+ add w1, w2, w1
+ add w1, w1, #17
+ add w1, w1, w3
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=168 bbWeight=1 PerfScore 31.50
+ ;; size=180 bbWeight=1 PerfScore 33.00
G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-Total bytes of code 192, prolog size 12, PerfScore 38.00, instruction count 48, allocated bytes for code 192 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
+Total bytes of code 204, prolog size 12, PerfScore 39.50, instruction count 51, allocated bytes for code 204 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
; ============================================================
Unwind Info:
@@ -161,7 +164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+6.25%) : 405159.dasm - testout1:SubFunclet106():int (FullOpts)
@@ -19,7 +19,7 @@
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref single-def
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref
-;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref single-def
+;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref single-def
@@ -28,61 +28,61 @@
;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref single-def
;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref
;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref
-;* V20 tmp15 [V20,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V20 tmp15 [V20,T21] ( 0, 0 ) int -> zero-ref single-def
;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp18 [V23,T09] ( 2, 2 ) int -> x1 single-def
+; V23 tmp18 [V23,T10] ( 2, 2 ) int -> x2 single-def
;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp21 [V26,T10] ( 2, 2 ) int -> x1 single-def
+; V26 tmp21 [V26,T11] ( 2, 2 ) int -> x2 single-def
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp23 [V28 ] ( 0, 0 ) int -> zero-ref
-; V29 tmp24 [V29,T11] ( 2, 2 ) int -> x1 single-def
+; V29 tmp24 [V29,T12] ( 2, 2 ) int -> x2 single-def
;* V30 tmp25 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp26 [V31 ] ( 0, 0 ) int -> zero-ref
-; V32 tmp27 [V32,T12] ( 2, 2 ) int -> x0 single-def
+;* V32 tmp27 [V32,T13] ( 0, 0 ) int -> zero-ref single-def
;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp30 [V35,T13] ( 2, 2 ) int -> x0 single-def
+;* V35 tmp30 [V35,T14] ( 0, 0 ) int -> zero-ref single-def
;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref
-;* V38 tmp33 [V38,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp35 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp36 [V41,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp36 [V41,T22] ( 0, 0 ) int -> zero-ref single-def
;* V42 tmp37 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp38 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp39 [V44,T15] ( 0, 0 ) int -> zero-ref single-def
+; V44 tmp39 [V44,T15] ( 2, 2 ) int -> x2 single-def
;* V45 tmp40 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp41 [V46 ] ( 0, 0 ) int -> zero-ref
-;* V47 tmp42 [V47,T16] ( 0, 0 ) int -> zero-ref single-def
+; V47 tmp42 [V47,T16] ( 2, 2 ) int -> x1 single-def
;* V48 tmp43 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp44 [V49 ] ( 0, 0 ) int -> zero-ref
-;* V50 tmp45 [V50,T17] ( 0, 0 ) int -> zero-ref single-def
+; V50 tmp45 [V50,T17] ( 2, 2 ) int -> x1 single-def
;* V51 tmp46 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp47 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp48 [V53,T24] ( 0, 0 ) int -> zero-ref single-def
+; V53 tmp48 [V53,T18] ( 2, 2 ) int -> x1 single-def
;* V54 tmp49 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp50 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp51 [V56,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp51 [V56,T19] ( 0, 0 ) int -> zero-ref single-def
;* V57 tmp52 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp53 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp54 [V59,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp54 [V59,T20] ( 0, 0 ) int -> zero-ref single-def
;* V60 tmp55 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp56 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp57 [V62,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp57 [V62,T23] ( 0, 0 ) int -> zero-ref single-def
;* V63 tmp58 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp59 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp60 [V65,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp60 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp61 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp62 [V67 ] ( 0, 0 ) int -> zero-ref
-; V68 cse0 [V68,T05] ( 2, 2 ) int -> x0 "CSE - aggressive"
-;* V69 cse1 [V69,T21] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V70 cse2 [V70,T03] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V71 cse3 [V71,T06] ( 2, 2 ) int -> x1 "CSE - aggressive"
-; V72 cse4 [V72,T07] ( 2, 2 ) int -> x2 "CSE - aggressive"
-; V73 cse5 [V73,T04] ( 3, 3 ) long -> x1 "CSE - aggressive"
-; V74 cse6 [V74,T08] ( 2, 2 ) long -> x0 "CSE - aggressive"
+; V68 cse0 [V68,T04] ( 2, 2 ) int -> x2 "CSE - aggressive"
+; V69 cse1 [V69,T05] ( 2, 2 ) int -> x0 "CSE - aggressive"
+; V70 cse2 [V70,T06] ( 3, 3 ) int -> x1 "CSE - aggressive"
+; V71 cse3 [V71,T07] ( 3, 3 ) int -> x3 "CSE - aggressive"
+; V72 cse4 [V72,T08] ( 3, 3 ) int -> x0 "CSE - aggressive"
+; V73 cse5 [V73,T03] ( 3, 3 ) long -> x1 "CSE - aggressive"
+; V74 cse6 [V74,T09] ( 2, 2 ) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -134,21 +134,24 @@ G_M50161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str w1, [x19, #0x08]
strh w2, [x19, #0x0C]
ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ sxtw w2, w1
+ add w2, w2, #17
+ ldp w0, w3, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
+ add w2, w2, w3
+ add w2, w2, w0
+ add w1, w2, w1
+ add w1, w1, #17
+ add w1, w1, w3
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=168 bbWeight=1 PerfScore 31.50
+ ;; size=180 bbWeight=1 PerfScore 33.00
G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-Total bytes of code 192, prolog size 12, PerfScore 38.00, instruction count 48, allocated bytes for code 192 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
+Total bytes of code 204, prolog size 12, PerfScore 39.50, instruction count 51, allocated bytes for code 204 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
; ============================================================
Unwind Info:
@@ -159,7 +162,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+7.14%) : 534960.dasm - Runtime_56495:TestEntryPoint():int (FullOpts)
@@ -33,8 +33,11 @@ G_M15390_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M15390_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ brk_windows #0
+ ;; size=4 bbWeight=1 PerfScore 1.00
-Total bytes of code 56, prolog size 8, PerfScore 11.50, instruction count 14, allocated bytes for code 56 (MethodHash=25a3c3e1) for method Runtime_56495:TestEntryPoint():int (FullOpts)
+Total bytes of code 60, prolog size 8, PerfScore 12.50, instruction count 15, allocated bytes for code 60 (MethodHash=25a3c3e1) for method Runtime_56495:TestEntryPoint():int (FullOpts)
; ============================================================
Unwind Info:
@@ -45,7 +48,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries.pmi.windows.arm64.checked.mch
-24 (-30.00%) : 276815.dasm - System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
@@ -7,10 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 3.50) int -> x0 single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) int -> x0 single-def
; V01 loc0 [V01,T02] ( 3, 2 ) ubyte -> x0
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 rat0 [V03,T00] ( 3, 6 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V03 rat0 [V03,T00] ( 3, 6 ) int -> x0 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 0
@@ -19,56 +19,27 @@ G_M3102_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M3102_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- sub w1, w0, #2
- cmp w1, #19
- bhi G_M3102_IG03
- mov w0, w1
- adr x1, [@RWD00]
- ldr w1, [x1, x0, LSL #2]
- adr x2, [G_M3102_IG02]
- add x1, x1, x2
- br x1
- ;; size=36 bbWeight=1 PerfScore 8.00
-G_M3102_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- sub w1, w0, #101
- cmp w1, #2
- bls G_M3102_IG05
- b G_M3102_IG05
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M3102_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ sub w0, w0, #2
+ cmp w0, #19
+ bhi G_M3102_IG04
+ movz w1, #0xD1FFAB1E
+ movk w1, #3 LSL #16
+ lsr w0, w1, w0
+ tbz w0, #0, G_M3102_IG04
+ ;; size=28 bbWeight=1 PerfScore 4.50
+G_M3102_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
- b G_M3102_IG06
+ b G_M3102_IG05
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M3102_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3102_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3102_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M3102_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-RWD00 dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
-
-Total bytes of code 80, prolog size 8, PerfScore 14.00, instruction count 20, allocated bytes for code 80 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
+Total bytes of code 56, prolog size 8, PerfScore 9.00, instruction count 14, allocated bytes for code 56 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -79,7 +50,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-32 (-13.33%) : 279586.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
@@ -7,7 +7,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 9, 4 ) int -> x19 single-def
+; V00 arg0 [V00,T00] ( 6, 4 ) int -> x19 single-def
; V01 arg1 [V01,T01] ( 4, 2 ) ref -> x20 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -26,11 +26,11 @@ G_M20631_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x20]
;; size=24 bbWeight=1 PerfScore 4.50
G_M20631_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ mov w0, #250
cmp w19, #0xD1FFAB1E
- bgt G_M20631_IG07
- cmp w19, #250
- bne G_M20631_IG06
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ccmp w19, w0, 0, le
+ bne G_M20631_IG04
+ ;; size=16 bbWeight=1 PerfScore 2.50
G_M20631_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -93,23 +93,10 @@ G_M20631_IG05: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs +[x0]
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x21]
- ;; size=60 bbWeight=0 PerfScore 0.00
-G_M20631_IG06: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x20]
- sub w0, w19, #0xD1FFAB1E
- cmp w0, #1
- bls G_M20631_IG04
- b G_M20631_IG04
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M20631_IG07: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- mov w0, #0xD1FFAB1E
- cmp w19, #0xD1FFAB1E
- ccmp w19, w0, z, ne
- beq G_M20631_IG04
- b G_M20631_IG04
- ;; size=20 bbWeight=0 PerfScore 0.00
+ brk_windows #0
+ ;; size=64 bbWeight=0 PerfScore 0.00
-Total bytes of code 240, prolog size 16, PerfScore 12.50, instruction count 60, allocated bytes for code 240 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
+Total bytes of code 208, prolog size 16, PerfScore 12.00, instruction count 52, allocated bytes for code 208 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
; ============================================================
Unwind Info:
@@ -120,7 +107,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-12.00%) : 4983.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeint:int (FullOpts)
@@ -10,7 +10,7 @@
;
; V00 arg0 [V00,T06] ( 3, 6 ) byref -> x0 single-def
; V01 arg1 [V01,T04] ( 4, 6.28) int -> x1 ld-addr-op single-def
-; V02 arg2 [V02,T05] ( 4, 6.28) int -> x2 ld-addr-op single-def
+; V02 arg2 [V02,T05] ( 3, 6 ) int -> x2 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> x3 single-def
; V04 loc0 [V04,T00] ( 7, 19.72) int -> x3
; V05 loc1 [V05,T07] ( 2, 8 ) byref -> x4
@@ -18,7 +18,7 @@
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.56) int -> x5 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.56) int -> x4 "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> x4 "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> x4 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -48,7 +48,7 @@ G_M34838_IG04: ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, b
;; size=8 bbWeight=0.28 PerfScore 0.42
G_M34838_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w2, w4
- bge G_M34838_IG11
+ bge G_M34838_IG08
;; size=8 bbWeight=4 PerfScore 6.00
G_M34838_IG06: ; bbWeight=1.72, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
@@ -71,16 +71,8 @@ G_M34838_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M34838_IG11: ; bbWeight=0.28, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w2, w4
- ble G_M34838_IG08
- ;; size=8 bbWeight=0.28 PerfScore 0.42
-G_M34838_IG12: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- b G_M34838_IG08
- ;; size=4 bbWeight=0.06 PerfScore 0.06
-Total bytes of code 100, prolog size 8, PerfScore 47.45, instruction count 25, allocated bytes for code 100 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+Total bytes of code 88, prolog size 8, PerfScore 46.97, instruction count 22, allocated bytes for code 88 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -91,7 +83,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 188380.dasm - System.Xml.EncodingStreamWrapper:FillBuffer(int):this (FullOpts)
+0 (0.00%) : 194412.dasm - System.Xml.XmlConvert:CreateException(System.String,System.String,int,int,int):System.Exception (FullOpts)
@@ -42,9 +42,55 @@ G_M23253_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov w22, w4
;; size=40 bbWeight=1 PerfScore 7.50
G_M23253_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz w2, G_M23253_IG05
+ cbnz w2, G_M23253_IG05
;; size=4 bbWeight=1 PerfScore 1.00
G_M23253_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ str x20, [fp, #0x18] // [V08 tmp3]
+ add x20, fp, #24 // [V08 tmp3]
+ ; gcrRegs -[x20]
+ ; byrRegs +[x20]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[x0]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ mov x2, x20
+ ; byrRegs +[x2]
+ mov w3, #1
+ mov x1, x19
+ ; gcrRegs +[x1]
+ mov x0, xzr
+ ; gcrRegs -[x0]
+ movz x4, #0xD1FFAB1E // code for System.String:FormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.String
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x1 x19] +[x0]
+ ; byrRegs -[x2 x20]
+ mov x1, x0
+ ; gcrRegs +[x1]
+ mov x0, x21
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0-x1]
+ mov x0, x21
+ ; gcrRegs +[x0]
+ ;; size=96 bbWeight=0.50 PerfScore 9.50
+G_M23253_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x50
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
+G_M23253_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x21] +[x19-x20]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -118,52 +164,6 @@ G_M23253_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov x0, x23
; gcrRegs +[x0]
;; size=184 bbWeight=0.50 PerfScore 16.25
-G_M23253_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x23, x24, [sp, #0x40]
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
- ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M23253_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x23] +[x19-x20]
- str x20, [fp, #0x18] // [V08 tmp3]
- add x20, fp, #24 // [V08 tmp3]
- ; gcrRegs -[x20]
- ; byrRegs +[x20]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
- ; gcrRegs +[x0]
- mov x21, x0
- ; gcrRegs +[x21]
- mov x2, x20
- ; byrRegs +[x2]
- mov w3, #1
- mov x1, x19
- ; gcrRegs +[x1]
- mov x0, xzr
- ; gcrRegs -[x0]
- movz x4, #0xD1FFAB1E // code for System.String:FormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.String
- movk x4, #0xD1FFAB1E LSL #16
- movk x4, #0xD1FFAB1E LSL #32
- ldr x4, [x4]
- blr x4
- ; gcrRegs -[x1 x19] +[x0]
- ; byrRegs -[x2 x20]
- mov x1, x0
- ; gcrRegs +[x1]
- mov x0, x21
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0-x1]
- mov x0, x21
- ; gcrRegs +[x0]
- ;; size=96 bbWeight=0.50 PerfScore 9.50
G_M23253_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
+8 (+0.28%) : 114470.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeCoverageInstrumenter:GetCreatePayloadStatement(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SourceSpan],Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.SyntheticBoundNodeFactory,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider):Microsoft.CodeAnalysis.VisualBasic.BoundExpressionStatement (FullOpts)
@@ -95,7 +95,7 @@
; V84 tmp67 [V84,T60] ( 5, 2.50) ref -> x2
; V85 tmp68 [V85,T33] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V86 tmp69 [V86,T53] ( 3, 3 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V87 tmp70 [V87,T117] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V87 tmp70 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V88 tmp71 [V88,T92] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
;* V89 tmp72 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.DiagnosticInfo>
;* V90 tmp73 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>>
@@ -171,7 +171,7 @@
; V160 tmp143 [V160,T66] ( 3, 2 ) int -> x0
;* V161 tmp144 [V161 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V162 tmp145 [V162,T79] ( 2, 2 ) ubyte -> x14 "Inline return value spill temp"
-;* V163 tmp146 [V163,T118] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V163 tmp146 [V163,T117] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
; V164 tmp147 [V164,T102] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
;* V165 tmp148 [V165 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V166 tmp149 [V166 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -199,7 +199,7 @@
;* V188 tmp171 [V188 ] ( 0, 0 ) ref -> zero-ref "field V20.array (fldOffset=0x0)" P-INDEP
;* V189 tmp172 [V189 ] ( 0, 0 ) ref -> zero-ref single-def "field V24.array (fldOffset=0x0)" P-INDEP
;* V190 tmp173 [V190,T114] ( 0, 0 ) ref -> zero-ref single-def "field V25._array (fldOffset=0x0)" P-INDEP
-;* V191 tmp174 [V191,T119] ( 0, 0 ) int -> zero-ref single-def "field V25._index (fldOffset=0x8)" P-INDEP
+;* V191 tmp174 [V191,T118] ( 0, 0 ) int -> zero-ref single-def "field V25._index (fldOffset=0x8)" P-INDEP
;* V192 tmp175 [V192 ] ( 0, 0 ) ref -> zero-ref single-def "field V55._nodeOrParent (fldOffset=0x0)" P-INDEP
;* V193 tmp176 [V193 ] ( 0, 0 ) ref -> zero-ref single-def "field V55._token (fldOffset=0x8)" P-INDEP
;* V194 tmp177 [V194 ] ( 0, 0 ) int -> zero-ref single-def "field V55._position (fldOffset=0x10)" P-INDEP
@@ -243,8 +243,8 @@
; V232 tmp215 [V232,T93] ( 3, 1.50) int -> [fp+0x78] "V53.[020..024)"
;* V233 tmp216 [V233,T115] ( 0, 0 ) ref -> zero-ref single-def "V68.[000..008)"
;* V234 tmp217 [V234,T116] ( 0, 0 ) ref -> zero-ref single-def "V68.[008..016)"
-;* V235 tmp218 [V235,T120] ( 0, 0 ) int -> zero-ref single-def "V68.[016..020)"
-;* V236 tmp219 [V236,T121] ( 0, 0 ) int -> zero-ref single-def "V68.[020..024)"
+;* V235 tmp218 [V235,T119] ( 0, 0 ) int -> zero-ref single-def "V68.[016..020)"
+;* V236 tmp219 [V236,T120] ( 0, 0 ) int -> zero-ref single-def "V68.[020..024)"
;* V237 tmp220 [V237 ] ( 0, 0 ) ref -> zero-ref single-def "V56.[000..008)"
;* V238 tmp221 [V238 ] ( 0, 0 ) ref -> zero-ref single-def "V56.[008..016)"
;* V239 tmp222 [V239 ] ( 0, 0 ) int -> zero-ref single-def "V56.[016..020)"
@@ -261,7 +261,7 @@
; V250 tmp233 [V250,T76] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
; V251 tmp234 [V251,T57] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
; V252 tmp235 [V252,T77] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-;* V253 cse0 [V253,T122] ( 0, 0 ) long -> zero-ref "CSE - conservative"
+;* V253 cse0 [V253,T121] ( 0, 0 ) long -> zero-ref "CSE - conservative"
; V254 cse1 [V254,T58] ( 3, 3 ) long -> x25 "CSE - conservative"
; V255 cse2 [V255,T27] ( 3, 6 ) ref -> x1 "CSE - moderate"
; V256 cse3 [V256,T90] ( 3, 1.50) ref -> x6 "CSE - conservative"
@@ -328,7 +328,7 @@ G_M20504_IG03: ; bbWeight=0.50, gcrefRegs=3E80002 {x1 x19 x21 x22 x23 x24
; gcrRegs -[x1]
mov x28, x0
; gcrRegs +[x28]
- b G_M20504_IG32
+ b G_M20504_IG33
;; size=64 bbWeight=0.50 PerfScore 9.25
G_M20504_IG04: ; bbWeight=0.50, gcrefRegs=7F80000 {x19 x20 x21 x22 x23 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x28] +[x20 x26]
@@ -570,10 +570,10 @@ G_M20504_IG19: ; bbWeight=0.50, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x
; gcrRegs -[x0]
ldr x0, [x28, #0x38]
; gcrRegs +[x0]
- cbz x0, G_M20504_IG45
+ cbz x0, G_M20504_IG46
ldr x14, [x0, #0x08]
; gcrRegs +[x14]
- cbnz x14, G_M20504_IG44
+ cbnz x14, G_M20504_IG45
add x14, x0, #8
; gcrRegs -[x14]
; byrRegs +[x14]
@@ -582,7 +582,7 @@ G_M20504_IG19: ; bbWeight=0.50, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x28]
; byrRegs -[x14]
- b G_M20504_IG45
+ b G_M20504_IG46
;; size=60 bbWeight=0.50 PerfScore 10.00
G_M20504_IG20: ; bbWeight=1.00, gcVars=00000000000000000000004000080004 {V14 V28 V29}, gcrefRegs=17F80000 {x19 x20 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x20 x28]
@@ -604,19 +604,16 @@ G_M20504_IG23: ; bbWeight=0.50, gcVars=00000002010000000000004004000000 {
; gcrRegs -[x26]
; byrRegs -[x0 x4]
; GC ptr vars -{V05 V28 V29 V30 V34 V36} +{V58 V88 V97 V214 V215}
- ldr x5, [fp, #0x30] // [V58 tmp41]
- ; gcrRegs +[x5]
- ldr x0, [x5, #0x10]
- ; gcrRegs +[x0]
- cbz x0, G_M20504_IG30
- mov x2, x5
+ cbnz w0, G_M20504_IG31
+ ldr x2, [fp, #0x30] // [V58 tmp41]
; gcrRegs +[x2]
ldp x3, x26, [fp, #0x18] // [V215 tmp198], [V214 tmp197]
; gcrRegs +[x3 x26]
+ stp x3, x26, [fp, #0x18] // [V215 tmp198], [V214 tmp197]
b G_M20504_IG25
- ;; size=24 bbWeight=0.50 PerfScore 5.25
+ ;; size=20 bbWeight=0.50 PerfScore 4.00
G_M20504_IG24: ; bbWeight=0.00, gcVars=00000000000000000000004000080024 {V14 V28 V29 V34}, gcrefRegs=17F80000 {x19 x20 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x2-x3 x5]
+ ; gcrRegs -[x2-x3]
; GC ptr vars -{V58 V88 V97 V214 V215} +{V02 V05 V28 V29 V34}
sxtw x1, w7
movz x0, #0xD1FFAB1E
@@ -636,22 +633,51 @@ G_M20504_IG24: ; bbWeight=0.00, gcVars=00000000000000000000004000080024 {
; gcrRegs +[x4]
b G_M20504_IG17
;; size=40 bbWeight=0.00 PerfScore 0.01
-G_M20504_IG25: ; bbWeight=0.50, gcVars=00000000000000000000004004000000 {V14 V58}, gcrefRegs=17F8000D {x0 x2 x3 x19 x20 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x4] +[x0 x2-x3]
- ; GC ptr vars -{V28 V29} +{V58}
- cbz x26, G_M20504_IG29
+G_M20504_IG25: ; bbWeight=0.50, gcVars=00000002010000000000004004000000 {V14 V58 V214 V215}, gcrefRegs=13F80000 {x19 x20 x21 x22 x23 x24 x25 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x4 x26]
+ ; GC ptr vars -{V28 V29} +{V58 V88 V97 V214 V215}
+ ldr x5, [fp, #0x30] // [V58 tmp41]
+ ; gcrRegs +[x5]
+ ldr x0, [x5, #0x10]
+ ; gcrRegs +[x0]
+ cbz x0, G_M20504_IG31
+ mov x2, x5
+ ; gcrRegs +[x2]
+ ldp x3, x26, [fp, #0x18] // [V215 tmp198], [V214 tmp197]
+ ; gcrRegs +[x3 x26]
b G_M20504_IG27
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=24 bbWeight=0.50 PerfScore 5.25
G_M20504_IG26: ; bbWeight=0.46, gcVars=00000000000000000000004000080004 {V14 V28 V29}, gcrefRegs=17F80010 {x4 x19 x20 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x2-x3] +[x4]
- ; GC ptr vars -{V58} +{V02 V28 V29}
+ ; gcrRegs -[x0 x2-x3 x5] +[x4]
+ ; GC ptr vars -{V58 V88 V97 V214 V215} +{V02 V28 V29}
sxtw w7, w5
ldr w5, [fp, #0xC4] // [V30 tmp13]
b G_M20504_IG09
;; size=12 bbWeight=0.46 PerfScore 1.61
-G_M20504_IG27: ; bbWeight=0.50, gcVars=00000000000000000000004004000000 {V14 V58}, gcrefRegs=17F8000D {x0 x2 x3 x19 x20 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref
+G_M20504_IG27: ; bbWeight=0.50, gcVars=00000000000000000000004004000000 {V14 V58}, gcrefRegs=17F8000D {x0 x2 x3 x19 x20 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x4] +[x0 x2-x3]
; GC ptr vars -{V02 V28 V29} +{V58}
+ cbz x26, G_M20504_IG30
+ b G_M20504_IG29
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M20504_IG28: ; bbWeight=0.00, gcVars=00000000000000000000004040080024 {V14 V28 V29 V34 V36}, gcrefRegs=17F80000 {x19 x20 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0011 {x0 x4}, gcvars, byref
+ ; gcrRegs -[x0 x2-x3]
+ ; byrRegs +[x0 x4]
+ ; GC ptr vars -{V58} +{V02 V05 V28 V29 V30 V34 V36}
+ mov x1, x4
+ ; byrRegs +[x1]
+ movz x4, #0xD1FFAB1E // code for <unknown method>
+ ; byrRegs -[x4]
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; byrRegs -[x0-x1]
+ b G_M20504_IG15
+ ;; size=28 bbWeight=0.00 PerfScore 0.00
+G_M20504_IG29: ; bbWeight=0.50, gcVars=00000000000000000000004004000000 {V14 V58}, gcrefRegs=17F8000D {x0 x2 x3 x19 x20 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x0 x2-x3]
+ ; GC ptr vars -{V02 V05 V28 V29 V30 V34 V36} +{V58}
str x3, [fp, #0x18] // [V215 tmp198]
; GC ptr vars +{V215}
mov x1, x26
@@ -666,26 +692,9 @@ G_M20504_IG27: ; bbWeight=0.50, gcVars=00000000000000000000004004000000 {
; gcrRegs +[x2]
ldr x3, [fp, #0x18] // [V215 tmp198]
; gcrRegs +[x3]
- b G_M20504_IG29
- ;; size=40 bbWeight=0.50 PerfScore 6.00
-G_M20504_IG28: ; bbWeight=0.00, gcVars=00000000000000000000004040080024 {V14 V28 V29 V34 V36}, gcrefRegs=17F80000 {x19 x20 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0011 {x0 x4}, gcvars, byref
- ; gcrRegs -[x2-x3] +[x26]
- ; byrRegs +[x0 x4]
- ; GC ptr vars -{V58 V215} +{V02 V05 V28 V29 V30 V34 V36}
- mov x1, x4
- ; byrRegs +[x1]
- movz x4, #0xD1FFAB1E // code for <unknown method>
- ; byrRegs -[x4]
- movk x4, #0xD1FFAB1E LSL #16
- movk x4, #0xD1FFAB1E LSL #32
- ldr x4, [x4]
- blr x4
- ; byrRegs -[x0-x1]
- b G_M20504_IG15
- ;; size=28 bbWeight=0.00 PerfScore 0.00
-G_M20504_IG29: ; bbWeight=0.50, gcVars=00000000000000000000004004000000 {V14 V58}, gcrefRegs=13F8000C {x2 x3 x19 x20 x21 x22 x23 x24 x25 x28}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x26] +[x2-x3]
- ; GC ptr vars -{V02 V05 V28 V29 V30 V34 V36} +{V58}
+ ;; size=36 bbWeight=0.50 PerfScore 5.50
+G_M20504_IG30: ; bbWeight=0.50, gcVars=00000000000000000000004004000000 {V14 V58}, gcrefRegs=13F8000C {x2 x3 x19 x20 x21 x22 x23 x24 x25 x28}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars -{V215}
mov x0, x2
; gcrRegs +[x0]
mov x1, x3
@@ -699,7 +708,7 @@ G_M20504_IG29: ; bbWeight=0.50, gcVars=00000000000000000000004004000000 {
blr x2
; gcrRegs -[x0-x1 x3]
;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M20504_IG30: ; bbWeight=0.50, gcrefRegs=13F80000 {x19 x20 x21 x22 x23 x24 x25 x28}, byrefRegs=0000 {}, byref
+G_M20504_IG31: ; bbWeight=0.50, gcrefRegs=13F80000 {x19 x20 x21 x22 x23 x24 x25 x28}, byrefRegs=0000 {}, byref
ldr x0, [x20, #0x08]
; gcrRegs +[x0]
ldrsb wzr, [x0]
@@ -722,7 +731,7 @@ G_M20504_IG30: ; bbWeight=0.50, gcrefRegs=13F80000 {x19 x20 x21 x22 x23 x
mov x28, x0
; gcrRegs +[x28]
;; size=64 bbWeight=0.50 PerfScore 9.50
-G_M20504_IG31: ; bbWeight=0.50, gcrefRegs=13F80000 {x19 x20 x21 x22 x23 x24 x25 x28}, byrefRegs=0000 {}, byref
+G_M20504_IG32: ; bbWeight=0.50, gcrefRegs=13F80000 {x19 x20 x21 x22 x23 x24 x25 x28}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x20
; gcrRegs +[x0]
@@ -734,7 +743,7 @@ G_M20504_IG31: ; bbWeight=0.50, gcrefRegs=13F80000 {x19 x20 x21 x22 x23 x
blr x1
; gcrRegs -[x0 x20]
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M20504_IG32: ; bbWeight=1, gcrefRegs=13E80000 {x19 x21 x22 x23 x24 x25 x28}, byrefRegs=0000 {}, byref, isz
+G_M20504_IG33: ; bbWeight=1, gcrefRegs=13E80000 {x19 x21 x22 x23 x24 x25 x28}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x10]
; gcrRegs +[x20]
movz x0, #0xD1FFAB1E
@@ -884,13 +893,13 @@ G_M20504_IG32: ; bbWeight=1, gcrefRegs=13E80000 {x19 x21 x22 x23 x24 x25
; gcrRegs -[x15 x24]
; byrRegs -[x14]
tst w0, #255
- beq G_M20504_IG34
+ beq G_M20504_IG35
;; size=388 bbWeight=1 PerfScore 92.50
-G_M20504_IG33: ; bbWeight=0.50, gcrefRegs=CD80000 {x19 x20 x22 x23 x26 x27}, byrefRegs=0000 {}, byref
+G_M20504_IG34: ; bbWeight=0.50, gcrefRegs=CD80000 {x19 x20 x22 x23 x26 x27}, byrefRegs=0000 {}, byref
mov w14, #1
strb w14, [x20, #0x11]
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M20504_IG34: ; bbWeight=1, gcrefRegs=CD80000 {x19 x20 x22 x23 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M20504_IG35: ; bbWeight=1, gcrefRegs=CD80000 {x19 x20 x22 x23 x26 x27}, byrefRegs=0000 {}, byref, isz
add x14, x20, #24
; byrRegs +[x14]
mov x15, x27
@@ -940,7 +949,7 @@ G_M20504_IG34: ; bbWeight=1, gcrefRegs=CD80000 {x19 x20 x22 x23 x26 x27},
; gcrRegs -[x0]
cbnz w0, G_M20504_IG64
;; size=128 bbWeight=1 PerfScore 30.00
-G_M20504_IG35: ; bbWeight=0.50, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
+G_M20504_IG36: ; bbWeight=0.50, gcrefRegs=4780000 {x19 x20 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x26, #0x10]
sub w0, w0, #59
cmp w0, #1
@@ -951,19 +960,19 @@ G_M20504_IG35: ; bbWeight=0.50, gcrefRegs=4780000 {x19 x20 x21 x22 x26},
ldr x24, [x23, #0x18]
; gcrRegs +[x24]
;; size=28 bbWeight=0.50 PerfScore 4.50
...
libraries_tests.run.windows.arm64.Release.mch
-20 (-20.83%) : 153794.dasm - Roslyn.Utilities.AsyncLazy1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
@@ -12,12 +12,12 @@
; V00 this [V00,T00] ( 7, 6 ) ref -> x0 this class-hnd single-def <Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]>
; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x1 class-hnd single-def <System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 8, 4 ) int -> x2 "Inline stloc first use temp"
+; V03 tmp1 [V03,T02] ( 4, 4 ) int -> x14 "Inline stloc first use temp"
;* V04 tmp2 [V04,T03] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;
; Lcl frame size = 0
-G_M46606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M46606_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
@@ -29,11 +29,13 @@ G_M46606_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
add x14, x1, #52
; gcrRegs -[x14]
; byrRegs +[x14]
- ldapr w2, [x14]
- tbnz w2, #21, G_M46606_IG03
- tbnz w2, #22, G_M46606_IG03
- tbz w2, #24, G_M46606_IG07
+ ldapr w14, [x14]
+ ; byrRegs -[x14]
+ tbnz w14, #21, G_M46606_IG03
+ tbnz w14, #22, G_M46606_IG03
+ tbz w14, #24, G_M46606_IG03
add x14, x0, #24
+ ; byrRegs +[x14]
mov x15, x1
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
@@ -58,16 +60,8 @@ G_M46606_IG06: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0 PerfScore 0.00
-G_M46606_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0] +[x1]
- tbnz w2, #23, G_M46606_IG03
- tbnz w2, #17, G_M46606_IG03
- tbnz w2, #16, G_M46606_IG03
- tbz w2, #25, G_M46606_IG03
- b G_M46606_IG03
- ;; size=20 bbWeight=0 PerfScore 0.00
-Total bytes of code 96, prolog size 8, PerfScore 17.50, instruction count 24, allocated bytes for code 96 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
+Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
; ============================================================
Unwind Info:
@@ -78,7 +72,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-20.83%) : 55011.dasm - Roslyn.Utilities.AsyncLazy1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task1[System.Canon]):System.Threading.Tasks.Task`1[System.Canon]:this (Tier1)
@@ -12,7 +12,7 @@
; V00 this [V00,T00] ( 6, 4.70) ref -> x0 this class-hnd single-def <Roslyn.Utilities.AsyncLazy`1[System.__Canon]>
; V01 arg1 [V01,T01] ( 5, 3.70) ref -> x1 class-hnd single-def <System.Threading.Tasks.Task`1[System.__Canon]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 8, 2.36) int -> x2 "Inline stloc first use temp"
+; V03 tmp1 [V03,T03] ( 4, 2.26) int -> x14 "Inline stloc first use temp"
;* V04 tmp2 [V04,T04] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V05 cse0 [V05,T02] ( 3, 2.43) ref -> x14 "CSE - aggressive"
;
@@ -41,11 +41,13 @@ G_M21386_IG05: ; bbWeight=0.57, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs -[x14] +[x1]
add x14, x1, #52
; byrRegs +[x14]
- ldapr w2, [x14]
- tbnz w2, #21, G_M21386_IG06
- tbnz w2, #22, G_M21386_IG06
- tbz w2, #24, G_M21386_IG08
+ ldapr w14, [x14]
+ ; byrRegs -[x14]
+ tbnz w14, #21, G_M21386_IG06
+ tbnz w14, #22, G_M21386_IG06
+ tbz w14, #24, G_M21386_IG06
add x14, x0, #24
+ ; byrRegs +[x14]
mov x15, x1
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
@@ -62,16 +64,8 @@ G_M21386_IG07: ; bbWeight=0.57, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.57 PerfScore 1.13
-G_M21386_IG08: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
- tbnz w2, #23, G_M21386_IG06
- tbnz w2, #17, G_M21386_IG06
- tbnz w2, #16, G_M21386_IG06
- tbz w2, #25, G_M21386_IG06
- b G_M21386_IG06
- ;; size=20 bbWeight=0.02 PerfScore 0.12
-Total bytes of code 96, prolog size 8, PerfScore 13.50, instruction count 24, allocated bytes for code 96 (MethodHash=7308ac75) for method Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
+Total bytes of code 76, prolog size 8, PerfScore 13.38, instruction count 19, allocated bytes for code 76 (MethodHash=7308ac75) for method Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
; ============================================================
Unwind Info:
@@ -82,7 +76,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-20.83%) : 86739.dasm - Roslyn.Utilities.AsyncLazy1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
@@ -12,12 +12,12 @@
; V00 this [V00,T00] ( 7, 6 ) ref -> x0 this class-hnd single-def <Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]>
; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x1 class-hnd single-def <System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 8, 4.11) int -> x2 "Inline stloc first use temp"
+; V03 tmp1 [V03,T02] ( 4, 4 ) int -> x14 "Inline stloc first use temp"
;* V04 tmp2 [V04,T03] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;
; Lcl frame size = 0
-G_M46606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M46606_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
@@ -25,15 +25,17 @@ G_M46606_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
; gcrRegs +[x0-x1]
ldr x14, [x0, #0x18]
; gcrRegs +[x14]
- cbnz x14, G_M46606_IG06
+ cbnz x14, G_M46606_IG05
add x14, x1, #52
; gcrRegs -[x14]
; byrRegs +[x14]
- ldapr w2, [x14]
- tbnz w2, #21, G_M46606_IG03
- tbnz w2, #22, G_M46606_IG03
- tbz w2, #24, G_M46606_IG05
+ ldapr w14, [x14]
+ ; byrRegs -[x14]
+ tbnz w14, #21, G_M46606_IG03
+ tbnz w14, #22, G_M46606_IG03
+ tbz w14, #24, G_M46606_IG03
add x14, x0, #24
+ ; byrRegs +[x14]
mov x15, x1
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
@@ -50,24 +52,16 @@ G_M46606_IG04: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M46606_IG05: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
- tbnz w2, #23, G_M46606_IG03
- tbnz w2, #17, G_M46606_IG03
- tbnz w2, #16, G_M46606_IG03
- tbz w2, #25, G_M46606_IG03
- b G_M46606_IG03
- ;; size=20 bbWeight=0.03 PerfScore 0.14
-G_M46606_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1] +[x0]
+G_M46606_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x1]
ldr x0, [x0, #0x18]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M46606_IG07: ; bbWeight=0, epilog, nogc, extend
+G_M46606_IG06: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 96, prolog size 8, PerfScore 17.64, instruction count 24, allocated bytes for code 96 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
+Total bytes of code 76, prolog size 8, PerfScore 17.50, instruction count 19, allocated bytes for code 76 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
; ============================================================
Unwind Info:
@@ -78,7 +72,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+40 (+3.83%) : 594608.dasm - Roslyn.Utilities.EnumerableExtensions:SelectAsArraySystem.Collections.Generic.KeyValuePair2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot],System.ValueTuple2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]:System.Collections.Immutable.ImmutableArray1[System.ValueTuple2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]] (Tier1-OSR)
@@ -11,12 +11,12 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IReadOnlyCollection`1[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
-; V01 arg1 [V01,T24] ( 7, 3.01) ref -> x19 class-hnd single-def <System.Func`2[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot],System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
+; V01 arg1 [V01,T21] ( 7, 11.40) ref -> x19 class-hnd single-def <System.Func`2[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot],System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
; V02 loc0 [V02,T20] ( 3, 100.00) ref -> x20 class-hnd exact <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
-; V03 loc1 [V03,T19] ( 12, 106.20) ref -> [fp+0x188] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
+; V03 loc1 [V03,T19] ( 14, 115.57) ref -> [fp+0x188] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
; V04 loc2 [V04 ] ( 10, 383.12) struct (24) [fp+0x170] do-not-enreg[XS] addr-exposed tier0-frame <System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T30] ( 4, 0 ) struct (24) [fp+0x40] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
+; V06 tmp1 [V06,T27] ( 4, 0 ) struct (24) [fp+0x40] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp"
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedDictionary`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
@@ -26,7 +26,7 @@
; V13 tmp8 [V13,T10] ( 5, 200.00) int -> x0 "guarded devirt return temp"
;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedDictionary`2+Enumerator[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedDictionary`2+Enumerator[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
-;* V16 tmp11 [V16,T26] ( 0, 0 ) int -> zero-ref single-def "OSR entry state var"
+;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V17 tmp12 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
;* V19 tmp14 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
@@ -52,47 +52,45 @@
;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V40 tmp35 [V40,T11] ( 2, 3.83) byref -> x14 "Inlining Arg"
; V41 tmp36 [V41,T12] ( 6, 191.56) struct (24) [fp+0x28] do-not-enreg[S] must-init "Inline return value spill temp" <System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
-; V42 tmp37 [V42,T05] ( 4, 383.12) byref -> x23 "Inlining Arg"
+; V42 tmp37 [V42,T05] ( 4, 383.12) byref -> x21 "Inlining Arg"
;* V43 tmp38 [V43 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
;* V44 tmp39 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
;* V45 tmp40 [V45 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
;* V46 tmp41 [V46 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V47 tmp42 [V47 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
;* V48 tmp43 [V48 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot>
-; V49 tmp44 [V49,T00] ( 16,1149.36) ref -> x27 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
-; V50 tmp45 [V50,T08] ( 10, 287.34) int -> x28 "Inline stloc first use temp"
+; V49 tmp44 [V49,T00] ( 16,1149.36) ref -> x25 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]>
+; V50 tmp45 [V50,T08] ( 10, 287.34) int -> x26 "Inline stloc first use temp"
;* V51 tmp46 [V51 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V52 tmp47 [V52,T28] ( 6, 0 ) int -> x1 "Inline return value spill temp"
-; V53 tmp48 [V53,T29] ( 6, 0 ) int -> x1 "Inlining Arg"
+; V52 tmp47 [V52,T25] ( 6, 0 ) int -> x1 "Inline return value spill temp"
+; V53 tmp48 [V53,T26] ( 6, 0 ) int -> x1 "Inlining Arg"
; V54 tmp49 [V54,T04] ( 4, 400.00) byref -> registers "Inlining Arg"
-;* V55 tmp50 [V55,T21] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V55 tmp50 [V55,T22] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V56 tmp51 [V56 ] ( 0, 0 ) ref -> zero-ref "field V48.VariableState (fldOffset=0x0)" P-INDEP
;* V57 tmp52 [V57 ] ( 0, 0 ) int -> zero-ref "field V48.SharedStateIndex (fldOffset=0x8)" P-INDEP
;* V58 tmp53 [V58 ] ( 0, 0 ) int -> zero-ref "V32.[000..004)"
-; V59 tmp54 [V59,T17] ( 4, 191.56) int -> x24 "V45.[000..004)"
-; V60 tmp55 [V60,T16] ( 4, 191.56) ref -> x25 "V45.[008..016)"
-; V61 tmp56 [V61,T18] ( 4, 191.56) int -> x26 "V45.[016..020)"
+; V59 tmp54 [V59,T17] ( 4, 191.56) int -> x22 "V45.[000..004)"
+; V60 tmp55 [V60,T16] ( 4, 191.56) ref -> x23 "V45.[008..016)"
+; V61 tmp56 [V61,T18] ( 4, 191.56) int -> x24 "V45.[016..020)"
;* V62 tmp57 [V62 ] ( 0, 0 ) int -> zero-ref "V47.[000..004)"
;* V63 tmp58 [V63 ] ( 0, 0 ) ref -> zero-ref "V47.[008..016)"
;* V64 tmp59 [V64 ] ( 0, 0 ) int -> zero-ref "V47.[016..020)"
-; V65 tmp60 [V65,T14] ( 5, 191.56) int -> x24 "V06.[000..004)"
-; V66 tmp61 [V66,T13] ( 5, 191.56) ref -> x25 "V06.[008..016)"
-; V67 tmp62 [V67,T15] ( 5, 191.56) int -> x26 "V06.[016..020)"
-; V68 tmp63 [V68,T01] ( 8, 766.24) byref -> x3 "Spilling address for field-by-field copy"
+; V65 tmp60 [V65,T14] ( 5, 191.56) int -> x22 "V06.[000..004)"
+; V66 tmp61 [V66,T13] ( 5, 191.56) ref -> x23 "V06.[008..016)"
+; V67 tmp62 [V67,T15] ( 5, 191.56) int -> x24 "V06.[016..020)"
+; V68 tmp63 [V68,T01] ( 8, 766.24) byref -> x1 "Spilling address for field-by-field copy"
;* V69 tmp64 [V69 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V70 tmp65 [V70 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V71 tmp66 [V71 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V72 tmp67 [V72 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V73 tmp68 [V73 ] ( 2, 0 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
-; V74 tmp69 [V74,T02] ( 6, 574.68) ref -> x1 "arr expr"
-; V75 tmp70 [V75,T03] ( 6, 574.68) int -> x2 "index expr"
-; V76 PSPSym [V76,T27] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
+; V74 tmp69 [V74,T02] ( 6, 574.68) ref -> x27 "arr expr"
+; V75 tmp70 [V75,T03] ( 6, 574.68) int -> x28 "index expr"
+; V76 PSPSym [V76,T24] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
; V77 cse0 [V77,T09] ( 3, 284.47) ref -> x14 "CSE - aggressive"
-; V78 cse1 [V78,T25] ( 3, 2.87) ref -> x14 "CSE - moderate"
-; V79 cse2 [V79,T07] ( 7, 296.74) byref -> x23 multi-def "CSE - aggressive"
+; V78 cse1 [V78,T23] ( 3, 2.87) ref -> x14 "CSE - moderate"
+; V79 cse2 [V79,T07] ( 7, 296.74) byref -> x21 multi-def "CSE - aggressive"
; V80 cse3 [V80,T06] ( 6, 201.92) byref -> registers multi-def "CSE - aggressive"
-; V81 cse4 [V81,T22] ( 8, 7.23) long -> x21 multi-def "CSE - moderate"
-; V82 cse5 [V82,T23] ( 8, 7.23) long -> x22 multi-def "CSE - moderate"
;
; Lcl frame size = 80
@@ -118,98 +116,94 @@ G_M55780_IG02: ; bbWeight=4.22, gcVars=0000000000080000 {V03}, gcrefRegs=
; GC ptr vars +{V03}
ldr x0, [fp, #0xD1FFAB1E] // [V03 loc1]
; gcrRegs +[x0]
- cbz x0, G_M55780_IG17
- ;; size=8 bbWeight=4.22 PerfScore 12.66
-G_M55780_IG03: ; bbWeight=0.03, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- cbz x19, G_M55780_IG17
+ cbz x0, G_M55780_IG16
+ cbz x19, G_M55780_IG16
ldr x0, [fp, #0xD1FFAB1E] // [V03 loc1]
- ; gcrRegs +[x0]
- ldr x21, [x0]
- movz x22, #0xD1FFAB1E
- movk x22, #0xD1FFAB1E LSL #16
- movk x22, #0xD1FFAB1E LSL #32
- cmp x21, x22
- bne G_M55780_IG17
- ldr x0, [x19, #0x18]
+ ldr x0, [x0]
; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ bne G_M55780_IG16
+ ldr x0, [x19, #0x18]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager+Builder+<>c:<ToManagerAndFree>b__5_0(System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]):System.ValueTuple`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M55780_IG17
- b G_M55780_IG09
- ;; size=60 bbWeight=0.03 PerfScore 0.44
-G_M55780_IG04: ; bbWeight=94.82, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref, isz
+ bne G_M55780_IG16
+ b G_M55780_IG08
+ ;; size=68 bbWeight=4.22 PerfScore 80.17
+G_M55780_IG03: ; bbWeight=94.82, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
; gcrRegs -[x19]
- ; byrRegs +[x23]
- ldr x14, [x23, #0x10]
+ ; byrRegs +[x21]
+ ldr x14, [x21, #0x10]
; gcrRegs +[x14]
- cbz x14, G_M55780_IG26
+ cbz x14, G_M55780_IG25
;; size=8 bbWeight=94.82 PerfScore 379.29
-G_M55780_IG05: ; bbWeight=94.82, nogc, extend
+G_M55780_IG04: ; bbWeight=94.82, nogc, extend
ldp x12, x15, [x14, #0x20]
stp x12, x15, [fp, #0x28]
ldr x12, [x14, #0x30]
str x12, [fp, #0x38]
;; size=16 bbWeight=94.82 PerfScore 853.40
-G_M55780_IG06: ; bbWeight=94.82, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, nogc
+G_M55780_IG05: ; bbWeight=94.82, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, nogc
; gcrRegs -[x14]
- ; byrRegs -[x23]
+ ; byrRegs -[x21]
ldp x12, x14, [fp, #0x28]
stp x12, x14, [fp, #0xD1FFAB1E]
ldr x12, [fp, #0x38]
str x12, [fp, #0xD1FFAB1E]
;; size=16 bbWeight=94.82 PerfScore 663.76
-G_M55780_IG07: ; bbWeight=94.82, isz, extend
- ldr w24, [fp, #0xD1FFAB1E] // [V04 loc2]
- ldr x25, [fp, #0xD1FFAB1E] // [V04 loc2+0x08]
+G_M55780_IG06: ; bbWeight=94.82, isz, extend
+ ldr w22, [fp, #0xD1FFAB1E] // [V04 loc2]
+ ldr x23, [fp, #0xD1FFAB1E] // [V04 loc2+0x08]
+ ; gcrRegs +[x23]
+ ldr w24, [fp, #0xD1FFAB1E] // [V04 loc2+0x10]
+ ldr x25, [x20, #0x08]
; gcrRegs +[x25]
- ldr w26, [fp, #0xD1FFAB1E] // [V04 loc2+0x10]
- ldr x27, [x20, #0x08]
- ; gcrRegs +[x27]
- ldr w14, [x27, #0x10]
- add w28, w14, #1
- ldr x14, [x27, #0x08]
+ ldr w14, [x25, #0x10]
+ add w26, w14, #1
+ ldr x14, [x25, #0x08]
; gcrRegs +[x14]
ldr w14, [x14, #0x08]
; gcrRegs -[x14]
- cmp w14, w28
- blt G_M55780_IG25
+ cmp w14, w26
+ blt G_M55780_IG24
;; size=40 bbWeight=94.82 PerfScore 1896.45
-G_M55780_IG08: ; bbWeight=94.82, gcrefRegs=A100000 {x20 x25 x27}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x27, #0x08]
- ; gcrRegs +[x1]
- ldr w2, [x27, #0x10]
- ldr w14, [x1, #0x08]
- cmp w2, w14
- bhs G_M55780_IG19
+G_M55780_IG07: ; bbWeight=94.82, gcrefRegs=2900000 {x20 x23 x25}, byrefRegs=0000 {}, byref, isz
+ ldr x27, [x25, #0x08]
+ ; gcrRegs +[x27]
+ ldr w28, [x25, #0x10]
+ ldr w14, [x27, #0x08]
+ cmp w28, w14
+ bhs G_M55780_IG18
mov w14, #24
mov x15, #16
- umaddl x14, w2, w14, x15
- add x3, x1, x14
- ; byrRegs +[x3]
- str w24, [x3]
- add x14, x3, #8
+ umaddl x14, w28, w14, x15
+ add x1, x27, x14
+ ; byrRegs +[x1]
+ str w22, [x1]
+ add x14, x1, #8
; byrRegs +[x14]
- mov x15, x25
+ mov x15, x23
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x1 x15 x25]
+ ; gcrRegs -[x15 x23 x27]
; byrRegs -[x14]
- str w26, [x3, #0x10]
- str w28, [x27, #0x10]
+ str w24, [x1, #0x10]
+ str w26, [x25, #0x10]
;; size=60 bbWeight=94.82 PerfScore 2086.09
-G_M55780_IG09: ; bbWeight=99.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x27]
- ; byrRegs -[x3]
+G_M55780_IG08: ; bbWeight=99.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x25]
+ ; byrRegs -[x1]
ldr x0, [fp, #0xD1FFAB1E] // [V03 loc1]
; gcrRegs +[x0]
add x19, x0, #8
; byrRegs +[x19]
- add x23, x19, #8
- ; byrRegs +[x23]
- mov x0, x23
+ add x21, x19, #8
+ ; byrRegs +[x21]
+ mov x0, x21
; gcrRegs -[x0]
; byrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -219,16 +213,23 @@ G_M55780_IG09: ; bbWeight=99.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {
blr x1
; byrRegs -[x0 x19]
; gcr arg pop 0
- cbnz w0, G_M55780_IG04
+ cbnz w0, G_M55780_IG03
;; size=40 bbWeight=99.00 PerfScore 990.00
-G_M55780_IG10: ; bbWeight=4.22, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
...
+16 (+5.97%) : 172889.dasm - System.Collections.Generic.HashSet1[int]:IsSubsetOfHashSetWithSameComparer(System.Collections.Generic.HashSet1[int]):ubyte:this (Tier1-OSR)
@@ -6,7 +6,7 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 100.53
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 100.53
; 1 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -14,14 +14,14 @@
; V01 arg1 [V01,T05] ( 4,201.86) ref -> x19 class-hnd single-def <System.Collections.Generic.HashSet`1[int]>
; V02 loc0 [V02,T10] ( 4, 4 ) struct (24) [fp+0x60] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.HashSet`1+Enumerator[int]>
;* V03 loc1 [V03 ] ( 0, 0 ) int -> zero-ref
-;* V04 loc2 [V04,T12] ( 0, 0 ) ubyte -> zero-ref
+;* V04 loc2 [V04,T11] ( 0, 0 ) ubyte -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06,T11] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.HashSet`1+Enumerator[int]>
; V08 tmp3 [V08,T06] ( 3,200 ) ubyte -> x2 "Inline return value spill temp"
; V09 tmp4 [V09,T04] ( 4,246.15) int -> x22 "Inline stloc first use temp"
-; V10 tmp5 [V10,T01] ( 3,369.23) ref -> x0 class-hnd exact "impAppendStmt" <<unknown class>>
-; V11 tmp6 [V11,T08] ( 3,123.08) byref -> x22 "Inline stloc first use temp"
+; V10 tmp5 [V10,T01] ( 3,369.23) ref -> x1 class-hnd exact "impAppendStmt" <<unknown class>>
+; V11 tmp6 [V11,T08] ( 3,123.08) byref -> registers "Inline stloc first use temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref "field V07._hashSet (fldOffset=0x0)" P-INDEP
;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref "field V07._version (fldOffset=0x8)" P-INDEP
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "field V07._index (fldOffset=0xc)" P-INDEP
@@ -30,15 +30,15 @@
; V17 tmp12 [V17,T09] ( 2,101 ) int -> x21 "V02.[008..012)"
; V18 tmp13 [V18,T00] ( 5,385.62) int -> registers "V02.[012..016)"
; V19 tmp14 [V19,T07] ( 3,199.93) int -> x1 "V02.[016..020)"
-; V20 cse0 [V20,T02] ( 3,361.54) int -> x23 hoist "CSE - aggressive"
+; V20 cse0 [V20,T02] ( 3,361.54) int -> x0 hoist "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M12432_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
- stp x23, x24, [sp, #0x30]
+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38]
mov fp, sp
ldr x19, [fp, #0x78]
; gcrRegs +[x19]
@@ -60,21 +60,21 @@ G_M12432_IG03: ; bbWeight=99.93, gcrefRegs=180000 {x19 x20}, byrefRegs=00
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- mov w22, w24
+ mov w22, w23
tbnz w0, #31, G_M12432_IG14
;; size=36 bbWeight=99.93 PerfScore 1049.27
G_M12432_IG04: ; bbWeight=100, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [x20, #0x34]
cmp w21, w0
bne G_M12432_IG13
- ldr w23, [x20, #0x28]
+ ldr w0, [x20, #0x28]
;; size=16 bbWeight=100 PerfScore 750.00
G_M12432_IG05: ; bbWeight=161.54, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cmp w22, w23
+ cmp w22, w0
blo G_M12432_IG10
;; size=8 bbWeight=161.54 PerfScore 242.31
G_M12432_IG06: ; bbWeight=100, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- add w24, w23, #1
+ add w23, w0, #1
mov w1, wzr
mov w2, wzr
;; size=12 bbWeight=100 PerfScore 150.00
@@ -86,50 +86,49 @@ G_M12432_IG08: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov w0, #1
;; size=4 bbWeight=0.06 PerfScore 0.03
G_M12432_IG09: ; bbWeight=0.06, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30]
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
add sp, sp, #80
ret lr
- ;; size=24 bbWeight=0.06 PerfScore 0.33
+ ;; size=24 bbWeight=0.06 PerfScore 0.39
G_M12432_IG10: ; bbWeight=61.54, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20]
- ldr x0, [x20, #0x10]
- ; gcrRegs +[x0]
- add w1, w22, #1
- sxtw w24, w1
- ldr w1, [x0, #0x08]
- cmp w22, w1
- bhs G_M12432_IG11
- mov w1, #12
- mov x2, #16
- umaddl x1, w22, w1, x2
- add x22, x0, x1
+ ldr x1, [x20, #0x10]
+ ; gcrRegs +[x1]
+ add w2, w22, #1
+ sxtw w23, w2
+ ldr w2, [x1, #0x08]
+ cmp w22, w2
+ bhs G_M12432_IG16
+ mov w2, #12
+ mov x3, #16
+ umaddl x2, w22, w2, x3
+ add x22, x1, x2
; byrRegs +[x22]
- ldr w0, [x22, #0x04]
- ; gcrRegs -[x0]
- cmn w0, #1
- bge G_M12432_IG12
- mov w22, w24
+ ldr w1, [x22, #0x04]
+ ; gcrRegs -[x1]
+ cmn w1, #1
+ blt G_M12432_IG12
+ ;; size=52 bbWeight=61.54 PerfScore 1200.00
+G_M12432_IG11: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref
+ mov x0, x22
+ ; byrRegs +[x0]
+ mov w22, w23
; byrRegs -[x22]
- b G_M12432_IG05
- ;; size=60 bbWeight=61.54 PerfScore 1292.31
-G_M12432_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20]
- bl CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M12432_IG12: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref
- ; gcrRegs +[x19-x20]
- ; byrRegs +[x22]
- ldr w1, [x22, #0x08]
+ ldr w1, [x0, #0x08]
mov w2, #1
+ mov w23, w22
b G_M12432_IG07
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M12432_IG12: ; bbWeight=30.77, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x0]
+ mov w22, w23
+ b G_M12432_IG05
+ ;; size=8 bbWeight=30.77 PerfScore 46.15
G_M12432_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20]
- ; byrRegs -[x22]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -142,26 +141,31 @@ G_M12432_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
G_M12432_IG15: ; bbWeight=0, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30]
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
add sp, sp, #80
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
+G_M12432_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ brk_windows #0
+ ;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 268, prolog size 24, PerfScore 3595.74, instruction count 67, allocated bytes for code 268 (MethodHash=70e5cf6f) for method System.Collections.Generic.HashSet`1[int]:IsSubsetOfHashSetWithSameComparer(System.Collections.Generic.HashSet`1[int]):ubyte:this (Tier1-OSR)
+Total bytes of code 284, prolog size 24, PerfScore 3549.65, instruction count 71, allocated bytes for code 284 (MethodHash=70e5cf6f) for method System.Collections.Generic.HashSet`1[int]:IsSubsetOfHashSetWithSameComparer(System.Collections.Generic.HashSet`1[int]):ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 67 (0x00043) Actual length = 268 (0x00010c)
+ Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -172,10 +176,13 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- E6 save_next
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
05 alloc_s #5 (0x05); sub sp, sp, #80 (0x050)
E4 end
+ E4 end
+ E4 end
+ E4 end
+32 (+8.00%) : 404670.dasm - System.Xml.XmlConvert:CreateInvalidNameCharException(System.String,int,int):System.Exception (Tier1)
@@ -9,20 +9,20 @@
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 3, 3 ) ref -> x20 class-hnd single-def <System.String>
-; V01 arg1 [V01,T01] ( 5, 5 ) int -> x19 single-def
-; V02 arg2 [V02,T05] ( 3, 3 ) int -> x21 single-def
+; V00 arg0 [V00,T04] ( 4, 3 ) ref -> x20 class-hnd single-def <System.String>
+; V01 arg1 [V01,T01] ( 6, 5 ) int -> x19 single-def
+; V02 arg2 [V02,T05] ( 4, 3 ) int -> x21 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T07] ( 5, 3 ) ref -> x22
; V05 tmp2 [V05,T09] ( 3, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Exception>
-; V06 tmp3 [V06,T02] ( 4, 6 ) ref -> x23 class-hnd exact single-def "Inlining Arg" <System.String[]>
+; V06 tmp3 [V06,T02] ( 5, 6 ) ref -> x23 class-hnd exact single-def "Inlining Arg" <System.String[]>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
; V08 tmp5 [V08,T10] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V10 tmp7 [V10,T00] ( 12, 24 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlException>
;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V12 tmp9 [V12,T03] ( 3, 6 ) int -> x19 "Inlining Arg"
-; V13 tmp10 [V13,T06] ( 2, 4 ) ref -> x20 class-hnd exact single-def "Inlining Arg" <System.String>
+; V12 tmp9 [V12,T03] ( 3, 6 ) int -> x20 "Inlining Arg"
+; V13 tmp10 [V13,T06] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.String>
; V14 tmp11 [V14,T11] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V15 cse0 [V15,T08] ( 3, 3 ) int -> x14 "CSE - aggressive"
;
@@ -49,11 +49,7 @@ G_M2230_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, by
; gcrRegs +[x0]
mov x22, x0
; gcrRegs +[x22]
- ;; size=28 bbWeight=1 PerfScore 7.00
-G_M2230_IG03: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
mov x0, x20
- ; gcrRegs +[x0]
mov w1, w19
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -64,19 +60,21 @@ G_M2230_IG03: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}
mov x23, x0
; gcrRegs +[x23]
cbz w21, G_M2230_IG06
- movz x0, #0xD1FFAB1E
+ ;; size=64 bbWeight=1 PerfScore 15.00
+G_M2230_IG03: ; bbWeight=1, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
mov x24, x0
; gcrRegs +[x24]
- add w19, w19, #1
+ add w20, w19, #1
mov x0, x22
mov x1, x23
; gcrRegs +[x1]
- mov w3, w19
+ mov w3, w20
mov w2, wzr
movz x4, #0xD1FFAB1E // code for <unknown method>
movk x4, #0xD1FFAB1E LSL #16
@@ -84,8 +82,8 @@ G_M2230_IG03: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}
ldr x4, [x4]
blr x4
; gcrRegs -[x1]
- mov x20, x0
- ; gcrRegs +[x20]
+ mov x19, x0
+ ; gcrRegs +[x19]
mov x0, x24
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -95,10 +93,10 @@ G_M2230_IG03: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}
; gcrRegs -[x0]
add x14, x24, #16
; byrRegs +[x14]
- mov x15, x20
+ mov x15, x19
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x20]
+ ; gcrRegs -[x15 x19]
; byrRegs -[x14]
str xzr, [x24, #0x20]
movz w14, #0xD1FFAB1E
@@ -121,10 +119,10 @@ G_M2230_IG03: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}
; gcrRegs -[x15 x23]
; byrRegs -[x14]
str xzr, [x24, #0x88]
- stp wzr, w19, [x24, #0x98]
+ stp wzr, w20, [x24, #0x98]
mov x0, x24
; gcrRegs +[x0]
- ;; size=196 bbWeight=1 PerfScore 38.50
+ ;; size=160 bbWeight=1 PerfScore 30.50
G_M2230_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x24]
ldp x23, x24, [sp, #0x30]
@@ -133,7 +131,7 @@ G_M2230_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=1 PerfScore 5.00
-G_M2230_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+G_M2230_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x20]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -146,10 +144,20 @@ G_M2230_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000
; gcrRegs +[x0]
mov x22, x0
; gcrRegs +[x22]
- b G_M2230_IG03
- ;; size=40 bbWeight=0 PerfScore 0.00
+ mov x0, x20
+ mov w1, w19
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x20]
+ mov x23, x0
+ ; gcrRegs +[x23]
+ cbnz w21, G_M2230_IG03
+ ;; size=72 bbWeight=0 PerfScore 0.00
G_M2230_IG06: ; bbWeight=0, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x20] +[x23]
+ ; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -180,7 +188,7 @@ G_M2230_IG06: ; bbWeight=0, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}
b G_M2230_IG04
;; size=84 bbWeight=0 PerfScore 0.00
-Total bytes of code 400, prolog size 20, PerfScore 56.50, instruction count 100, allocated bytes for code 400 (MethodHash=55e8f749) for method System.Xml.XmlConvert:CreateInvalidNameCharException(System.String,int,int):System.Exception (Tier1)
+Total bytes of code 432, prolog size 20, PerfScore 56.50, instruction count 108, allocated bytes for code 432 (MethodHash=55e8f749) for method System.Xml.XmlConvert:CreateInvalidNameCharException(System.String,int,int):System.Exception (Tier1)
; ============================================================
Unwind Info:
@@ -191,7 +199,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 100 (0x00064) Actual length = 400 (0x000190)
+ Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
-24 (-30.00%) : 145877.dasm - System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
@@ -7,10 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 3.50) int -> x0 single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) int -> x0 single-def
; V01 loc0 [V01,T02] ( 3, 2 ) ubyte -> x0
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 rat0 [V03,T00] ( 3, 6 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V03 rat0 [V03,T00] ( 3, 6 ) int -> x0 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 0
@@ -19,56 +19,27 @@ G_M3102_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M3102_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- sub w1, w0, #2
- cmp w1, #19
- bhi G_M3102_IG03
- mov w0, w1
- adr x1, [@RWD00]
- ldr w1, [x1, x0, LSL #2]
- adr x2, [G_M3102_IG02]
- add x1, x1, x2
- br x1
- ;; size=36 bbWeight=1 PerfScore 8.00
-G_M3102_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- sub w1, w0, #101
- cmp w1, #2
- bls G_M3102_IG05
- b G_M3102_IG05
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M3102_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ sub w0, w0, #2
+ cmp w0, #19
+ bhi G_M3102_IG04
+ movz w1, #0xD1FFAB1E
+ movk w1, #3 LSL #16
+ lsr w0, w1, w0
+ tbz w0, #0, G_M3102_IG04
+ ;; size=28 bbWeight=1 PerfScore 4.50
+G_M3102_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
- b G_M3102_IG06
+ b G_M3102_IG05
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M3102_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3102_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3102_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M3102_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-RWD00 dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
-
-Total bytes of code 80, prolog size 8, PerfScore 14.00, instruction count 20, allocated bytes for code 80 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
+Total bytes of code 56, prolog size 8, PerfScore 9.00, instruction count 14, allocated bytes for code 56 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -79,7 +50,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-17.14%) : 6033.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
@@ -8,7 +8,7 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
; V02 loc0 [V02,T06] ( 3, 1.50) int -> x1 ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
@@ -20,9 +20,9 @@
; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> x0 single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V11 tmp6 [V11,T07] ( 3, 1.50) ref -> x2 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+;* V12 rat0 [V12,T05] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -30,10 +30,9 @@ G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldr x0, [x19, #0x20]
@@ -46,54 +45,47 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
blr x2
; gcrRegs -[x0-x1]
; byrRegs +[x0]
- cbz x0, G_M43979_IG05
+ cbz x0, G_M43979_IG04
;; size=32 bbWeight=1 PerfScore 12.50
-G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
+G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
ldr w1, [x0]
ldr x2, [x19, #0x80]
; gcrRegs +[x2]
- ldr x0, [x19]
- ; byrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0xD1FFAB1E]
- cbnz x0, G_M43979_IG07
- ;; size=28 bbWeight=0.50 PerfScore 9.50
-G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- b G_M43979_IG07
- ;; size=4 bbWeight=0.10 PerfScore 0.10
-G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M43979_IG06
+ ;; size=12 bbWeight=0.50 PerfScore 3.50
+G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
+ ; byrRegs -[x0]
mov x0, xzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M43979_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43979_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x2]
ldr w0, [x2, #0x08]
cmp w1, w0
- bhs G_M43979_IG09
+ bhs G_M43979_IG08
add x0, x2, #16
; byrRegs +[x0]
ldr x0, [x0, w1, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M43979_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x2]
bl CORINFO_HELP_RNGCHKFAIL
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 140, prolog size 16, PerfScore 34.35, instruction count 35, allocated bytes for code 140 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
+Total bytes of code 116, prolog size 12, PerfScore 27.25, instruction count 29, allocated bytes for code 116 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -104,7 +96,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-17.14%) : 49469.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
@@ -8,7 +8,7 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
; V02 loc0 [V02,T06] ( 3, 1.50) int -> x1 ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
@@ -20,9 +20,9 @@
; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> x0 single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V11 tmp6 [V11,T07] ( 3, 1.50) ref -> x2 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+;* V12 rat0 [V12,T05] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -30,10 +30,9 @@ G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldr x0, [x19, #0x20]
@@ -46,54 +45,47 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
blr x2
; gcrRegs -[x0-x1]
; byrRegs +[x0]
- cbz x0, G_M43979_IG05
+ cbz x0, G_M43979_IG04
;; size=32 bbWeight=1 PerfScore 12.50
-G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
+G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
ldr w1, [x0]
ldr x2, [x19, #0x80]
; gcrRegs +[x2]
- ldr x0, [x19]
- ; byrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0xC0]
- cbnz x0, G_M43979_IG07
- ;; size=28 bbWeight=0.50 PerfScore 9.50
-G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- b G_M43979_IG07
- ;; size=4 bbWeight=0.10 PerfScore 0.10
-G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M43979_IG06
+ ;; size=12 bbWeight=0.50 PerfScore 3.50
+G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
+ ; byrRegs -[x0]
mov x0, xzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M43979_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43979_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x2]
ldr w0, [x2, #0x08]
cmp w1, w0
- bhs G_M43979_IG09
+ bhs G_M43979_IG08
add x0, x2, #16
; byrRegs +[x0]
ldr x0, [x0, w1, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M43979_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x2]
bl CORINFO_HELP_RNGCHKFAIL
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 140, prolog size 16, PerfScore 34.35, instruction count 35, allocated bytes for code 140 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
+Total bytes of code 116, prolog size 12, PerfScore 27.25, instruction count 29, allocated bytes for code 116 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -104,7 +96,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 24268.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNativeIntegerOverflowingUnaryOperator(int,Microsoft.CodeAnalysis.ConstantValue):System.Object (FullOpts)
@@ -24,19 +24,9 @@ G_M35943_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M35943_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov w1, #0xD1FFAB1E
cmp w0, w1
- beq G_M35943_IG05
+ bne G_M35943_IG05
;; size=12 bbWeight=1 PerfScore 2.00
-G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov x0, xzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19]
+G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -57,13 +47,21 @@ G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
mov x0, x20
; gcrRegs +[x0]
;; size=60 bbWeight=0.50 PerfScore 8.50
+G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x20]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M35943_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M35943_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x20]
bl CORINFO_HELP_OVERFLOW
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
+0 (0.00%) : 178184.dasm - System.Xml.XmlConvert:CreateException(System.String,System.String,int,int,int):System.Exception (FullOpts)
@@ -42,9 +42,55 @@ G_M23253_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov w22, w4
;; size=40 bbWeight=1 PerfScore 7.50
G_M23253_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz w2, G_M23253_IG05
+ cbnz w2, G_M23253_IG05
;; size=4 bbWeight=1 PerfScore 1.00
G_M23253_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ str x20, [fp, #0x18] // [V08 tmp3]
+ add x20, fp, #24 // [V08 tmp3]
+ ; gcrRegs -[x20]
+ ; byrRegs +[x20]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[x0]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ mov x2, x20
+ ; byrRegs +[x2]
+ mov w3, #1
+ mov x1, x19
+ ; gcrRegs +[x1]
+ mov x0, xzr
+ ; gcrRegs -[x0]
+ movz x4, #0xD1FFAB1E // code for <unknown method>
+ movk x4, #0xD1FFAB1E LSL #16
+ movk x4, #0xD1FFAB1E LSL #32
+ ldr x4, [x4]
+ blr x4
+ ; gcrRegs -[x1 x19] +[x0]
+ ; byrRegs -[x2 x20]
+ mov x1, x0
+ ; gcrRegs +[x1]
+ mov x0, x21
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0-x1]
+ mov x0, x21
+ ; gcrRegs +[x0]
+ ;; size=96 bbWeight=0.50 PerfScore 9.50
+G_M23253_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x50
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 2.50
+G_M23253_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x21] +[x19-x20]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -118,52 +164,6 @@ G_M23253_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov x0, x23
; gcrRegs +[x0]
;; size=184 bbWeight=0.50 PerfScore 16.25
-G_M23253_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x23, x24, [sp, #0x40]
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
- ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M23253_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x23] +[x19-x20]
- str x20, [fp, #0x18] // [V08 tmp3]
- add x20, fp, #24 // [V08 tmp3]
- ; gcrRegs -[x20]
- ; byrRegs +[x20]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
- ; gcrRegs +[x0]
- mov x21, x0
- ; gcrRegs +[x21]
- mov x2, x20
- ; byrRegs +[x2]
- mov w3, #1
- mov x1, x19
- ; gcrRegs +[x1]
- mov x0, xzr
- ; gcrRegs -[x0]
- movz x4, #0xD1FFAB1E // code for <unknown method>
- movk x4, #0xD1FFAB1E LSL #16
- movk x4, #0xD1FFAB1E LSL #32
- ldr x4, [x4]
- blr x4
- ; gcrRegs -[x1 x19] +[x0]
- ; byrRegs -[x2 x20]
- mov x1, x0
- ; gcrRegs +[x1]
- mov x0, x21
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0-x1]
- mov x0, x21
- ; gcrRegs +[x0]
- ;; size=96 bbWeight=0.50 PerfScore 9.50
G_M23253_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
+0 (0.00%) : 183304.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
@@ -57,7 +57,7 @@ G_M57654_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M57654_IG02: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x54]
cmp w0, #10
- bhi G_M57654_IG06
+ bhi G_M57654_IG16
mov w0, w0
adr x1, [@RWD00]
ldr w1, [x1, x0, LSL #2]
@@ -87,7 +87,7 @@ G_M57654_IG04: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
sub w23, w0, #1
cmp w23, #2
- bhi G_M57654_IG06
+ bhi G_M57654_IG16
mov w0, w23
adr x1, [@RWD44]
ldr w1, [x1, x0, LSL #2]
@@ -95,22 +95,10 @@ G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
add x1, x1, x2
br x1
;; size=36 bbWeight=0.50 PerfScore 4.00
-G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19 x21]
- mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M57654_IG07: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
- ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19 x21]
+G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x5C]
cmn w0, #1
- beq G_M57654_IG12
+ beq G_M57654_IG10
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -119,7 +107,7 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M57654_IG12
+ cbz w0, G_M57654_IG10
mov x0, x21
; gcrRegs +[x0]
mov w1, w22
@@ -131,12 +119,12 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
blr x3
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w20, G_M57654_IG06
+ cbz w20, G_M57654_IG16
ldr w0, [x19, #0x60]
- cbnz w0, G_M57654_IG10
+ cbnz w0, G_M57654_IG08
ldr x0, [x19, #0x38]
; gcrRegs +[x0]
- cbz x0, G_M57654_IG09
+ cbz x0, G_M57654_IG07
mov x1, x0
; gcrRegs +[x1]
ldr x1, [x1]
@@ -145,15 +133,15 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M57654_IG09
+ bne G_M57654_IG07
ldr x1, [x1, #0x50]
ldr x1, [x1, #0x08]
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- b G_M57654_IG10
+ b G_M57654_IG08
;; size=132 bbWeight=0.50 PerfScore 24.50
-G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+G_M57654_IG07: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -168,7 +156,7 @@ G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
; gcrRegs -[x0 x15]
; byrRegs -[x14]
;; size=28 bbWeight=0.50 PerfScore 2.25
-G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M57654_IG08: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x60]
ldr x1, [x19, #0x40]
; gcrRegs +[x1]
@@ -176,7 +164,7 @@ G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
cmp w0, w1
- beq G_M57654_IG06
+ beq G_M57654_IG16
ldr x0, [x19, #0x38]
; gcrRegs +[x0]
mov x1, x21
@@ -213,7 +201,7 @@ G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
ldr x1, [x1, #0x48]
ldr x1, [x1, #0x20]
;; size=124 bbWeight=0.50 PerfScore 34.00
-G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M57654_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -221,7 +209,7 @@ G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
br x1
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M57654_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x21]
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
@@ -233,7 +221,7 @@ G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280
ldr x4, [x4, #0x90]
ldr x4, [x4, #0x30]
;; size=28 bbWeight=0.50 PerfScore 6.75
-G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -241,12 +229,12 @@ G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend
br x4
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M57654_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0-x1]
mov w0, #10
str w0, [x19, #0x54]
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M57654_IG13: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
mov x1, x21
@@ -260,7 +248,7 @@ G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
; gcrRegs -[x0-x1 x21]
; gcr arg pop 0
sxtw w23, w0
- cbnz w23, G_M57654_IG16
+ cbnz w23, G_M57654_IG14
mov w0, #1
str w0, [x19, #0x54]
mov x0, x19
@@ -273,9 +261,19 @@ G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000
; gcrRegs -[x0 x19]
; gcr arg pop 0
;; size=72 bbWeight=0.50 PerfScore 11.75
-G_M57654_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57654_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sxtw w0, w23
;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M57654_IG15: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x40
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M57654_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M57654_IG17: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
@@ -340,20 +338,20 @@ G_M57654_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_windows #0
;; size=80 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG14 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG03 - G_M57654_IG02
- dd G_M57654_IG03 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG15 - G_M57654_IG02
-RWD44 dd G_M57654_IG18 - G_M57654_IG02
- dd G_M57654_IG08 - G_M57654_IG02
+RWD00 dd G_M57654_IG16 - G_M57654_IG02
dd G_M57654_IG12 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG03 - G_M57654_IG02
+ dd G_M57654_IG03 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG13 - G_M57654_IG02
+RWD44 dd G_M57654_IG18 - G_M57654_IG02
+ dd G_M57654_IG06 - G_M57654_IG02
+ dd G_M57654_IG10 - G_M57654_IG02
Total bytes of code 760, prolog size 36, PerfScore 125.50, instruction count 190, allocated bytes for code 760 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
realworld.run.windows.arm64.checked.mch
-28 (-20.59%) : 10926.dasm - FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
@@ -8,8 +8,8 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 7, 5 ) ref -> x19 this class-hnd single-def <FSharp.Compiler.Infos+PropInfo>
-;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <FSharp.Compiler.Infos+PropInfo>
+; V00 this [V00,T00] ( 6, 4.50) ref -> x19 this class-hnd single-def <FSharp.Compiler.Infos+PropInfo>
+;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <FSharp.Compiler.Infos+PropInfo>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
; V03 loc2 [V03,T04] ( 2, 1 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <FSharp.Compiler.TypedTree+ValRef>
@@ -37,29 +37,16 @@ G_M3270_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbnz x0, G_M3270_IG04
+ cbz x0, G_M3270_IG05
;; size=24 bbWeight=1 PerfScore 4.00
G_M3270_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- mov x1, x19
- ; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[x1 x19] +[x0]
- ; gcr arg pop 0
- cbnz x0, G_M3270_IG06
- b G_M3270_IG06
- ;; size=28 bbWeight=0.50 PerfScore 2.50
-G_M3270_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x19]
ldr x0, [x19, #0x18]
; gcrRegs +[x0]
- cbz x0, G_M3270_IG06
+ cbz x0, G_M3270_IG05
ldr x1, [x19, #0x20]
; gcrRegs +[x1]
- cbnz x1, G_M3270_IG06
+ cbnz x1, G_M3270_IG05
ldr x0, [x0, #0x08]
ldr x1, [x19, #0x08]
movz x2, #0xD1FFAB1E // code for FSharp.Compiler.Infos:ValRef.IsFSharpEventProperty(FSharp.Compiler.TypedTree+ValRef,FSharp.Compiler.TcGlobals+TcGlobals):ubyte
@@ -67,23 +54,23 @@ G_M3270_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
;; size=40 bbWeight=0.50 PerfScore 9.25
-G_M3270_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M3270_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
br x2
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M3270_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3270_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0-x1 x19]
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3270_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M3270_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-Total bytes of code 136, prolog size 16, PerfScore 23.00, instruction count 34, allocated bytes for code 136 (MethodHash=cb2ef339) for method FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
+Total bytes of code 108, prolog size 16, PerfScore 20.50, instruction count 27, allocated bytes for code 108 (MethodHash=cb2ef339) for method FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -94,7 +81,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-8.93%) : 22474.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System._Canon]:getHasAnyApplicableMember():ubyte:this (FullOpts)
@@ -27,10 +27,10 @@
; V16 tmp12 [V16,T00] ( 5, 27 ) int -> x21 "field V01._index (fldOffset=0x8)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) ubyte -> zero-ref "V03.[004..005)"
;* V18 cse0 [V18,T11] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V19 cse1 [V19,T06] ( 2, 2 ) long -> x22 "CSE - aggressive"
-; V20 rat0 [V20,T07] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
+; V19 cse1 [V19,T06] ( 1, 1 ) long -> x22 "CSE - aggressive"
+;* V20 rat0 [V20,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V21 rat1 [V21,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V22 rat2 [V22,T05] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V22 rat2 [V22,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;* V23 rat3 [V23,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
;* V24 rat4 [V24,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
@@ -49,7 +49,7 @@ G_M864_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
mov x19, x0
; gcrRegs +[x19]
;; size=40 bbWeight=1 PerfScore 8.00
-G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:this
@@ -62,15 +62,10 @@ G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byre
; gcrRegs +[x20]
mov w21, w1
ldr x22, [x19]
- mov x0, x22
- ; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x30]
- cbnz x0, G_M864_IG04
b G_M864_IG04
- ;; size=64 bbWeight=1 PerfScore 27.00
+ ;; size=44 bbWeight=1 PerfScore 16.50
G_M864_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
ldr x0, [x20, #0x08]
; gcrRegs +[x0]
add x8, fp, #24 // [V02 loc1]
@@ -118,7 +113,7 @@ G_M864_IG08: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
-Total bytes of code 224, prolog size 36, PerfScore 138.50, instruction count 56, allocated bytes for code 224 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
+Total bytes of code 204, prolog size 36, PerfScore 128.00, instruction count 51, allocated bytes for code 204 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -129,7 +124,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-7.94%) : 23691.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)
@@ -25,10 +25,10 @@
; V14 tmp8 [V14,T05] ( 3, 6 ) ref -> x0 "Field obj"
; V15 tmp9 [V15,T01] ( 2, 8 ) byref -> x2 "argument with side effect"
;* V16 cse0 [V16,T12] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V17 cse1 [V17,T08] ( 3, 3 ) long -> x24 "CSE - aggressive"
-; V18 rat0 [V18,T10] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+; V17 cse1 [V17,T08] ( 2, 2.50) long -> x24 "CSE - aggressive"
+;* V18 rat0 [V18,T10] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V19 rat1 [V19,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V20 rat2 [V20,T09] ( 2, 2 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V20 rat2 [V20,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
@@ -62,7 +62,7 @@ G_M9562_IG02: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=100000 {x
; gcrRegs +[x21]
cbz x21, G_M9562_IG07
;; size=40 bbWeight=1 PerfScore 13.50
-G_M9562_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref, isz
+G_M9562_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x0]
mov x0, x21
; gcrRegs +[x0]
@@ -75,15 +75,10 @@ G_M9562_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=1000
; gcrRegs +[x22]
mov w23, w1
ldr x24, [x19]
- mov x0, x24
- ; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x38]
- cbnz x0, G_M9562_IG05
b G_M9562_IG05
- ;; size=60 bbWeight=0.50 PerfScore 10.75
+ ;; size=40 bbWeight=0.50 PerfScore 5.50
G_M9562_IG04: ; bbWeight=2, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=100000 {x20}, byref
+ ; gcrRegs -[x0]
mov x0, x22
; gcrRegs +[x0]
mov w1, w23
@@ -133,7 +128,7 @@ G_M9562_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
ret lr
;; size=20 bbWeight=1 PerfScore 5.00
-Total bytes of code 252, prolog size 24, PerfScore 106.75, instruction count 63, allocated bytes for code 252 (MethodHash=57bfdaa5) for method Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)
+Total bytes of code 232, prolog size 24, PerfScore 101.50, instruction count 58, allocated bytes for code 232 (MethodHash=57bfdaa5) for method Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)
; ============================================================
Unwind Info:
@@ -144,7 +139,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 63 (0x0003f) Actual length = 252 (0x0000fc)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 21010.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNativeIntegerOverflowingUnaryOperator(int,Microsoft.CodeAnalysis.ConstantValue):System.Object (FullOpts)
@@ -24,19 +24,9 @@ G_M35943_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M35943_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov w1, #0xD1FFAB1E
cmp w0, w1
- beq G_M35943_IG05
+ bne G_M35943_IG05
;; size=12 bbWeight=1 PerfScore 2.00
-G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov x0, xzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19]
+G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -57,13 +47,21 @@ G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
mov x0, x20
; gcrRegs +[x0]
;; size=60 bbWeight=0.50 PerfScore 8.50
+G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x20]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M35943_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M35943_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x20]
bl CORINFO_HELP_OVERFLOW
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
+0 (0.00%) : 3131.dasm - FSharp.Compiler.CompilerConfig+TcConfig:computeKnownDllReference(System.String):System.Tuple2[FSharp.Compiler.CompilerConfig+AssemblyReference,Microsoft.FSharp.Core.FSharpOption1[System.String]]:this (FullOpts)
@@ -22,11 +22,12 @@
; V11 tmp5 [V11,T00] ( 6, 10 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CompilerConfig+AssemblyReference>
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-;* V14 tmp8 [V14,T09] ( 0, 0 ) long -> zero-ref single-def "field V07.code1 (fldOffset=0x0)" P-INDEP
-;* V15 tmp9 [V15,T10] ( 0, 0 ) long -> zero-ref single-def "field V07.code2 (fldOffset=0x8)" P-INDEP
-; V16 cse0 [V16,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
-; V17 cse1 [V17,T06] ( 4, 3.50) long -> x21 "CSE - aggressive"
-;* V18 cse2 [V18,T11] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+;* V14 tmp8 [V14,T10] ( 0, 0 ) long -> zero-ref single-def "field V07.code1 (fldOffset=0x0)" P-INDEP
+;* V15 tmp9 [V15,T11] ( 0, 0 ) long -> zero-ref single-def "field V07.code2 (fldOffset=0x8)" P-INDEP
+; V16 tmp10 [V16,T09] ( 2, 1 ) ref -> x2 single-def "Field obj"
+; V17 cse0 [V17,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
+; V18 cse1 [V18,T06] ( 4, 3.50) long -> x21 "CSE - aggressive"
+;* V19 cse2 [V19,T12] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
;
; Lcl frame size = 0
@@ -102,7 +103,7 @@ G_M10872_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
cbz x2, G_M10872_IG05
;; size=160 bbWeight=1 PerfScore 38.50
G_M10872_IG03: ; bbWeight=0.50, gcrefRegs=500005 {x0 x2 x20 x22}, byrefRegs=0000 {}, byref
- ldr xzr, [x2, #0x10]
+ ldrsb wzr, [x2]
ldr x2, [x0, #0x08]
mov x0, x20
mov x1, x22
+0 (0.00%) : 15343.dasm - Microsoft.CodeAnalysis.RuleSetInclude:g_resolveIncludePath|80(System.String,System.String):System.String (FullOpts)
@@ -10,7 +10,7 @@
;
; V00 arg0 [V00,T00] ( 3, 3 ) ref -> x0 class-hnd single-def <System.String>
; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.String>
-; V02 loc0 [V02,T02] ( 2, 2 ) ref -> x0 class-hnd single-def <System.String>
+;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.windows.arm64.checked.mch |
24 |
24 |
0 |
0 |
-412 |
+0 |
| benchmarks.run_pgo.windows.arm64.checked.mch |
252 |
180 |
3 |
69 |
-3,916 |
+32 |
| benchmarks.run_tiered.windows.arm64.checked.mch |
10 |
8 |
0 |
2 |
-160 |
+0 |
| coreclr_tests.run.windows.arm64.checked.mch |
445 |
241 |
5 |
199 |
-5,040 |
+52 |
| libraries.crossgen2.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries.pmi.windows.arm64.checked.mch |
208 |
194 |
1 |
13 |
-3,648 |
+8 |
| libraries_tests.run.windows.arm64.Release.mch |
917 |
726 |
16 |
175 |
-16,572 |
+288 |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
261 |
245 |
0 |
16 |
-3,968 |
+0 |
| realworld.run.windows.arm64.checked.mch |
61 |
57 |
0 |
4 |
-1,372 |
+0 |
| smoke_tests.nativeaot.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
2,178 |
1,675 |
25 |
478 |
-35,088 |
+380 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.windows.arm64.checked.mch |
24,455 |
4 |
24,451 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.windows.arm64.checked.mch |
97,527 |
48,627 |
48,900 |
13 (0.01%) |
13 (0.01%) |
| benchmarks.run_tiered.windows.arm64.checked.mch |
49,174 |
36,718 |
12,456 |
0 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.windows.arm64.checked.mch |
595,172 |
362,437 |
232,735 |
11 (0.00%) |
11 (0.00%) |
| libraries.crossgen2.windows.arm64.checked.mch |
2,130 |
0 |
2,130 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.windows.arm64.checked.mch |
305,519 |
6 |
305,513 |
3 (0.00%) |
3 (0.00%) |
| libraries_tests.run.windows.arm64.Release.mch |
646,533 |
468,460 |
178,073 |
107 (0.02%) |
107 (0.02%) |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
317,022 |
21,598 |
295,424 |
4 (0.00%) |
4 (0.00%) |
| realworld.run.windows.arm64.checked.mch |
33,241 |
3 |
33,238 |
1 (0.00%) |
1 (0.00%) |
| smoke_tests.nativeaot.windows.arm64.checked.mch |
77 |
0 |
77 |
0 (0.00%) |
0 (0.00%) |
|
2,070,850 |
937,853 |
1,132,997 |
139 (0.01%) |
139 (0.01%) |
jit-analyze output
benchmarks.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 10966596 (overridden on cmd)
Total bytes of diff: 10966184 (overridden on cmd)
Total bytes of delta: -412 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 24 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
benchmarks.run_pgo.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 46609220 (overridden on cmd)
Total bytes of diff: 46605336 (overridden on cmd)
Total bytes of delta: -3884 (-0.01 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 85 unchanged.
benchmarks.run_tiered.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15506140 (overridden on cmd)
Total bytes of diff: 15505980 (overridden on cmd)
Total bytes of delta: -160 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 10 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
coreclr_tests.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 496298628 (overridden on cmd)
Total bytes of diff: 496293640 (overridden on cmd)
Total bytes of delta: -4988 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 77 unchanged.
libraries.pmi.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 79834280 (overridden on cmd)
Total bytes of diff: 79830640 (overridden on cmd)
Total bytes of delta: -3640 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 64 unchanged.
libraries_tests.run.windows.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 326696628 (overridden on cmd)
Total bytes of diff: 326680344 (overridden on cmd)
Total bytes of delta: -16284 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 87 unchanged.
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 171564828 (overridden on cmd)
Total bytes of diff: 171560860 (overridden on cmd)
Total bytes of delta: -3968 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 70 unchanged.
realworld.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15891320 (overridden on cmd)
Total bytes of diff: 15889948 (overridden on cmd)
Total bytes of delta: -1372 (-0.01 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 52 unchanged.
windows x64
Diffs are based on 2,098,526 contexts (926,221 MinOpts, 1,172,305 FullOpts).
MISSED contexts: 138 (0.01%)
Overall (-41,586 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.x64.checked.mch |
8,737,750 |
-405 |
| benchmarks.run_pgo.windows.x64.checked.mch |
35,778,033 |
-4,419 |
| benchmarks.run_tiered.windows.x64.checked.mch |
12,549,088 |
-220 |
| coreclr_tests.run.windows.x64.checked.mch |
392,964,649 |
-5,843 |
| libraries.pmi.windows.x64.checked.mch |
61,646,281 |
-3,447 |
| libraries_tests.run.windows.x64.Release.mch |
278,843,071 |
-22,248 |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
137,561,184 |
-3,874 |
| realworld.run.windows.x64.checked.mch |
14,184,922 |
-1,130 |
FullOpts (-41,586 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.x64.checked.mch |
8,737,387 |
-405 |
| benchmarks.run_pgo.windows.x64.checked.mch |
21,745,952 |
-4,419 |
| benchmarks.run_tiered.windows.x64.checked.mch |
3,453,351 |
-220 |
| coreclr_tests.run.windows.x64.checked.mch |
120,242,671 |
-5,843 |
| libraries.pmi.windows.x64.checked.mch |
61,532,760 |
-3,447 |
| libraries_tests.run.windows.x64.Release.mch |
106,668,455 |
-22,248 |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
126,635,118 |
-3,874 |
| realworld.run.windows.x64.checked.mch |
13,798,313 |
-1,130 |
Example diffs
benchmarks.run.windows.x64.checked.mch
-24 (-11.94%) : 24228.dasm - System.Collections.IterateForEach`1[System.Canon]:ImmutableStack():System.Canon:this (FullOpts)
@@ -8,10 +8,10 @@
; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
+; V00 this [V00,T02] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
; V01 loc0 [V01,T05] ( 3, 4 ) ref -> rsi ld-addr-op class-hnd <System.__Canon>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Collections.Immutable.ImmutableStack`1[System.__Canon]>
-; V03 loc2 [V03 ] ( 10, 31 ) struct (16) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]>
+; V03 loc2 [V03 ] ( 10, 31 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]>
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref 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"
@@ -20,12 +20,12 @@
;* V09 tmp4 [V09,T07] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableStack`1[System.__Canon]>
; V10 tmp5 [V10,T01] ( 2, 8 ) ref -> rcx class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableStack`1[System.__Canon]>
; V11 tmp6 [V11,T00] ( 2, 32 ) ref -> rcx class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableStack`1[System.__Canon]>
-; V12 tmp7 [V12 ] ( 2, 3 ) ref -> [rsp+0x20] do-not-enreg[X] addr-exposed "field V03._originalStack (fldOffset=0x0)" P-DEP
-; V13 tmp8 [V13 ] ( 9, 29 ) ref -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V03._remainingStack (fldOffset=0x8)" P-DEP
+; V12 tmp7 [V12 ] ( 2, 3 ) ref -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V03._originalStack (fldOffset=0x0)" P-DEP
+; V13 tmp8 [V13 ] ( 9, 29 ) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V03._remainingStack (fldOffset=0x8)" P-DEP
;* V14 cse0 [V14,T08] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V15 rat0 [V15,T04] ( 2, 4 ) long -> rcx "Spilling to split statement for tree"
+;* V15 rat0 [V15,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V16 rat1 [V16,T06] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V17 rat2 [V17,T03] ( 2, 4 ) long -> rcx "fgMakeTemp is creating a new local variable"
+;* V17 rat2 [V17,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 56
@@ -34,35 +34,28 @@ G_M64146_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 56
xor eax, eax
- mov qword ptr [rsp+0x20], rax
mov qword ptr [rsp+0x28], rax
- mov qword ptr [rsp+0x30], rcx
+ mov qword ptr [rsp+0x30], rax
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=26 bbWeight=1 PerfScore 5.75
+ ;; size=21 bbWeight=1 PerfScore 4.75
G_M64146_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor rsi, rsi
; gcrRegs +[rsi]
mov rcx, gword ptr [rbx+0xA0]
; gcrRegs +[rcx]
- lea rdx, [rsp+0x20]
+ lea rdx, [rsp+0x28]
cmp dword ptr [rcx], ecx
call [System.Collections.Immutable.ImmutableStack`1[System.__Canon]:GetEnumerator():System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]:this]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rcx, qword ptr [rbx]
- mov rcx, qword ptr [rcx+0x38]
- mov rcx, qword ptr [rcx]
- mov rcx, qword ptr [rcx+0x20]
- test rcx, rcx
- jne SHORT G_M64146_IG04
jmp SHORT G_M64146_IG04
- ;; size=43 bbWeight=1 PerfScore 20.00
+ ;; size=24 bbWeight=1 PerfScore 10.75
G_M64146_IG03: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- cmp gword ptr [rsp+0x28], 0
+ cmp gword ptr [rsp+0x30], 0
je SHORT G_M64146_IG10
- mov rcx, gword ptr [rsp+0x28]
+ mov rcx, gword ptr [rsp+0x30]
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
call [System.Collections.Immutable.ImmutableStack`1[System.__Canon]:Peek():System.__Canon:this]
@@ -73,31 +66,31 @@ G_M64146_IG03: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=24 bbWeight=2 PerfScore 20.50
G_M64146_IG04: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- cmp gword ptr [rsp+0x28], 0
+ cmp gword ptr [rsp+0x30], 0
jne SHORT G_M64146_IG06
;; size=8 bbWeight=8 PerfScore 24.00
G_M64146_IG05: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov rcx, gword ptr [rsp+0x20]
+ mov rcx, gword ptr [rsp+0x28]
; gcrRegs +[rcx]
- mov gword ptr [rsp+0x28], rcx
+ mov gword ptr [rsp+0x30], rcx
jmp SHORT G_M64146_IG07
;; size=12 bbWeight=2 PerfScore 8.00
G_M64146_IG06: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
- mov rcx, gword ptr [rsp+0x28]
+ mov rcx, gword ptr [rsp+0x30]
; gcrRegs +[rcx]
cmp gword ptr [rcx+0x10], 0
je SHORT G_M64146_IG07
- mov rcx, gword ptr [rsp+0x28]
+ mov rcx, gword ptr [rsp+0x30]
cmp dword ptr [rcx], ecx
call [System.Collections.Immutable.ImmutableStack`1[System.__Canon]:Pop():System.Collections.Immutable.ImmutableStack`1[System.__Canon]:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov gword ptr [rsp+0x28], rax
+ mov gword ptr [rsp+0x30], rax
;; size=30 bbWeight=2 PerfScore 26.00
G_M64146_IG07: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- mov rcx, gword ptr [rsp+0x28]
+ mov rcx, gword ptr [rsp+0x30]
; gcrRegs +[rcx]
cmp gword ptr [rcx+0x10], 0
jne SHORT G_M64146_IG03
@@ -134,7 +127,7 @@ G_M64146_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
int3
;; size=36 bbWeight=0 PerfScore 0.00
-Total bytes of code 201, prolog size 23, PerfScore 146.75, instruction count 54, allocated bytes for code 201 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
+Total bytes of code 177, prolog size 18, PerfScore 136.50, instruction count 47, allocated bytes for code 177 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
-24 (-7.69%) : 5369.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
@@ -43,9 +43,9 @@ G_M23091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=30 bbWeight=1 PerfScore 7.50
G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
cmp dword ptr [rsi+0x68], 0
- jne G_M23091_IG11
+ jne G_M23091_IG10
test rbx, rbx
- je G_M23091_IG12
+ je G_M23091_IG11
lea rcx, bword ptr [rbx+0xF4]
; byrRegs +[rcx]
mov edx, 1
@@ -53,7 +53,7 @@ G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=00C
lock
cmpxchg dword ptr [rcx], edx
test eax, eax
- jne G_M23091_IG13
+ jne G_M23091_IG12
mov dword ptr [rbx+0xDC], 4
lea rcx, bword ptr [rbx+0x60]
mov rdx, rsi
@@ -62,18 +62,9 @@ G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=00C
; gcrRegs -[rdx]
; byrRegs -[rcx]
cmp byte ptr [rbx+0xFA], 0
- jne SHORT G_M23091_IG04
+ je SHORT G_M23091_IG04
;; size=76 bbWeight=1 PerfScore 32.25
-G_M23091_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov rax, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rax]
- ; gcrRegs +[rax]
- cmp byte ptr [rax+0x9D], 0
- je SHORT G_M23091_IG05
- jmp SHORT G_M23091_IG05
- ;; size=24 bbWeight=0.50 PerfScore 4.12
-G_M23091_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+G_M23091_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
call [System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext]
; gcrRegs +[rax]
; gcr arg pop 0
@@ -85,7 +76,7 @@ G_M23091_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
;; size=18 bbWeight=0.50 PerfScore 2.38
-G_M23091_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M23091_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0xB0]
; gcrRegs +[rcx]
lea rcx, bword ptr [rcx+0x08]
@@ -98,22 +89,22 @@ G_M23091_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; byrRegs -[rcx]
nop
;; size=20 bbWeight=1 PerfScore 4.00
-G_M23091_IG06: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M23091_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rsi+0x08]
; gcrRegs +[rdx]
cmp gword ptr [rbx+0x18], 0
- je SHORT G_M23091_IG08
+ je SHORT G_M23091_IG07
;; size=11 bbWeight=1 PerfScore 6.00
-G_M23091_IG07: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+G_M23091_IG06: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi rdi]
mov rcx, rbx
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- jmp SHORT G_M23091_IG09
+ jmp SHORT G_M23091_IG08
;; size=11 bbWeight=0.50 PerfScore 2.62
-G_M23091_IG08: ; bbWeight=0.50, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref
+G_M23091_IG07: ; bbWeight=0.50, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx rdi]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -124,14 +115,14 @@ G_M23091_IG08: ; bbWeight=0.50, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0
; gcr arg pop 0
nop
;; size=13 bbWeight=0.50 PerfScore 1.88
-G_M23091_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx]
; GC ptr vars -{V01}
cmp eax, 997
sete al
movzx rax, al
;; size=11 bbWeight=1 PerfScore 1.50
-G_M23091_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M23091_IG09: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
@@ -139,7 +130,7 @@ G_M23091_IG10: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rsi]
mov rcx, rsi
; gcrRegs +[rcx]
@@ -148,7 +139,7 @@ G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {
; gcr arg pop 0
int3
;; size=10 bbWeight=0 PerfScore 0.00
-G_M23091_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23091_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x1BCE
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -161,7 +152,7 @@ G_M23091_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=30 bbWeight=0 PerfScore 0.00
-G_M23091_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
; GC ptr vars +{V00 V01}
mov rcx, rbx
@@ -173,7 +164,7 @@ G_M23091_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
; gcr arg pop 0
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M23091_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M23091_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
push rbp
push rdi
@@ -184,7 +175,7 @@ G_M23091_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
mov qword ptr [rsp+0x20], rbp
lea rbp, [rbp+0x40]
;; size=21 bbWeight=0 PerfScore 0.00
-G_M23091_IG15: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, gword ptr [rbp+0x18]
; gcrRegs +[rcx]
; GC ptr vars -{V00 V01}
@@ -196,7 +187,7 @@ G_M23091_IG15: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
int3
;; size=16 bbWeight=0 PerfScore 0.00
-Total bytes of code 312, prolog size 30, PerfScore 65.50, instruction count 86, allocated bytes for code 312 (MethodHash=03bba5cc) for method System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
+Total bytes of code 288, prolog size 30, PerfScore 61.38, instruction count 81, allocated bytes for code 288 (MethodHash=03bba5cc) for method System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -231,4 +222,4 @@ Unwind Info:
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
*************** EH table for System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M23091_IG06..G_M23091_IG09) handled by [G_M23091_IG14..END) (class: 1000001)
+EH#0: try [G_M23091_IG05..G_M23091_IG08) handled by [G_M23091_IG13..END) (class: 1000001)
-24 (-7.69%) : 5393.dasm - System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
@@ -43,9 +43,9 @@ G_M29540_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=30 bbWeight=1 PerfScore 7.50
G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
cmp dword ptr [rsi+0x68], 0
- jne G_M29540_IG11
+ jne G_M29540_IG10
test rbx, rbx
- je G_M29540_IG12
+ je G_M29540_IG11
lea rcx, bword ptr [rbx+0xF4]
; byrRegs +[rcx]
mov edx, 1
@@ -53,7 +53,7 @@ G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=00C
lock
cmpxchg dword ptr [rcx], edx
test eax, eax
- jne G_M29540_IG13
+ jne G_M29540_IG12
mov dword ptr [rbx+0xDC], 7
lea rcx, bword ptr [rbx+0x60]
mov rdx, rsi
@@ -62,18 +62,9 @@ G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=00C
; gcrRegs -[rdx]
; byrRegs -[rcx]
cmp byte ptr [rbx+0xFA], 0
- jne SHORT G_M29540_IG04
+ je SHORT G_M29540_IG04
;; size=76 bbWeight=1 PerfScore 32.25
-G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov rax, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rax]
- ; gcrRegs +[rax]
- cmp byte ptr [rax+0x9D], 0
- je SHORT G_M29540_IG05
- jmp SHORT G_M29540_IG05
- ;; size=24 bbWeight=0.50 PerfScore 4.12
-G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
call [System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext]
; gcrRegs +[rax]
; gcr arg pop 0
@@ -85,7 +76,7 @@ G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
;; size=18 bbWeight=0.50 PerfScore 2.38
-G_M29540_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M29540_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0xB0]
; gcrRegs +[rcx]
lea rcx, bword ptr [rcx+0x08]
@@ -98,22 +89,22 @@ G_M29540_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; byrRegs -[rcx]
nop
;; size=20 bbWeight=1 PerfScore 4.00
-G_M29540_IG06: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M29540_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rsi+0x08]
; gcrRegs +[rdx]
cmp gword ptr [rbx+0x18], 0
- je SHORT G_M29540_IG08
+ je SHORT G_M29540_IG07
;; size=11 bbWeight=1 PerfScore 6.00
-G_M29540_IG07: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+G_M29540_IG06: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi rdi]
mov rcx, rbx
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- jmp SHORT G_M29540_IG09
+ jmp SHORT G_M29540_IG08
;; size=11 bbWeight=0.50 PerfScore 2.62
-G_M29540_IG08: ; bbWeight=0.50, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref
+G_M29540_IG07: ; bbWeight=0.50, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx rdi]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -124,14 +115,14 @@ G_M29540_IG08: ; bbWeight=0.50, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0
; gcr arg pop 0
nop
;; size=13 bbWeight=0.50 PerfScore 1.88
-G_M29540_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx]
; GC ptr vars -{V01}
cmp eax, 997
sete al
movzx rax, al
;; size=11 bbWeight=1 PerfScore 1.50
-G_M29540_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M29540_IG09: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
@@ -139,7 +130,7 @@ G_M29540_IG10: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rsi]
mov rcx, rsi
; gcrRegs +[rcx]
@@ -148,7 +139,7 @@ G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {
; gcr arg pop 0
int3
;; size=10 bbWeight=0 PerfScore 0.00
-G_M29540_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29540_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x1BCE
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -161,7 +152,7 @@ G_M29540_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=30 bbWeight=0 PerfScore 0.00
-G_M29540_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
; GC ptr vars +{V00 V01}
mov rcx, rbx
@@ -173,7 +164,7 @@ G_M29540_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
; gcr arg pop 0
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M29540_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M29540_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
push rbp
push rdi
@@ -184,7 +175,7 @@ G_M29540_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
mov qword ptr [rsp+0x20], rbp
lea rbp, [rbp+0x40]
;; size=21 bbWeight=0 PerfScore 0.00
-G_M29540_IG15: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, gword ptr [rbp+0x18]
; gcrRegs +[rcx]
; GC ptr vars -{V00 V01}
@@ -196,7 +187,7 @@ G_M29540_IG15: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
int3
;; size=16 bbWeight=0 PerfScore 0.00
-Total bytes of code 312, prolog size 30, PerfScore 65.50, instruction count 86, allocated bytes for code 312 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
+Total bytes of code 288, prolog size 30, PerfScore 61.38, instruction count 81, allocated bytes for code 288 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -231,4 +222,4 @@ Unwind Info:
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
*************** EH table for System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M29540_IG06..G_M29540_IG09) handled by [G_M29540_IG14..END) (class: 1000001)
+EH#0: try [G_M29540_IG05..G_M29540_IG08) handled by [G_M29540_IG13..END) (class: 1000001)
-3 (-0.34%) : 11429.dasm - System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
@@ -180,22 +180,9 @@ G_M11429_IG06: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=
; gcrRegs -[rdx]
; byrRegs -[rcx]
cmp byte ptr [rbx+0xFA], 0
- jne SHORT G_M11429_IG08
+ je SHORT G_M11429_IG08
;; size=69 bbWeight=1 PerfScore 28.75
-G_M11429_IG07: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov rcx, gword ptr [rbx+0xB0]
- ; gcrRegs +[rcx]
- lea rcx, bword ptr [rcx+0x08]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx]
- ; byrRegs -[rcx]
- jmp SHORT G_M11429_IG09
- ;; size=21 bbWeight=1 PerfScore 5.75
-G_M11429_IG08: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M11429_IG07: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
call [System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext]
; gcrRegs +[rax]
; gcr arg pop 0
@@ -206,8 +193,20 @@ G_M11429_IG08: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- jmp SHORT G_M11429_IG07
- ;; size=20 bbWeight=0.50 PerfScore 3.38
+ ;; size=18 bbWeight=0.50 PerfScore 2.38
+G_M11429_IG08: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rbx+0xB0]
+ ; gcrRegs +[rcx]
+ lea rcx, bword ptr [rcx+0x08]
+ ; gcrRegs -[rcx]
+ ; byrRegs +[rcx]
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rdx]
+ ; byrRegs -[rcx]
+ nop
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M11429_IG09: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rsi+0x08]
mov rcx, rbx
@@ -468,7 +467,7 @@ G_M11429_IG21: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
int3
;; size=16 bbWeight=0 PerfScore 0.00
-Total bytes of code 885, prolog size 36, PerfScore 104.12, instruction count 216, allocated bytes for code 885 (MethodHash=8b1ad35a) for method System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
+Total bytes of code 882, prolog size 36, PerfScore 101.38, instruction count 215, allocated bytes for code 882 (MethodHash=8b1ad35a) for method System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
-11 (-0.32%) : 16458.dasm - System.IO.Strategies.BufferedFileStreamStrategy+d__37:MoveNext():this (FullOpts)
@@ -30,13 +30,13 @@
; V19 OutArgs [V19 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V20 tmp1 [V20 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V21 tmp2 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
-; V22 tmp3 [V22,T33] ( 3, 6 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
-; V23 tmp4 [V23,T41] ( 3, 6 ) int -> rbx "impAppendStmt"
+; V22 tmp3 [V22,T32] ( 3, 6 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V23 tmp4 [V23,T40] ( 3, 6 ) int -> rbx "impAppendStmt"
;* V24 tmp5 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V25 tmp6 [V25 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V26 tmp7 [V26 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V27 tmp8 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
-; V28 tmp9 [V28,T34] ( 3, 6 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V28 tmp9 [V28,T33] ( 3, 6 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V29 tmp10 [V29 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V30 tmp11 [V30 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V31 tmp12 [V31 ] ( 0, 0 ) int -> zero-ref "dup spill"
@@ -45,7 +45,7 @@
; V34 tmp15 [V34,T124] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V35 tmp16 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp17 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V37 tmp18 [V37,T35] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V37 tmp18 [V37,T34] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V38 tmp19 [V38 ] ( 0, 0 ) ref -> zero-ref
; V39 tmp20 [V39,T94] ( 2, 2 ) ref -> rcx single-def
;* V40 tmp21 [V40,T113] ( 0, 0 ) int -> zero-ref
@@ -63,14 +63,14 @@
;* V52 tmp33 [V52 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V53 tmp34 [V53 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V54 tmp35 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
-; V55 tmp36 [V55,T36] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V55 tmp36 [V55,T35] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
; V56 tmp37 [V56,T62] ( 2, 4 ) int -> rdx "Inlining Arg"
;* V57 tmp38 [V57 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V58 tmp39 [V58,T04] ( 12, 12 ) int -> rbx "Inline return value spill temp"
-; V59 tmp40 [V59,T42] ( 3, 6 ) int -> rbx "Inlining Arg"
-; V60 tmp41 [V60,T43] ( 3, 6 ) int -> rdx "Inlining Arg"
+; V59 tmp40 [V59,T41] ( 3, 6 ) int -> rbx "Inlining Arg"
+; V60 tmp41 [V60,T42] ( 3, 6 ) int -> rdx "Inlining Arg"
; V61 tmp42 [V61,T11] ( 4, 8 ) ref -> rdx class-hnd single-def "Inlining Arg" <ubyte[]>
-; V62 tmp43 [V62,T32] ( 4, 6 ) int -> r8 "Inlining Arg"
+; V62 tmp43 [V62,T43] ( 3, 6 ) int -> rcx "Inlining Arg"
;* V63 tmp44 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V64 tmp45 [V64 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
; V65 tmp46 [V65,T27] ( 6, 6 ) byref -> registers "Inline stloc first use temp"
@@ -191,8 +191,8 @@
; V180 tmp161 [V180,T71] ( 2, 4 ) long -> r8 "Inlining Arg"
; V181 tmp162 [V181,T05] ( 6, 12 ) ref -> rcx class-hnd "Inlining Arg" <System.Threading.SemaphoreSlim>
; V182 tmp163 [V182,T08] ( 5, 10 ) byref -> rsi single-def "Inlining Arg"
-; V183 tmp164 [V183,T37] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox[int]>
-; V184 tmp165 [V184,T38] ( 3, 6 ) byref -> rcx single-def "Inlining Arg"
+; V183 tmp164 [V183,T36] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox[int]>
+; V184 tmp165 [V184,T37] ( 3, 6 ) byref -> rcx single-def "Inlining Arg"
; V185 tmp166 [V185 ] ( 6, 6 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V04.m_task (fldOffset=0x0)" P-DEP
; V186 tmp167 [V186 ] ( 6, 6 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V04.m_options (fldOffset=0x8)" P-DEP
;* V187 tmp168 [V187 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
@@ -257,17 +257,17 @@
;* V246 tmp227 [V246 ] ( 0, 0 ) int -> zero-ref "field V176._length (fldOffset=0x8)" P-INDEP
;* V247 tmp228 [V247 ] ( 0, 0 ) byref -> zero-ref single-def "field V177._reference (fldOffset=0x0)" P-INDEP
;* V248 tmp229 [V248 ] ( 0, 0 ) int -> zero-ref "field V177._length (fldOffset=0x8)" P-INDEP
-; V249 tmp230 [V249,T39] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
+; V249 tmp230 [V249,T38] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
; V250 tmp231 [V250 ] ( 4, 8 ) struct (16) [rbp-0xE0] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlyMemory`1[ubyte]>
; V251 tmp232 [V251,T58] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
; V252 tmp233 [V252 ] ( 6, 12 ) struct (16) [rbp-0xF0] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Memory`1[ubyte]>
; V253 tmp234 [V253,T59] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
-; V254 tmp235 [V254,T40] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
+; V254 tmp235 [V254,T39] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
; V255 tmp236 [V255,T60] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
; V256 tmp237 [V256,T61] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
; V257 PSPSym [V257,T123] ( 1, 1 ) long -> [rbp-0x110] do-not-enreg[V] "PSPSym"
; V258 cse0 [V258,T90] ( 3, 3 ) int -> rdx "CSE - conservative"
-; V259 cse1 [V259,T91] ( 3, 3 ) int -> r8 "CSE - conservative"
+; V259 cse1 [V259,T91] ( 3, 3 ) int -> rcx "CSE - conservative"
; V260 cse2 [V260,T92] ( 3, 3 ) int -> r14 "CSE - conservative"
; V261 cse3 [V261,T93] ( 3, 3 ) int -> rax "CSE - conservative"
; V262 cse4 [V262,T03] ( 12, 12 ) ref -> rdx multi-def "CSE - aggressive"
@@ -387,7 +387,7 @@ G_M33324_IG06: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00
call [<unknown method>]
; gcrRegs -[rax rdx]
; gcr arg pop 0
- jmp G_M33324_IG94
+ jmp G_M33324_IG93
;; size=55 bbWeight=1 PerfScore 15.25
G_M33324_IG07: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, gcvars, byref, nogc
; gcrRegs +[rdi]
@@ -431,8 +431,8 @@ G_M33324_IG11: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi},
xor edx, edx
mov dword ptr [rsi+0x14], edx
mov edx, dword ptr [rdi+0x34]
- mov r8d, dword ptr [rdi+0x30]
- sub edx, r8d
+ mov ecx, dword ptr [rdi+0x30]
+ sub edx, ecx
test edx, edx
jle G_M33324_IG18
mov ebx, dword ptr [rsi+0x34]
@@ -443,14 +443,13 @@ G_M33324_IG11: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi},
mov rdx, gword ptr [rdi+0x20]
; gcrRegs +[rdx]
test rdx, rdx
- je G_M33324_IG77
- mov ecx, r8d
- mov eax, ebx
- add rcx, rax
- mov eax, dword ptr [rdx+0x08]
- cmp rcx, rax
+ je G_M33324_IG76
+ mov eax, ecx
+ mov r8d, ebx
+ add rax, r8
+ mov r8d, dword ptr [rdx+0x08]
+ cmp rax, r8
ja G_M33324_IG76
- mov ecx, r8d
lea r14, bword ptr [rdx+rcx+0x10]
; byrRegs +[r14]
mov r15d, ebx
@@ -494,7 +493,7 @@ G_M33324_IG11: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi},
mov r12d, edx
; gcrRegs -[r12]
jmp SHORT G_M33324_IG13
- ;; size=180 bbWeight=1 PerfScore 42.50
+ ;; size=176 bbWeight=1 PerfScore 42.25
G_M33324_IG12: ; bbWeight=1, gcrefRegs=0180 {rdi r8}, byrefRegs=6040 {rsi r13 r14}, byref
; gcrRegs +[r8]
; byrRegs -[rax]
@@ -560,7 +559,7 @@ G_M33324_IG14: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=5040 {rsi r1
; gcr arg pop 0
mov r13d, dword ptr [rbp-0xA4]
cmp r15d, r13d
- ja G_M33324_IG78
+ ja G_M33324_IG77
mov r8d, r15d
mov rcx, r12
; byrRegs +[rcx]
@@ -575,7 +574,7 @@ G_M33324_IG15: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi},
cmp ebx, dword ptr [rsi+0x34]
jne SHORT G_M33324_IG16
mov dword ptr [rbp-0x40], ebx
- jmp G_M33324_IG82
+ jmp G_M33324_IG81
;; size=13 bbWeight=1 PerfScore 7.00
G_M33324_IG16: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
test ebx, ebx
@@ -584,7 +583,7 @@ G_M33324_IG16: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi},
; byrRegs +[rdx]
mov r14d, dword ptr [rdx+0x0C]
cmp ebx, r14d
- ja G_M33324_IG79
+ ja G_M33324_IG78
mov r15, gword ptr [rdx]
; gcrRegs +[r15]
mov r13d, ebx
@@ -850,7 +849,7 @@ G_M33324_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
; gcrRegs -[r14]
add ebx, dword ptr [rsi+0x14]
mov dword ptr [rbp-0x40], ebx
- jmp G_M33324_IG88
+ jmp G_M33324_IG87
;; size=11 bbWeight=1 PerfScore 6.00
G_M33324_IG31: ; bbWeight=1, gcrefRegs=8080 {rdi r15}, byrefRegs=0040 {rsi}, byref
; gcrRegs +[rdi r15]
@@ -911,7 +910,7 @@ G_M33324_IG35: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
call [<unknown method>]
; gcrRegs -[rax rdx]
; gcr arg pop 0
- jmp G_M33324_IG84
+ jmp G_M33324_IG83
;; size=64 bbWeight=1 PerfScore 15.50
G_M33324_IG36: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, nogc
; gcrRegs +[rdi]
@@ -997,7 +996,7 @@ G_M33324_IG43: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
call [<unknown method>]
; gcrRegs -[rax rdx]
; gcr arg pop 0
- jmp G_M33324_IG86
+ jmp G_M33324_IG85
;; size=67 bbWeight=1 PerfScore 15.75
G_M33324_IG44: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
; gcrRegs +[rdi]
@@ -1212,7 +1211,7 @@ G_M33324_IG59: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
call [<unknown method>]
; gcrRegs -[rax rdx]
; gcr arg pop 0
- jmp G_M33324_IG90
+ jmp G_M33324_IG89
;; size=73 bbWeight=1 PerfScore 15.75
G_M33324_IG60: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
; gcrRegs +[rdi]
@@ -1453,7 +1452,7 @@ G_M33324_IG75: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=9040 {rsi r1
; gcr arg pop 0
mov r14d, dword ptr [rbp-0xBC]
cmp r13d, r14d
- ja SHORT G_M33324_IG78
+ ja SHORT G_M33324_IG77
mov r8d, r13d
mov rcx, r12
; byrRegs +[rcx]
@@ -1462,7 +1461,7 @@ G_M33324_IG75: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=9040 {rsi r1
call [<unknown method>]
; byrRegs -[rcx rdx r12 r15]
; gcr arg pop 0
- jmp SHORT G_M33324_IG80
+ jmp SHORT G_M33324_IG79
;; size=48 bbWeight=1 PerfScore 13.00
G_M33324_IG76: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rdi]
@@ -1472,30 +1471,25 @@ G_M33324_IG76: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
; gcr arg pop 0
int3
;; size=14 bbWeight=0 PerfScore 0.00
-G_M33324_IG77: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
- test r8d, r8d
- jne SHORT G_M33324_IG76
- jmp SHORT G_M33324_IG76
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M33324_IG78: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
+G_M33324_IG77: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
call [System.ThrowHelper:ThrowArgumentException_DestinationTooShort()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M33324_IG79: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
+G_M33324_IG78: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
mov ecx, 33
call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
; gcr arg pop 0
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M33324_IG80: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
+G_M33324_IG79: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
add dword ptr [rdi+0x30], ebx
add ebx, dword ptr [rsi+0x14]
mov dword ptr [rbp-0x40], ebx
;; size=9 bbWeight=1 PerfScore 7.00
-G_M33324_IG81: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
+G_M33324_IG80: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
cmp dword ptr [rbp-0x3C], 0
- jge SHORT G_M33324_IG92
+ jge SHORT G_M33324_IG91
mov rcx, gword ptr [rdi+0x08]
; gcrRegs +[rcx]
cmp byte ptr [rcx], cl
@@ -1504,63 +1498,63 @@ G_M33324_IG81: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi},
call [<unknown method>]
; gcrRegs -[rcx rdi]
; gcr arg pop 0
- jmp SHORT G_M33324_IG92
+ jmp SHORT G_M33324_IG91
...
-34 (-0.28%) : 14291.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
@@ -60,7 +60,7 @@
; V49 tmp36 [V49,T166] ( 2, 8 ) int -> r8 "Strict ordering of exceptions for Array store"
; V50 tmp37 [V50,T167] ( 2, 8 ) int -> r8 "Strict ordering of exceptions for Array store"
; V51 tmp38 [V51,T168] ( 2, 8 ) int -> r8 "Strict ordering of exceptions for Array store"
-; V52 tmp39 [V52,T348] ( 3, 1.50) long -> rcx single-def "Inline stloc first use temp"
+; V52 tmp39 [V52,T348] ( 2, 1 ) long -> rcx single-def "Inline stloc first use temp"
;* V53 tmp40 [V53,T349] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V54 tmp41 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V55 tmp42 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
@@ -109,7 +109,7 @@
;* V98 tmp85 [V98 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V99 tmp86 [V99 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V100 tmp87 [V100 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V101 tmp88 [V101,T120] ( 3, 10 ) long -> rdx "Inline stloc first use temp"
+; V101 tmp88 [V101,T120] ( 2, 8 ) long -> rdx "Inline stloc first use temp"
;* V102 tmp89 [V102,T127] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V103 tmp90 [V103 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V104 tmp91 [V104 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
@@ -537,7 +537,7 @@ G_M11467_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
call [r14+0x10]<unknown method>
; gcrRegs -[rcx rdx rbx]
; gcr arg pop 0
- jmp G_M11467_IG266
+ jmp G_M11467_IG264
;; size=32 bbWeight=0.50 PerfScore 5.75
G_M11467_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rsi rdi]
@@ -585,12 +585,12 @@ G_M11467_IG05: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
; gcr arg pop 0
mov ecx, dword ptr [r15+0x08]
test ecx, ecx
- jl G_M11467_IG269
+ jl G_M11467_IG267
mov r13d, ecx
test ecx, ecx
jle G_M11467_IG45
cmp dword ptr [r15+0x08], 0
- jbe G_M11467_IG268
+ jbe G_M11467_IG266
movzx r12, byte ptr [r15+0x10]
cmp r12d, 0xD1FFAB1E
jne SHORT G_M11467_IG06
@@ -749,7 +749,7 @@ G_M11467_IG17: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
cmp r8d, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
mov eax, r8d
movzx rdx, word ptr [rdx+2*rax+0x10]
; gcrRegs -[rdx]
@@ -761,7 +761,7 @@ G_M11467_IG18: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
; gcrRegs +[rdx]
lea eax, [r8+0x01]
cmp eax, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
lea eax, [r8+0x01]
movzx rdx, word ptr [rdx+2*rax+0x10]
; gcrRegs -[rdx]
@@ -773,7 +773,7 @@ G_M11467_IG19: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
; gcrRegs +[rdx]
lea eax, [r8+0x02]
cmp eax, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
add r8d, 2
movzx r8, word ptr [rdx+2*r8+0x10]
mov word ptr [rdi+0x16], r8w
@@ -784,7 +784,7 @@ G_M11467_IG20: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
mov rdx, gword ptr [r8]
; gcrRegs +[rdx]
cmp r9d, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
mov r8d, r9d
movzx r8, word ptr [rdx+2*r8+0x10]
mov word ptr [rdi+0x18], r8w
@@ -796,7 +796,7 @@ G_M11467_IG21: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
; gcrRegs +[rdx]
lea r8d, [r9+0x01]
cmp r8d, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
lea r8d, [r9+0x01]
movzx r8, word ptr [rdx+2*r8+0x10]
mov word ptr [rdi+0x1A], r8w
@@ -810,7 +810,7 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
; gcrRegs +[r8]
lea eax, [r9+0x02]
cmp eax, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
add r9d, 2
movzx r8, word ptr [r8+2*r9+0x10]
; gcrRegs -[r8]
@@ -818,7 +818,7 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
mov r8, rdx
; gcrRegs +[r8]
cmp ecx, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
mov r9d, ecx
movzx r8, word ptr [r8+2*r9+0x10]
; gcrRegs -[r8]
@@ -827,7 +827,7 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
; gcrRegs +[r8]
lea r9d, [rcx+0x01]
cmp r9d, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
lea r9d, [rcx+0x01]
movzx r8, word ptr [r8+2*r9+0x10]
; gcrRegs -[r8]
@@ -837,7 +837,7 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
lea edx, [rcx+0x02]
; gcrRegs -[rdx]
cmp edx, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
add ecx, 2
movzx r8, word ptr [r8+2*rcx+0x10]
; gcrRegs -[r8]
@@ -862,7 +862,7 @@ G_M11467_IG24: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
cmp r13d, r12d
je G_M11467_IG45
cmp r12d, dword ptr [r15+0x08]
- jae G_M11467_IG268
+ jae G_M11467_IG266
mov edx, r12d
movzx rax, byte ptr [r15+rdx+0x10]
mov dword ptr [rsp+0xF4], eax
@@ -1040,7 +1040,7 @@ G_M11467_IG38: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
cmp r8d, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
mov eax, r8d
movzx rdx, word ptr [rdx+2*rax+0x10]
; gcrRegs -[rdx]
@@ -1052,7 +1052,7 @@ G_M11467_IG39: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
; gcrRegs +[rdx]
lea eax, [r8+0x01]
cmp eax, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
lea eax, [r8+0x01]
movzx rdx, word ptr [rdx+2*rax+0x10]
; gcrRegs -[rdx]
@@ -1064,7 +1064,7 @@ G_M11467_IG40: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
; gcrRegs +[rdx]
lea eax, [r8+0x02]
cmp eax, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
add r8d, 2
movzx r8, word ptr [rdx+2*r8+0x10]
mov word ptr [rdi+0x16], r8w
@@ -1075,7 +1075,7 @@ G_M11467_IG41: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
mov rdx, gword ptr [r8]
; gcrRegs +[rdx]
cmp r9d, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
mov r8d, r9d
movzx r8, word ptr [rdx+2*r8+0x10]
mov word ptr [rdi+0x18], r8w
@@ -1087,7 +1087,7 @@ G_M11467_IG42: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
; gcrRegs +[rdx]
lea r8d, [r9+0x01]
cmp r8d, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
lea r8d, [r9+0x01]
movzx r8, word ptr [rdx+2*r8+0x10]
mov word ptr [rdi+0x1A], r8w
@@ -1101,7 +1101,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
; gcrRegs +[r8]
lea eax, [r9+0x02]
cmp eax, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
add r9d, 2
movzx r8, word ptr [r8+2*r9+0x10]
; gcrRegs -[r8]
@@ -1109,7 +1109,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
mov r8, rdx
; gcrRegs +[r8]
cmp ecx, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
mov r9d, ecx
movzx r8, word ptr [r8+2*r9+0x10]
; gcrRegs -[r8]
@@ -1118,7 +1118,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
; gcrRegs +[r8]
lea r9d, [rcx+0x01]
cmp r9d, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
lea r9d, [rcx+0x01]
movzx r8, word ptr [r8+2*r9+0x10]
; gcrRegs -[r8]
@@ -1128,7 +1128,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
lea edx, [rcx+0x02]
; gcrRegs -[rdx]
cmp edx, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
add ecx, 2
movzx r8, word ptr [r8+2*rcx+0x10]
; gcrRegs -[r8]
@@ -1187,7 +1187,7 @@ G_M11467_IG46: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
call [r14+0x10]<unknown method>
; gcrRegs -[rcx rdx rsi r15]
; gcr arg pop 0
- jmp G_M11467_IG97
+ jmp G_M11467_IG95
;; size=67 bbWeight=0.50 PerfScore 9.12
G_M11467_IG47: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000000000000000400000000000000000200000000000000000000000000000 {V01 V07}, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r15]
@@ -1202,38 +1202,32 @@ G_M11467_IG47: ; bbWeight=0.50, gcVars=0000000000000000000000000000000000
; gcr arg pop 0
mov ecx, dword ptr [r15+0x08]
test ecx, ecx
- jl G_M11467_IG269
+ jl G_M11467_IG267
mov r12d, ecx
test ecx, ecx
- jle G_M11467_IG96
+ jle G_M11467_IG94
cmp dword ptr [r15+0x08], 0
- jbe G_M11467_IG268
+ jbe G_M11467_IG266
mov r13, qword ptr [r15+0x10]
mov rcx, 0xD1FFAB1E
and rcx, r13
- je SHORT G_M11467_IG48
- mov rax, 0xD1FFAB1E
- cmp rcx, rax
- je SHORT G_M11467_IG49
- jmp SHORT G_M11467_IG49
- ;; size=90 bbWeight=0.50 PerfScore 10.62
-G_M11467_IG48: ; bbWeight=0.50, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
+ jne SHORT G_M11467_IG48
mov rcx, 0xD1FFAB1E
and r13, rcx
mov rcx, 0xD1FFAB1E
or r13, rcx
...
benchmarks.run_pgo.windows.x64.checked.mch
-24 (-17.78%) : 35970.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 7.67) ref -> rbx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V00 this [V00,T00] ( 7, 6.76) ref -> rbx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
; V01 arg1 [V01,T03] ( 4, 3 ) byref -> [rsp+0x58] single-def
; V02 loc0 [V02,T01] ( 6, 5.67) int -> rsi
; V03 loc1 [V03,T05] ( 4, 3.84) ref -> rdi class-hnd single-def <<unknown class>>
@@ -17,9 +17,9 @@
; 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 cse0 [V07,T06] ( 3, 2.92) int -> rbp "CSE - aggressive"
-; V08 rat0 [V08,T04] ( 2, 3.67) long -> rax "Spilling to split statement for tree"
+;* V08 rat0 [V08,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V10 rat2 [V10,T02] ( 2, 3.67) long -> rax "fgMakeTemp is creating a new local variable"
+;* V10 rat2 [V10,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 40
@@ -29,10 +29,9 @@ G_M49890_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbp
push rbx
sub rsp, 40
- mov qword ptr [rsp+0x20], rcx
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=16 bbWeight=1 PerfScore 5.50
+ ;; size=11 bbWeight=1 PerfScore 4.50
G_M49890_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref, isz
; byrRegs +[rdx]
mov esi, dword ptr [rbx+0x10]
@@ -41,7 +40,7 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx},
; gcrRegs +[rdi]
mov ebp, dword ptr [rdi+0x08]
cmp ebp, esi
- jbe SHORT G_M49890_IG05
+ jbe SHORT G_M49890_IG04
;; size=16 bbWeight=1 PerfScore 7.50
G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=0088 {rbx rdi}, byrefRegs=0004 {rdx}, byref, isz
mov bword ptr [rsp+0x58], rdx
@@ -58,24 +57,16 @@ G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=0088 {rbx rdi}, byrefRegs=0004
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rdx]
; byrRegs -[rcx]
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax]
- mov rax, qword ptr [rax+0x18]
- test rax, rax
- jne SHORT G_M49890_IG07
- ;; size=47 bbWeight=0.92 PerfScore 16.99
-G_M49890_IG04: ; bbWeight=0.18, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M49890_IG07
- ;; size=2 bbWeight=0.18 PerfScore 0.37
-G_M49890_IG05: ; bbWeight=0.08, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref
+ jmp SHORT G_M49890_IG06
+ ;; size=30 bbWeight=0.92 PerfScore 10.33
+G_M49890_IG04: ; bbWeight=0.08, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref
; gcrRegs -[rdi]
; byrRegs +[rdx]
xor rax, rax
; gcrRegs +[rax]
mov gword ptr [rdx], rax
;; size=5 bbWeight=0.08 PerfScore 0.10
-G_M49890_IG06: ; bbWeight=0.08, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M49890_IG05: ; bbWeight=0.08, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax]
; byrRegs -[rdx]
add rsp, 40
@@ -85,19 +76,19 @@ G_M49890_IG06: ; bbWeight=0.08, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
pop rdi
ret
;; size=9 bbWeight=0.08 PerfScore 0.27
-G_M49890_IG07: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M49890_IG06: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rdi]
movsxd rax, esi
mov ecx, ebp
cmp rax, rcx
- jae SHORT G_M49890_IG09
+ jae SHORT G_M49890_IG08
movsxd rax, esi
xor rcx, rcx
; gcrRegs +[rcx]
mov gword ptr [rdi+8*rax+0x10], rcx
mov eax, 1
;; size=25 bbWeight=0.92 PerfScore 3.21
-G_M49890_IG08: ; bbWeight=0.92, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.92, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -105,14 +96,14 @@ G_M49890_IG08: ; bbWeight=0.92, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=0.92 PerfScore 2.98
-G_M49890_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M49890_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx rdi]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 135, prolog size 13, PerfScore 36.93, instruction count 51, allocated bytes for code 135 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 111, prolog size 8, PerfScore 28.90, instruction count 44, allocated bytes for code 111 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
-24 (-17.78%) : 38459.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 7.69) ref -> rbx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V00 this [V00,T00] ( 7, 6.77) ref -> rbx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
; V01 arg1 [V01,T03] ( 4, 3 ) byref -> [rsp+0x58] single-def
; V02 loc0 [V02,T01] ( 6, 5.69) int -> rsi
; V03 loc1 [V03,T05] ( 4, 3.84) ref -> rdi class-hnd single-def <<unknown class>>
@@ -17,9 +17,9 @@
; 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 cse0 [V07,T06] ( 3, 2.92) int -> rbp "CSE - aggressive"
-; V08 rat0 [V08,T04] ( 2, 3.69) long -> rax "Spilling to split statement for tree"
+;* V08 rat0 [V08,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V10 rat2 [V10,T02] ( 2, 3.69) long -> rax "fgMakeTemp is creating a new local variable"
+;* V10 rat2 [V10,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 40
@@ -29,10 +29,9 @@ G_M49890_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbp
push rbx
sub rsp, 40
- mov qword ptr [rsp+0x20], rcx
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=16 bbWeight=1 PerfScore 5.50
+ ;; size=11 bbWeight=1 PerfScore 4.50
G_M49890_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref, isz
; byrRegs +[rdx]
mov esi, dword ptr [rbx+0x10]
@@ -41,7 +40,7 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx},
; gcrRegs +[rdi]
mov ebp, dword ptr [rdi+0x08]
cmp ebp, esi
- jbe SHORT G_M49890_IG05
+ jbe SHORT G_M49890_IG04
;; size=16 bbWeight=1 PerfScore 7.50
G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=0088 {rbx rdi}, byrefRegs=0004 {rdx}, byref, isz
mov bword ptr [rsp+0x58], rdx
@@ -58,24 +57,16 @@ G_M49890_IG03: ; bbWeight=0.92, gcrefRegs=0088 {rbx rdi}, byrefRegs=0004
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rdx]
; byrRegs -[rcx]
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax]
- mov rax, qword ptr [rax+0x18]
- test rax, rax
- jne SHORT G_M49890_IG07
- ;; size=47 bbWeight=0.92 PerfScore 17.06
-G_M49890_IG04: ; bbWeight=0.18, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M49890_IG07
- ;; size=2 bbWeight=0.18 PerfScore 0.37
-G_M49890_IG05: ; bbWeight=0.08, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref
+ jmp SHORT G_M49890_IG06
+ ;; size=30 bbWeight=0.92 PerfScore 10.38
+G_M49890_IG04: ; bbWeight=0.08, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref
; gcrRegs -[rdi]
; byrRegs +[rdx]
xor rax, rax
; gcrRegs +[rax]
mov gword ptr [rdx], rax
;; size=5 bbWeight=0.08 PerfScore 0.10
-G_M49890_IG06: ; bbWeight=0.08, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M49890_IG05: ; bbWeight=0.08, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax]
; byrRegs -[rdx]
add rsp, 40
@@ -85,19 +76,19 @@ G_M49890_IG06: ; bbWeight=0.08, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
pop rdi
ret
;; size=9 bbWeight=0.08 PerfScore 0.25
-G_M49890_IG07: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M49890_IG06: ; bbWeight=0.92, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rdi]
movsxd rax, esi
mov ecx, ebp
cmp rax, rcx
- jae SHORT G_M49890_IG09
+ jae SHORT G_M49890_IG08
movsxd rax, esi
xor rcx, rcx
; gcrRegs +[rcx]
mov gword ptr [rdi+8*rax+0x10], rcx
mov eax, 1
;; size=25 bbWeight=0.92 PerfScore 3.23
-G_M49890_IG08: ; bbWeight=0.92, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.92, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -105,14 +96,14 @@ G_M49890_IG08: ; bbWeight=0.92, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=0.92 PerfScore 3.00
-G_M49890_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M49890_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx rdi]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 135, prolog size 13, PerfScore 37.01, instruction count 51, allocated bytes for code 135 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 111, prolog size 8, PerfScore 28.95, instruction count 44, allocated bytes for code 111 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
-24 (-17.14%) : 38453.dasm - System.Collections.Generic.Stack1[System.ValueTuple3[System.Canon,System.Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 7.64) ref -> rbx this class-hnd single-def <System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]>
+; V00 this [V00,T00] ( 7, 6.73) ref -> rbx this class-hnd single-def <System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]>
; V01 arg1 [V01,T02] ( 4, 3 ) byref -> rdx single-def
; V02 loc0 [V02,T04] ( 4, 3.82) int -> rcx
; V03 loc1 [V03,T05] ( 3, 2.91) ref -> r8 class-hnd exact single-def <<unknown class>>
@@ -20,9 +20,9 @@
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.Item2 (fldOffset=0x8)" P-INDEP
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.Item3 (fldOffset=0x10)" P-INDEP
; V10 cse0 [V10,T06] ( 3, 2.73) byref -> rbp "CSE - aggressive"
-; V11 rat0 [V11,T03] ( 2, 3.64) long -> rax "Spilling to split statement for tree"
+;* V11 rat0 [V11,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V12 rat1 [V12,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V13 rat2 [V13,T01] ( 2, 3.64) long -> rax "fgMakeTemp is creating a new local variable"
+;* V13 rat2 [V13,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 40
@@ -32,10 +32,9 @@ G_M60687_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
push rbp
push rbx
sub rsp, 40
- mov qword ptr [rsp+0x20], rcx
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=16 bbWeight=1 PerfScore 5.50
+ ;; size=11 bbWeight=1 PerfScore 4.50
G_M60687_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref, isz
; byrRegs +[rdx]
mov ecx, dword ptr [rbx+0x10]
@@ -43,7 +42,7 @@ G_M60687_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx},
mov r8, gword ptr [rbx+0x08]
; gcrRegs +[r8]
cmp dword ptr [r8+0x08], ecx
- jbe SHORT G_M60687_IG05
+ jbe SHORT G_M60687_IG04
;; size=15 bbWeight=1 PerfScore 8.25
G_M60687_IG03: ; bbWeight=0.91, gcrefRegs=0108 {rbx r8}, byrefRegs=0004 {rdx}, byref, isz
inc dword ptr [rbx+0x14]
@@ -61,25 +60,16 @@ G_M60687_IG03: ; bbWeight=0.91, gcrefRegs=0108 {rbx r8}, byrefRegs=0004 {
; byrRegs -[rdx]
call CORINFO_HELP_ASSIGN_BYREF
call CORINFO_HELP_ASSIGN_BYREF
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax]
- mov rax, qword ptr [rax+0x20]
- test rax, rax
- jne SHORT G_M60687_IG07
- ;; size=57 bbWeight=0.91 PerfScore 16.83
-G_M60687_IG04: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz
- ; byrRegs -[rsi rdi]
- jmp SHORT G_M60687_IG07
- ;; size=2 bbWeight=0.18 PerfScore 0.36
-G_M60687_IG05: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref
- ; byrRegs -[rbp] +[rdx]
+ jmp SHORT G_M60687_IG06
+ ;; size=40 bbWeight=0.91 PerfScore 10.23
+G_M60687_IG04: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref
+ ; byrRegs -[rbp rsi rdi] +[rdx]
xor eax, eax
mov qword ptr [rdx], rax
mov qword ptr [rdx+0x08], rax
mov qword ptr [rdx+0x10], rax
;; size=13 bbWeight=0.09 PerfScore 0.29
-G_M60687_IG06: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M60687_IG05: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rdx]
add rsp, 40
pop rbx
@@ -88,7 +78,7 @@ G_M60687_IG06: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
pop rdi
ret
;; size=9 bbWeight=0.09 PerfScore 0.29
-G_M60687_IG07: ; bbWeight=0.91, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, gcvars, byref
+G_M60687_IG06: ; bbWeight=0.91, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, gcvars, byref
; byrRegs +[rbp]
xor eax, eax
mov qword ptr [rbp], rax
@@ -96,7 +86,7 @@ G_M60687_IG07: ; bbWeight=0.91, gcVars=0000000000000000 {}, gcrefRegs=000
mov qword ptr [rbp+0x10], rax
mov eax, 1
;; size=19 bbWeight=0.91 PerfScore 3.18
-G_M60687_IG08: ; bbWeight=0.91, epilog, nogc, extend
+G_M60687_IG07: ; bbWeight=0.91, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -105,7 +95,7 @@ G_M60687_IG08: ; bbWeight=0.91, epilog, nogc, extend
ret
;; size=9 bbWeight=0.91 PerfScore 2.96
-Total bytes of code 140, prolog size 13, PerfScore 37.67, instruction count 50, allocated bytes for code 140 (MethodHash=056e12f0) for method System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 116, prolog size 8, PerfScore 29.71, instruction count 43, allocated bytes for code 116 (MethodHash=056e12f0) for method System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
+3 (+0.49%) : 33840.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
@@ -21,7 +21,7 @@
;* V09 tmp3 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V10 tmp4 [V10,T06] ( 3, 2 ) int -> rax "Inline stloc first use temp"
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V12 tmp6 [V12,T05] ( 6, 3.00) int -> rdi "Inline return value spill temp"
+; V12 tmp6 [V12,T04] ( 6, 3.00) int -> rdi "Inline return value spill temp"
; V13 tmp7 [V13,T02] ( 3, 4.00) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Net.Sockets.SafeSocketHandle>
;* V14 tmp8 [V14,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp9 [V15,T03] ( 2, 2.00) ref -> rsi single-def "field V02._source (fldOffset=0x0)" P-INDEP
@@ -30,7 +30,7 @@
; V18 tmp12 [V18,T13] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
; V19 tmp13 [V19,T14] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
; V20 PSPSym [V20,T08] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
-; V21 cse0 [V21,T04] ( 3, 3.00) ref -> rax "CSE - aggressive"
+; V21 cse0 [V21,T05] ( 3, 3 ) ref -> rcx "CSE - aggressive"
;
; Lcl frame size = 56
@@ -56,14 +56,14 @@ G_M38239_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M38239_IG02: ; bbWeight=1, gcVars=0000000000000003 {V00 V01}, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
cmp dword ptr [rcx+0x68], 0
- jne G_M38239_IG14
+ jne G_M38239_IG13
test rbx, rbx
- je G_M38239_IG15
+ je G_M38239_IG14
mov rax, gword ptr [rbx+0x28]
; gcrRegs +[rax]
mov gword ptr [rbp-0x20], rax
cmp gword ptr [rbx+0x50], 0
- je G_M38239_IG16
+ je G_M38239_IG15
;; size=38 bbWeight=1 PerfScore 12.25
G_M38239_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rcx]
@@ -74,7 +74,7 @@ G_M38239_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
lock
cmpxchg dword ptr [rdx], r8d
test eax, eax
- jne G_M38239_IG18
+ jne G_M38239_IG17
;; size=28 bbWeight=1 PerfScore 20.25
G_M38239_IG04: ; bbWeight=1.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx]
@@ -89,7 +89,7 @@ G_M38239_IG04: ; bbWeight=1.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
cmp byte ptr [rbx+0xFA], 0
jne SHORT G_M38239_IG12
;; size=32 bbWeight=1.00 PerfScore 7.52
-G_M38239_IG05: ; bbWeight=1.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M38239_IG05: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0xB0]
; gcrRegs +[rcx]
lea rcx, bword ptr [rcx+0x08]
@@ -102,22 +102,20 @@ G_M38239_IG05: ; bbWeight=1.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; byrRegs -[rcx]
mov rdx, gword ptr [rbp+0x10]
; gcrRegs +[rdx]
- mov rax, gword ptr [rdx+0x10]
- ; gcrRegs +[rax]
- mov gword ptr [rbp-0x28], rax
+ mov rcx, gword ptr [rdx+0x10]
+ ; gcrRegs +[rcx]
+ mov gword ptr [rbp-0x28], rcx
; GC ptr vars +{V04}
- test rax, rax
- je SHORT G_M38239_IG13
- ;; size=36 bbWeight=1.00 PerfScore 9.01
-G_M38239_IG06: ; bbWeight=1.00, gcVars=0000000000000203 {V00 V01 V04}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax rdx]
- mov rdx, gword ptr [rbp+0x10]
- ; gcrRegs +[rdx]
+ test rcx, rcx
+ je G_M38239_IG18
+ ;; size=40 bbWeight=1 PerfScore 9.00
+G_M38239_IG06: ; bbWeight=1.00, gcVars=0000000000000203 {V00 V01 V04}, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rcx]
mov rax, gword ptr [rdx+0x08]
; gcrRegs +[rax]
cmp gword ptr [rbx+0x18], 0
je SHORT G_M38239_IG08
- ;; size=15 bbWeight=1.00 PerfScore 7.00
+ ;; size=11 bbWeight=1.00 PerfScore 6.00
G_M38239_IG07: ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx rsi]
mov rcx, rbx
@@ -178,21 +176,9 @@ G_M38239_IG12: ; bbWeight=0.00, gcVars=0000000000000003 {V00 V01}, gcrefR
; byrRegs -[rcx]
jmp G_M38239_IG05
;; size=23 bbWeight=0.00 PerfScore 0.01
-G_M38239_IG13: ; bbWeight=0, gcVars=0000000000000203 {V00 V01 V04}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars +{V04}
- mov rdx, gword ptr [rbp+0x10]
- ; gcrRegs +[rdx]
- lea rcx, bword ptr [rdx+0x10]
- ; byrRegs +[rcx]
- mov rdx, gword ptr [rbp-0x20]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx]
- ; byrRegs -[rcx]
- jmp SHORT G_M38239_IG06
- ;; size=19 bbWeight=0 PerfScore 0.00
-G_M38239_IG14: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG13: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx rsi]
- ; GC ptr vars -{V00 V01 V04}
+ ; GC ptr vars -{V00 V01}
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)]
@@ -200,7 +186,7 @@ G_M38239_IG14: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000
; gcr arg pop 0
int3
;; size=11 bbWeight=0 PerfScore 0.00
-G_M38239_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38239_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x1BCE
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -213,11 +199,11 @@ G_M38239_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=30 bbWeight=0 PerfScore 0.00
-G_M38239_IG16: ; bbWeight=0, gcVars=0000000000000003 {V00 V01}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38239_IG15: ; bbWeight=0, gcVars=0000000000000003 {V00 V01}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx rsi]
; GC ptr vars +{V00 V01}
cmp gword ptr [rbp-0x20], 0
- jne SHORT G_M38239_IG17
+ jne SHORT G_M38239_IG16
mov rcx, 0xD1FFAB1E ; <unknown class>
; GC ptr vars -{V00 V01}
call CORINFO_HELP_NEWSFAST
@@ -261,7 +247,7 @@ G_M38239_IG16: ; bbWeight=0, gcVars=0000000000000003 {V00 V01}, gcrefRegs
; gcrRegs -[rcx rbx]
; gcr arg pop 0
;; size=112 bbWeight=0 PerfScore 0.00
-G_M38239_IG17: ; bbWeight=0, gcVars=0000000000000003 {V00 V01}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG16: ; bbWeight=0, gcVars=0000000000000003 {V00 V01}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx rsi]
; GC ptr vars +{V00 V01}
lea rdx, [rbp-0x20]
@@ -279,7 +265,7 @@ G_M38239_IG17: ; bbWeight=0, gcVars=0000000000000003 {V00 V01}, gcrefRegs
; byrRegs -[rcx]
jmp G_M38239_IG03
;; size=31 bbWeight=0 PerfScore 0.00
-G_M38239_IG18: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG17: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rsi]
; GC ptr vars -{V00 V01}
mov rcx, rbx
@@ -290,8 +276,22 @@ G_M38239_IG18: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
; gcr arg pop 0
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M38239_IG19: ; bbWeight=0, gcVars=0000000000000202 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG18: ; bbWeight=0, gcVars=0000000000000203 {V00 V01 V04}, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rdx rbx rsi]
; GC ptr vars +{V00 V01 V04}
+ lea rcx, bword ptr [rdx+0x10]
+ ; byrRegs +[rcx]
+ mov rdx, gword ptr [rbp-0x20]
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rdx]
+ ; byrRegs -[rcx]
+ mov rdx, gword ptr [rbp+0x10]
+ ; gcrRegs +[rdx]
+ jmp G_M38239_IG06
+ ;; size=22 bbWeight=0 PerfScore 0.00
+G_M38239_IG19: ; bbWeight=0, gcVars=0000000000000202 {V00 V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rdx rbx rsi]
+ ; GC ptr vars -{V00 V01}
cmp edi, 997
je G_M38239_IG10
mov rcx, gword ptr [rbp+0x10]
@@ -308,7 +308,7 @@ G_M38239_IG19: ; bbWeight=0, gcVars=0000000000000202 {V00 V04}, gcrefRegs
; byrRegs +[rcx]
mov rdx, gword ptr [rbp-0x28]
; gcrRegs +[rdx]
- ; GC ptr vars -{V01 V04}
+ ; GC ptr vars -{V04} +{V00}
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx]
; byrRegs -[rcx]
@@ -357,7 +357,7 @@ G_M38239_IG21: ; bbWeight=0, gcVars=0000000000000203 {V00 V01 V04}, gcref
int3
;; size=43 bbWeight=0 PerfScore 0.00
-Total bytes of code 611, prolog size 37, PerfScore 75.54, instruction count 154, allocated bytes for code 611 (MethodHash=86656aa0) for method System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
+Total bytes of code 614, prolog size 37, PerfScore 74.53, instruction count 153, allocated bytes for code 614 (MethodHash=86656aa0) for method System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
; ============================================================
Unwind Info:
+30 (+0.50%) : 38499.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
@@ -9,13 +9,13 @@
; 36 inlinees with PGO data; 63 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] (198, 82.82) byref -> rbx this single-def
+; V00 this [V00,T00] (198, 82.78) byref -> rbx this single-def
; V01 loc0 [V01,T08] ( 26, 25.29) ushort -> r15
; V02 loc1 [V02,T60] ( 8, 5.04) ubyte -> [rsp+0xB4]
; V03 loc2 [V03,T93] ( 3, 2.01) ubyte -> [rsp+0xB0]
-; V04 loc3 [V04,T51] ( 16, 7.93) int -> r14
+; V04 loc3 [V04,T51] ( 14, 7.92) int -> r14
; V05 loc4 [V05,T77] ( 5, 3.02) int -> r13
-; V06 loc5 [V06,T47] ( 9, 7.90) int -> r12
+; V06 loc5 [V06,T47] ( 9, 7.88) int -> r12
; V07 loc6 [V07,T161] ( 3, 0.01) ref -> r15 class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V08 loc7 [V08,T216] ( 2, 0 ) ref -> r15 class-hnd exact <System.String>
; V09 loc8 [V09,T155] ( 8, 0.01) int -> registers
@@ -71,9 +71,9 @@
; V59 tmp46 [V59,T182] ( 3, 0 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
; V60 tmp47 [V60,T204] ( 3, 0 ) int -> r8 "Inlining Arg"
;* V61 tmp48 [V61 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V62 tmp49 [V62,T67] ( 2, 3.93) ref -> [rsp+0x80] class-hnd exact spill-single-def "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
-; V63 tmp50 [V63,T69] ( 2, 3.93) int -> [rsp+0xAC] spill-single-def "impAppendStmt"
-; V64 tmp51 [V64,T45] ( 5, 9.83) ref -> [rsp+0x78] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
+; V62 tmp49 [V62,T67] ( 2, 3.88) ref -> [rsp+0x80] class-hnd exact spill-single-def "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
+; V63 tmp50 [V63,T69] ( 2, 3.88) int -> [rsp+0xAC] spill-single-def "impAppendStmt"
+; V64 tmp51 [V64,T45] ( 5, 9.69) ref -> [rsp+0x78] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
;* V65 tmp52 [V65 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V66 tmp53 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]>
; V67 tmp54 [V67,T09] ( 6, 28.39) int -> [rsp+0xA8] "Inline stloc first use temp"
@@ -95,9 +95,9 @@
;* V83 tmp70 [V83 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]>
; V84 tmp71 [V84,T57] ( 6, 6.11) int -> [rsp+0xA0] "Inline stloc first use temp"
;* V85 tmp72 [V85 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
-; V86 tmp73 [V86,T68] ( 2, 3.93) ref -> rax class-hnd exact "Inlining Arg" <System.String>
+; V86 tmp73 [V86,T68] ( 2, 3.88) ref -> rax class-hnd exact "Inlining Arg" <System.String>
;* V87 tmp74 [V87 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V88 tmp75 [V88,T53] ( 4, 7.75) ref -> rax class-hnd exact "Inlining Arg" <System.String>
+; V88 tmp75 [V88,T53] ( 4, 7.75) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V89 tmp76 [V89 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V90 tmp77 [V90 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V91 tmp78 [V91,T70] ( 2, 3.88) byref -> r14 "Inlining Arg"
@@ -198,35 +198,35 @@
; V186 tmp173 [V186,T149] ( 3, 0.01) byref -> rcx "Span.get_Item ptrToSpan"
;* V187 tmp174 [V187 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V188 tmp175 [V188,T115] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V189 tmp176 [V189,T28] ( 9, 13.26) ref -> rsi class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
+; V189 tmp176 [V189,T28] ( 9, 13.26) ref -> r12 class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
;* V190 tmp177 [V190 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
;* V191 tmp178 [V191 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
;* V192 tmp179 [V192 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
-; V193 tmp180 [V193,T48] ( 7, 8 ) ref -> rbp class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
+; V193 tmp180 [V193,T48] ( 7, 8 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
; V194 tmp181 [V194,T185] ( 3, 0 ) ref -> rax class-hnd single-def "Inlining Arg" <<unknown class>>
-; V195 tmp182 [V195,T58] ( 7, 6 ) ref -> rbp class-hnd "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
-; V196 tmp183 [V196,T84] ( 2, 2.52) ref -> r14 single-def "CASTCLASS eval op1"
+; V195 tmp182 [V195,T58] ( 7, 6 ) ref -> r14 class-hnd "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
+; V196 tmp183 [V196,T84] ( 2, 2.52) ref -> rsi single-def "CASTCLASS eval op1"
;* V197 tmp184 [V197 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
-; V198 tmp185 [V198,T108] ( 4, 1.38) ref -> r14 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
+; V198 tmp185 [V198,T108] ( 4, 1.38) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V199 tmp186 [V199,T87] ( 3, 2.28) ref -> rdx single-def "CASTCLASS eval op1"
; V200 tmp187 [V200,T89] ( 3, 2.28) long -> rax "fgMakeTemp is creating a new local variable"
; V201 tmp188 [V201,T54] ( 9, 7.36) ref -> rcx class-hnd "spilling QMark2" <<unknown class>>
-; V202 tmp189 [V202,T74] ( 15, 3.20) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V202 tmp189 [V202,T74] ( 15, 3.20) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V203 tmp190 [V203,T133] ( 3, 0.34) ref -> rcx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V204 tmp191 [V204,T123] ( 5, 0.51) int -> rdx "Inline stloc first use temp"
; V205 tmp192 [V205,T131] ( 4, 0.42) ref -> rcx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V206 tmp193 [V206,T124] ( 5, 0.51) int -> rdx "Inline stloc first use temp"
; V207 tmp194 [V207,T106] ( 4, 1.75) ref -> rdx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V208 tmp195 [V208,T91] ( 5, 2.12) int -> rax "Inline stloc first use temp"
-; V209 tmp196 [V209,T34] ( 10, 12.00) ref -> r12 class-hnd "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
-; V210 tmp197 [V210,T29] ( 9, 13.26) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
-; V211 tmp198 [V211,T85] ( 2, 2.52) ref -> r13 single-def "CASTCLASS eval op1"
+; V209 tmp196 [V209,T34] ( 10, 12.00) ref -> rbp class-hnd "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
+; V210 tmp197 [V210,T29] ( 9, 13.26) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
+; V211 tmp198 [V211,T85] ( 2, 2.52) ref -> r15 single-def "CASTCLASS eval op1"
;* V212 tmp199 [V212 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
-; V213 tmp200 [V213,T109] ( 4, 1.38) ref -> r13 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
+; V213 tmp200 [V213,T109] ( 4, 1.38) ref -> r15 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V214 tmp201 [V214,T88] ( 3, 2.28) ref -> rdx single-def "CASTCLASS eval op1"
; V215 tmp202 [V215,T90] ( 3, 2.28) long -> rax "fgMakeTemp is creating a new local variable"
; V216 tmp203 [V216,T55] ( 9, 7.36) ref -> rcx class-hnd "spilling QMark2" <<unknown class>>
-; V217 tmp204 [V217,T75] ( 15, 3.20) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V217 tmp204 [V217,T75] ( 15, 3.20) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V218 tmp205 [V218,T134] ( 3, 0.34) ref -> rcx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V219 tmp206 [V219,T125] ( 5, 0.51) int -> rdx "Inline stloc first use temp"
; V220 tmp207 [V220,T132] ( 4, 0.42) ref -> rcx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
@@ -343,7 +343,7 @@
; V331 tmp318 [V331,T150] ( 3, 0.01) ref -> rcx "arr expr"
; V332 tmp319 [V332,T153] ( 3, 0.01) int -> r8 "index expr"
; V333 tmp320 [V333,T157] ( 2, 0.01) ref -> rdx "argument with side effect"
-; V334 tmp321 [V334,T158] ( 2, 0.01) ref -> rsi "argument with side effect"
+; V334 tmp321 [V334,T158] ( 2, 0.01) ref -> r13 "argument with side effect"
; V335 tmp322 [V335,T228] ( 2, 0 ) ref -> r8 "argument with side effect"
; V336 tmp323 [V336,T229] ( 2, 0 ) ref -> r8 "argument with side effect"
; V337 tmp324 [V337,T230] ( 2, 0 ) ref -> r8 "argument with side effect"
@@ -351,9 +351,9 @@
; V339 tmp326 [V339,T232] ( 2, 0 ) ref -> rbp single-def "argument with side effect"
; V340 tmp327 [V340,T233] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
; V341 tmp328 [V341,T234] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
-; V342 tmp329 [V342,T61] ( 4, 4.03) int -> r8 "fgMakeTemp is creating a new local variable"
+; V342 tmp329 [V342,T61] ( 4, 4.03) int -> r14 "fgMakeTemp is creating a new local variable"
; V343 cse0 [V343,T76] ( 5, 3.03) int -> rax "CSE - conservative"
-; V344 cse1 [V344,T86] ( 9, 2.51) int -> registers multi-def "CSE - conservative"
+; V344 cse1 [V344,T86] ( 9, 2.51) int -> r8 multi-def "CSE - conservative"
; V345 cse2 [V345,T105] ( 3, 1.84) int -> r8 "CSE - conservative"
; V346 cse3 [V346,T17] ( 4, 17.21) ref -> rdx "CSE - moderate"
; V347 cse4 [V347,T14] ( 3, 18.67) ref -> rax "CSE - moderate"
@@ -363,10 +363,12 @@
; V351 cse8 [V351,T73] ( 11, 3.48) int -> r14 multi-def "CSE - conservative"
; V352 cse9 [V352,T162] ( 3, 0.01) ref -> rcx "CSE - conservative"
; V353 cse10 [V353,T160] ( 4, 0.01) int -> rax "CSE - conservative"
-; V354 cse11 [V354,T21] ( 16, 15.19) long -> rdi "CSE - moderate"
-; V355 rat0 [V355,T144] ( 3, 0.04) int -> r10 "ReplaceWithLclVar is creating a new local variable"
+; V354 cse11 [V354,T21] ( 16, 15.17) long -> rdi "CSE - moderate"
+; V355 rat0 [V355,T144] ( 3, 0.04) int -> r12 "ReplaceWithLclVar is creating a new local variable"
+; TEMP_02 ref -> [rsp+0xC0]
+; TEMP_01 long -> [rsp+0xB8]
;
-; Lcl frame size = 184
+; Lcl frame size = 200
G_M39122_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -377,12 +379,16 @@ G_M39122_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+0x88], rax
+ vxorps xmm4, xmm4, xmm4
+ vmovdqu ymmword ptr [rsp+0x90], ymm4
+ vmovdqa xmmword ptr [rsp+0xB0], xmm4
+ mov qword ptr [rsp+0xC0], rax
mov rbx, rcx
; byrRegs +[rbx]
- ;; size=32 bbWeight=1 PerfScore 9.75
+ ;; size=62 bbWeight=1 PerfScore 15.08
G_M39122_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
xor esi, esi
mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode
@@ -435,7 +441,7 @@ G_M39122_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
mov rax, gword ptr [rbx+0x28]
; gcrRegs +[rax]
cmp ecx, dword ptr [rax+0x08]
- jge G_M39122_IG27
+ jge G_M39122_IG28
;; size=135 bbWeight=1 PerfScore 31.00
G_M39122_IG03: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rax]
@@ -444,12 +450,12 @@ G_M39122_IG03: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
;; size=4 bbWeight=1.01 PerfScore 0.50
G_M39122_IG04: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
test byte ptr [rbx+0x70], 32
- jne G_M39122_IG129
+ jne G_M39122_IG128
;; size=10 bbWeight=1.01 PerfScore 4.04
G_M39122_IG05: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov eax, dword ptr [rbx+0x70]
and eax, 32
- jne G_M39122_IG130
+ jne G_M39122_IG129
;; size=12 bbWeight=1.01 PerfScore 3.28
G_M39122_IG06: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov r14d, dword ptr [rbx+0x58]
@@ -465,14 +471,14 @@ G_M39122_IG07: ; bbWeight=0.45, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
; gcrRegs +[rcx]
lea edx, [r14+0x02]
cmp edx, dword ptr [rcx+0x08]
- jae G_M39122_IG127
+ jae G_M39122_IG126
cmp word ptr [rcx+2*rdx+0x0C], 35
- je G_M39122_IG131
+ je G_M39122_IG130
;; size=29 bbWeight=0.45 PerfScore 4.75
G_M39122_IG08: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rcx]
test eax, eax
- jne G_M39122_IG133
+ jne G_M39122_IG132
;; size=8 bbWeight=1.01 PerfScore 1.26
G_M39122_IG09: ; bbWeight=6.56, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, dword ptr [rbx+0x58]
@@ -483,7 +489,7 @@ G_M39122_IG09: ; bbWeight=6.56, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
;; size=12 bbWeight=6.56 PerfScore 52.45
G_M39122_IG10: ; bbWeight=5.56, gcrefRegs=0001 {rax}, byrefRegs=0008 {rbx}, byref
cmp ecx, dword ptr [rax+0x08]
- jae G_M39122_IG127
+ jae G_M39122_IG126
mov ecx, ecx
movzx r15, word ptr [rax+2*rcx+0x0C]
cmp r15d, 124
@@ -494,18 +500,18 @@ G_M39122_IG10: ; bbWeight=5.56, gcrefRegs=0001 {rax}, byrefRegs=0008 {rbx
cmp byte ptr [rcx+rax], 3
jb G_M39122_IG36
cmp r15d, 123
- je G_M39122_IG136
+ je G_M39122_IG135
;; size=60 bbWeight=5.56 PerfScore 73.65
G_M39122_IG11: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov r13d, dword ptr [rbx+0x58]
;; size=4 bbWeight=1.01 PerfScore 2.02
G_M39122_IG12: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
test byte ptr [rbx+0x70], 32
- jne G_M39122_IG138
+ jne G_M39122_IG137
;; size=10 bbWeight=1.01 PerfScore 4.04
G_M39122_IG13: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
test byte ptr [rbx+0x70], 32
- jne G_M39122_IG139
+ jne G_M39122_IG138
;; size=10 bbWeight=1.01 PerfScore 4.04
G_M39122_IG14: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov r12d, dword ptr [rbx+0x58]
@@ -520,9 +526,9 @@ G_M39122_IG15: ; bbWeight=0.45, gcrefRegs=0001 {rax}, byrefRegs=0008 {rbx
; gcrRegs +[rcx]
lea edx, [r12+0x02]
cmp edx, dword ptr [rcx+0x08]
- jae G_M39122_IG127
+ jae G_M39122_IG126
cmp word ptr [rcx+2*rdx+0x0C], 35
- je G_M39122_IG140
+ je G_M39122_IG139
;; size=29 bbWeight=0.45 PerfScore 3.96
G_M39122_IG16: ; bbWeight=1.01, gcrefRegs=0001 {rax}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rcx]
@@ -535,7 +541,7 @@ G_M39122_IG17: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
;; size=6 bbWeight=1.00 PerfScore 0.25
G_M39122_IG18: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
cmp r14d, r13d
- jge G_M39122_IG25
+ jge G_M39122_IG26
;; size=9 bbWeight=1.01 PerfScore 1.26
G_M39122_IG19: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov r12d, r13d
@@ -547,23 +553,23 @@ G_M39122_IG19: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
xor esi, esi
mov dword ptr [rsp+0xB0], esi
test r12d, r12d
- jle G_M39122_IG24
+ jle G_M39122_IG25
cmp r12d, 1
- jle G_M39122_IG35
+ jle G_M39122_IG24
;; size=44 bbWeight=1.00 PerfScore 5.99
-G_M39122_IG20: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
...
+42 (+0.70%) : 30598.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
@@ -9,18 +9,18 @@
; 36 inlinees with PGO data; 63 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] (198, 88.63) byref -> rbx this single-def
+; V00 this [V00,T00] (198, 88.62) byref -> rbx this single-def
; V01 loc0 [V01,T08] ( 26, 28.17) ushort -> r15
; V02 loc1 [V02,T60] ( 8, 5.01) ubyte -> [rsp+0xB4]
; V03 loc2 [V03,T98] ( 3, 2.00) ubyte -> [rsp+0xB0]
-; V04 loc3 [V04,T51] ( 16, 7.97) int -> r14
+; V04 loc3 [V04,T51] ( 14, 7.97) int -> r14
; V05 loc4 [V05,T79] ( 5, 3.00) int -> r13
; V06 loc5 [V06,T47] ( 9, 7.96) int -> r12
; V07 loc6 [V07,T164] ( 3, 0.00) ref -> r15 class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V08 loc7 [V08,T218] ( 2, 0 ) ref -> r15 class-hnd exact <System.String>
; V09 loc8 [V09,T158] ( 8, 0.00) int -> registers
-; V10 loc9 [V10,T159] ( 6, 0.00) int -> r12
-; V11 loc10 [V11,T162] ( 7, 0.00) int -> registers
+; V10 loc9 [V10,T159] ( 6, 0.00) int -> registers
+; V11 loc10 [V11,T162] ( 7, 0.00) int -> r12
; V12 loc11 [V12,T166] ( 3, 0.00) ubyte -> rdx
; V13 OutArgs [V13 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V14 tmp1 [V14,T45] ( 5, 10 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
@@ -37,9 +37,9 @@
; V25 tmp12 [V25,T149] ( 2, 0.00) int -> rbp "dup spill"
; V26 tmp13 [V26,T151] ( 3, 0.00) ref -> rcx class-hnd exact "impAppendStmt" <System.String>
;* V27 tmp14 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
-; V28 tmp15 [V28,T237] ( 2, 0 ) int -> r12 "dup spill"
+; V28 tmp15 [V28,T237] ( 2, 0 ) int -> rax "dup spill"
; V29 tmp16 [V29,T175] ( 3, 0 ) ref -> rcx class-hnd exact "impAppendStmt" <System.String>
-; V30 tmp17 [V30,T201] ( 3, 0 ) int -> rsi
+; V30 tmp17 [V30,T201] ( 3, 0 ) int -> r12
; V31 tmp18 [V31,T176] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
;* V32 tmp19 [V32 ] ( 0, 0 ) byref -> zero-ref
; V33 tmp20 [V33,T177] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
@@ -71,9 +71,9 @@
; V59 tmp46 [V59,T185] ( 3, 0 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
; V60 tmp47 [V60,T206] ( 3, 0 ) int -> r8 "Inlining Arg"
;* V61 tmp48 [V61 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V62 tmp49 [V62,T67] ( 2, 3.97) ref -> [rsp+0x80] class-hnd exact spill-single-def "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
-; V63 tmp50 [V63,T70] ( 2, 3.97) int -> [rsp+0xAC] spill-single-def "impAppendStmt"
-; V64 tmp51 [V64,T46] ( 5, 9.93) ref -> [rsp+0x78] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
+; V62 tmp49 [V62,T67] ( 2, 3.96) ref -> [rsp+0x80] class-hnd exact spill-single-def "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
+; V63 tmp50 [V63,T70] ( 2, 3.96) int -> [rsp+0xAC] spill-single-def "impAppendStmt"
+; V64 tmp51 [V64,T46] ( 5, 9.89) ref -> [rsp+0x78] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
;* V65 tmp52 [V65 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V66 tmp53 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]>
; V67 tmp54 [V67,T09] ( 6, 32.20) int -> [rsp+0xA8] "Inline stloc first use temp"
@@ -95,9 +95,9 @@
;* V83 tmp70 [V83 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]>
; V84 tmp71 [V84,T58] ( 6, 6.01) int -> [rsp+0xA0] "Inline stloc first use temp"
;* V85 tmp72 [V85 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
-; V86 tmp73 [V86,T68] ( 2, 3.97) ref -> rax class-hnd exact "Inlining Arg" <System.String>
+; V86 tmp73 [V86,T68] ( 2, 3.96) ref -> rax class-hnd exact "Inlining Arg" <System.String>
;* V87 tmp74 [V87 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V88 tmp75 [V88,T53] ( 4, 7.91) ref -> rax class-hnd exact "Inlining Arg" <System.String>
+; V88 tmp75 [V88,T53] ( 4, 7.91) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V89 tmp76 [V89 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V90 tmp77 [V90 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V91 tmp78 [V91,T69] ( 2, 3.96) byref -> r14 "Inlining Arg"
@@ -198,25 +198,25 @@
; V186 tmp173 [V186,T152] ( 3, 0.00) byref -> rcx "Span.get_Item ptrToSpan"
;* V187 tmp174 [V187 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V188 tmp175 [V188,T117] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V189 tmp176 [V189,T33] ( 9, 13.29) ref -> rsi class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
+; V189 tmp176 [V189,T33] ( 9, 13.29) ref -> r12 class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
;* V190 tmp177 [V190 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
;* V191 tmp178 [V191 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
;* V192 tmp179 [V192 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
-; V193 tmp180 [V193,T48] ( 7, 8 ) ref -> rbp class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
+; V193 tmp180 [V193,T48] ( 7, 8 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
; V194 tmp181 [V194,T187] ( 3, 0 ) ref -> rax class-hnd single-def "Inlining Arg" <<unknown class>>
-; V195 tmp182 [V195,T59] ( 7, 6 ) ref -> rbp class-hnd "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
-; V196 tmp183 [V196,T85] ( 2, 2.59) ref -> r14 single-def "CASTCLASS eval op1"
+; V195 tmp182 [V195,T59] ( 7, 6 ) ref -> rsi class-hnd "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
+; V196 tmp183 [V196,T85] ( 2, 2.59) ref -> rbp single-def "CASTCLASS eval op1"
;* V197 tmp184 [V197 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
-; V198 tmp185 [V198,T110] ( 4, 1.41) ref -> r14 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
+; V198 tmp185 [V198,T108] ( 4, 1.41) ref -> rbp class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V199 tmp186 [V199,T89] ( 3, 2.38) ref -> rdx single-def "CASTCLASS eval op1"
; V200 tmp187 [V200,T91] ( 3, 2.38) long -> rax "fgMakeTemp is creating a new local variable"
; V201 tmp188 [V201,T54] ( 9, 7.68) ref -> rcx class-hnd "spilling QMark2" <<unknown class>>
-; V202 tmp189 [V202,T74] ( 15, 3.04) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V202 tmp189 [V202,T74] ( 15, 3.04) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V203 tmp190 [V203,T135] ( 3, 0.32) ref -> rcx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V204 tmp191 [V204,T125] ( 5, 0.50) int -> rdx "Inline stloc first use temp"
; V205 tmp192 [V205,T133] ( 4, 0.41) ref -> rcx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V206 tmp193 [V206,T126] ( 5, 0.50) int -> rdx "Inline stloc first use temp"
-; V207 tmp194 [V207,T108] ( 4, 1.85) ref -> rdx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V207 tmp194 [V207,T109] ( 4, 1.85) ref -> rdx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V208 tmp195 [V208,T93] ( 5, 2.25) int -> rax "Inline stloc first use temp"
; V209 tmp196 [V209,T41] ( 10, 12 ) ref -> r12 class-hnd "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
; V210 tmp197 [V210,T34] ( 9, 13.29) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
@@ -231,7 +231,7 @@
; V219 tmp206 [V219,T127] ( 5, 0.50) int -> rdx "Inline stloc first use temp"
; V220 tmp207 [V220,T134] ( 4, 0.41) ref -> rcx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V221 tmp208 [V221,T128] ( 5, 0.50) int -> rdx "Inline stloc first use temp"
-; V222 tmp209 [V222,T109] ( 4, 1.85) ref -> rdx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V222 tmp209 [V222,T110] ( 4, 1.85) ref -> rdx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V223 tmp210 [V223,T94] ( 5, 2.25) int -> rax "Inline stloc first use temp"
;* V224 tmp211 [V224 ] ( 0, 0 ) byref -> zero-ref "field V55._reference (fldOffset=0x0)" P-INDEP
;* V225 tmp212 [V225 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
@@ -343,7 +343,7 @@
; V331 tmp318 [V331,T153] ( 3, 0.00) ref -> rcx "arr expr"
; V332 tmp319 [V332,T156] ( 3, 0.00) int -> r8 "index expr"
; V333 tmp320 [V333,T160] ( 2, 0.00) ref -> rdx "argument with side effect"
-; V334 tmp321 [V334,T161] ( 2, 0.00) ref -> rsi "argument with side effect"
+; V334 tmp321 [V334,T161] ( 2, 0.00) ref -> r13 "argument with side effect"
; V335 tmp322 [V335,T230] ( 2, 0 ) ref -> r8 "argument with side effect"
; V336 tmp323 [V336,T231] ( 2, 0 ) ref -> r8 "argument with side effect"
; V337 tmp324 [V337,T232] ( 2, 0 ) ref -> r8 "argument with side effect"
@@ -351,11 +351,11 @@
; V339 tmp326 [V339,T234] ( 2, 0 ) ref -> rbp single-def "argument with side effect"
; V340 tmp327 [V340,T235] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
; V341 tmp328 [V341,T236] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
-; V342 tmp329 [V342,T61] ( 4, 4.00) int -> r8 "fgMakeTemp is creating a new local variable"
+; V342 tmp329 [V342,T61] ( 4, 4.00) int -> r14 "fgMakeTemp is creating a new local variable"
; V343 cse0 [V343,T78] ( 5, 3.00) int -> rax "CSE - conservative"
; V344 cse1 [V344,T87] ( 3, 2.49) int -> rcx "CSE - conservative"
; V345 cse2 [V345,T88] ( 3, 2.49) int -> rcx "CSE - conservative"
-; V346 cse3 [V346,T84] ( 9, 2.65) int -> registers multi-def "CSE - conservative"
+; V346 cse3 [V346,T84] ( 9, 2.65) int -> r8 multi-def "CSE - conservative"
; V347 cse4 [V347,T97] ( 3, 2.00) int -> r8 "CSE - conservative"
; V348 cse5 [V348,T16] ( 4, 19.82) ref -> rdx "CSE - moderate"
; V349 cse6 [V349,T14] ( 3, 20.87) ref -> rax "CSE - moderate"
@@ -366,9 +366,11 @@
; V354 cse11 [V354,T165] ( 3, 0.00) ref -> rcx "CSE - conservative"
; V355 cse12 [V355,T163] ( 4, 0.00) int -> rax "CSE - conservative"
; V356 cse13 [V356,T24] ( 16, 16.56) long -> rdi "CSE - moderate"
-; V357 rat0 [V357,T147] ( 3, 0.01) int -> r10 "ReplaceWithLclVar is creating a new local variable"
+; V357 rat0 [V357,T147] ( 3, 0.01) int -> r12 "ReplaceWithLclVar is creating a new local variable"
+; TEMP_02 ref -> [rsp+0xC0]
+; TEMP_01 long -> [rsp+0xB8]
;
-; Lcl frame size = 184
+; Lcl frame size = 200
G_M39122_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -379,12 +381,16 @@ G_M39122_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+0x88], rax
+ vxorps xmm4, xmm4, xmm4
+ vmovdqu ymmword ptr [rsp+0x90], ymm4
+ vmovdqa xmmword ptr [rsp+0xB0], xmm4
+ mov qword ptr [rsp+0xC0], rax
mov rbx, rcx
; byrRegs +[rbx]
- ;; size=32 bbWeight=1 PerfScore 9.75
+ ;; size=62 bbWeight=1 PerfScore 15.08
G_M39122_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
xor esi, esi
mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode
@@ -437,7 +443,7 @@ G_M39122_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
mov rax, gword ptr [rbx+0x28]
; gcrRegs +[rax]
cmp ecx, dword ptr [rax+0x08]
- jge G_M39122_IG28
+ jge G_M39122_IG29
;; size=135 bbWeight=1 PerfScore 31.00
G_M39122_IG03: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rax]
@@ -446,12 +452,12 @@ G_M39122_IG03: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
;; size=4 bbWeight=1.00 PerfScore 0.50
G_M39122_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
test byte ptr [rbx+0x70], 32
- jne G_M39122_IG137
+ jne G_M39122_IG134
;; size=10 bbWeight=1.00 PerfScore 4.00
G_M39122_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov eax, dword ptr [rbx+0x70]
and eax, 32
- jne G_M39122_IG138
+ jne G_M39122_IG135
;; size=12 bbWeight=1.00 PerfScore 3.25
G_M39122_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov r14d, dword ptr [rbx+0x58]
@@ -466,15 +472,15 @@ G_M39122_IG07: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
mov rdx, gword ptr [rbx+0x28]
; gcrRegs +[rdx]
cmp ecx, dword ptr [rdx+0x08]
- jae G_M39122_IG135
+ jae G_M39122_IG132
mov ecx, ecx
cmp word ptr [rdx+2*rcx+0x0C], 35
- je G_M39122_IG139
+ je G_M39122_IG136
;; size=27 bbWeight=0.48 PerfScore 4.97
G_M39122_IG08: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rdx]
test eax, eax
- jne G_M39122_IG141
+ jne G_M39122_IG138
;; size=8 bbWeight=1.00 PerfScore 1.25
G_M39122_IG09: ; bbWeight=7.29, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, dword ptr [rbx+0x58]
@@ -485,7 +491,7 @@ G_M39122_IG09: ; bbWeight=7.29, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
;; size=12 bbWeight=7.29 PerfScore 58.32
G_M39122_IG10: ; bbWeight=6.29, gcrefRegs=0001 {rax}, byrefRegs=0008 {rbx}, byref
cmp ecx, dword ptr [rax+0x08]
- jae G_M39122_IG135
+ jae G_M39122_IG132
mov ecx, ecx
movzx r15, word ptr [rax+2*rcx+0x0C]
cmp r15d, 124
@@ -498,18 +504,18 @@ G_M39122_IG11: ; bbWeight=6.29, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
cmp byte ptr [rcx+rax], 3
jb G_M39122_IG37
cmp r15d, 123
- je G_M39122_IG143
+ je G_M39122_IG140
;; size=33 bbWeight=6.29 PerfScore 36.16
G_M39122_IG12: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov r13d, dword ptr [rbx+0x58]
;; size=4 bbWeight=1.00 PerfScore 2.00
G_M39122_IG13: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
test byte ptr [rbx+0x70], 32
- jne G_M39122_IG145
+ jne G_M39122_IG142
;; size=10 bbWeight=1.00 PerfScore 4.00
G_M39122_IG14: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
test byte ptr [rbx+0x70], 32
- jne G_M39122_IG146
+ jne G_M39122_IG143
;; size=10 bbWeight=1.00 PerfScore 4.00
G_M39122_IG15: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov r12d, dword ptr [rbx+0x58]
@@ -523,10 +529,10 @@ G_M39122_IG16: ; bbWeight=0.48, gcrefRegs=0001 {rax}, byrefRegs=0008 {rbx
mov rdx, rax
; gcrRegs +[rdx]
cmp ecx, dword ptr [rdx+0x08]
- jae G_M39122_IG135
+ jae G_M39122_IG132
mov ecx, ecx
cmp word ptr [rdx+2*rcx+0x0C], 35
- je G_M39122_IG147
+ je G_M39122_IG144
;; size=26 bbWeight=0.48 PerfScore 4.12
G_M39122_IG17: ; bbWeight=1.00, gcrefRegs=0001 {rax}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rdx]
@@ -539,7 +545,7 @@ G_M39122_IG18: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
;; size=6 bbWeight=1.00 PerfScore 0.25
G_M39122_IG19: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
cmp r14d, r13d
- jge G_M39122_IG26
...
benchmarks.run_tiered.windows.x64.checked.mch
-18 (-10.34%) : 31666.dasm - PerfLabTests.LowLevelPerf:ForeachOverList100Elements():int:this (Tier1-OSR)
@@ -10,116 +10,110 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.LowLevelPerf>
-; V01 loc0 [V01,T11] ( 2, 4 ) ref -> rdx class-hnd <System.Collections.Generic.List`1[int]>
-; V02 loc1 [V02,T10] ( 2, 9 ) int -> rcx
-; V03 loc2 [V03,T07] ( 3, 24 ) int -> rax
-; V04 loc3 [V04,T13] ( 4, 1.03) struct (24) [rsp+0x80] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[int]>
+; V01 loc0 [V01,T09] ( 2, 4 ) ref -> rdx class-hnd <System.Collections.Generic.List`1[int]>
+; V02 loc1 [V02,T08] ( 2, 9 ) int -> rcx
+; V03 loc2 [V03,T05] ( 3, 24 ) int -> rax
+; V04 loc3 [V04,T11] ( 4, 1.03) struct (24) [rsp+0x70] do-not-enreg[SF] ld-addr-op tier0-frame <System.Collections.Generic.List`1+Enumerator[int]>
;* V05 loc4 [V05 ] ( 0, 0 ) int -> zero-ref
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V07 tmp1 [V07,T03] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[int]>
-; V09 tmp3 [V09,T00] ( 3, 80 ) ubyte -> rsi "Inline return value spill temp"
+; V09 tmp3 [V09,T01] ( 3, 80 ) ubyte -> rbx "Inline return value spill temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[int]>
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref "field V08._list (fldOffset=0x0)" P-INDEP
;* V12 tmp6 [V12 ] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x8)" P-INDEP
-; V13 tmp7 [V13,T12] ( 2, 4 ) int -> r9 "field V08._version (fldOffset=0xc)" P-INDEP
+; V13 tmp7 [V13,T10] ( 2, 4 ) int -> r9 "field V08._version (fldOffset=0xc)" P-INDEP
;* V14 tmp8 [V14 ] ( 0, 0 ) int -> zero-ref "field V08._current (fldOffset=0x10)" P-INDEP
-; V15 tmp9 [V15,T06] ( 5, 26.01) ref -> r8 "V04.[000..008)"
-; V16 tmp10 [V16,T04] ( 8, 50.01) int -> r10 "V04.[008..012)"
+; V15 tmp9 [V15,T00] ( 5, 82.01) ref -> r8 "V04.[000..008)"
+; V16 tmp10 [V16,T03] ( 8, 50.01) int -> r10 "V04.[008..012)"
; V17 tmp11 [V17,T02] ( 3, 66.01) int -> r9 "V04.[012..016)"
-; V18 tmp12 [V18,T08] ( 3, 24 ) int -> rbx "V04.[016..020)"
-; V19 tmp13 [V19,T05] ( 3, 48 ) ref -> rbx "arr expr"
-; V20 cse0 [V20,T01] ( 2, 72 ) int -> r11 hoist "CSE - aggressive"
-; V21 cse1 [V21,T09] ( 3, 24 ) int -> rbx "CSE - aggressive"
+; V18 tmp12 [V18,T06] ( 3, 24 ) int -> r11 "V04.[016..020)"
+; V19 tmp13 [V19,T04] ( 3, 48 ) ref -> r11 "arr expr"
+; V20 cse0 [V20,T07] ( 3, 24 ) int -> r11 "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M6486_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 56
- mov qword ptr [rsp+0xD8], rsi
- mov qword ptr [rsp+0xD0], rbx
- mov rdx, gword ptr [rsp+0xA0]
+ sub rsp, 40
+ mov qword ptr [rsp+0xC8], rbx
+ mov rdx, gword ptr [rsp+0x90]
; gcrRegs +[rdx]
- mov ecx, dword ptr [rsp+0x9C]
- mov eax, dword ptr [rsp+0x98]
- ;; size=42 bbWeight=0.01 PerfScore 0.08
+ mov ecx, dword ptr [rsp+0x8C]
+ mov eax, dword ptr [rsp+0x88]
+ ;; size=34 bbWeight=0.01 PerfScore 0.07
G_M6486_IG02: ; bbWeight=0.01, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- mov r8, gword ptr [rsp+0x80]
+ mov r8, gword ptr [rsp+0x70]
; gcrRegs +[r8]
- mov r10d, dword ptr [rsp+0x88]
- mov r9d, dword ptr [rsp+0x8C]
- jmp SHORT G_M6486_IG04
- ;; size=26 bbWeight=0.01 PerfScore 0.05
-G_M6486_IG03: ; bbWeight=2, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+ mov r10d, dword ptr [rsp+0x78]
+ mov r9d, dword ptr [rsp+0x7C]
+ jmp SHORT G_M6486_IG05
+ ;; size=17 bbWeight=0.01 PerfScore 0.05
+G_M6486_IG03: ; bbWeight=2, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8]
mov r9d, dword ptr [rdx+0x14]
mov r8, rdx
; gcrRegs +[r8]
xor r10d, r10d
- ;; size=10 bbWeight=2 PerfScore 5.00
-G_M6486_IG04: ; bbWeight=8, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz
- mov r11d, dword ptr [r8+0x14]
- jmp SHORT G_M6486_IG06
- ;; size=6 bbWeight=8 PerfScore 32.00
-G_M6486_IG05: ; bbWeight=8, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref
- mov ecx, ebx
- ;; size=2 bbWeight=8 PerfScore 2.00
-G_M6486_IG06: ; bbWeight=64, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz
- cmp r9d, r11d
- jne SHORT G_M6486_IG14
- ;; size=5 bbWeight=64 PerfScore 80.00
-G_M6486_IG07: ; bbWeight=8, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz
- mov ebx, dword ptr [r8+0x10]
- cmp r10d, ebx
- jae SHORT G_M6486_IG08
- mov rbx, gword ptr [r8+0x08]
- ; gcrRegs +[rbx]
- cmp r10d, dword ptr [rbx+0x08]
- jae SHORT G_M6486_IG13
- mov esi, r10d
- mov ebx, dword ptr [rbx+4*rsi+0x10]
- ; gcrRegs -[rbx]
+ jmp SHORT G_M6486_IG05
+ ;; size=12 bbWeight=2 PerfScore 9.00
+G_M6486_IG04: ; bbWeight=8, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref
+ mov ecx, r11d
+ ;; size=3 bbWeight=8 PerfScore 2.00
+G_M6486_IG05: ; bbWeight=64, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz
+ cmp r9d, dword ptr [r8+0x14]
+ jne SHORT G_M6486_IG13
+ ;; size=6 bbWeight=64 PerfScore 256.00
+G_M6486_IG06: ; bbWeight=8, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz
+ mov r11d, dword ptr [r8+0x10]
+ cmp r10d, r11d
+ jae SHORT G_M6486_IG07
+ mov r11, gword ptr [r8+0x08]
+ ; gcrRegs +[r11]
+ cmp r10d, dword ptr [r11+0x08]
+ jae SHORT G_M6486_IG12
+ mov ebx, r10d
+ mov r11d, dword ptr [r11+4*rbx+0x10]
+ ; gcrRegs -[r11]
inc r10d
- mov esi, 1
- jmp SHORT G_M6486_IG09
- ;; size=36 bbWeight=8 PerfScore 112.00
-G_M6486_IG08: ; bbWeight=8, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref
- lea r10d, [rbx+0x01]
+ mov ebx, 1
+ jmp SHORT G_M6486_IG08
+ ;; size=37 bbWeight=8 PerfScore 112.00
+G_M6486_IG07: ; bbWeight=8, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref
+ lea r10d, [r11+0x01]
+ xor r11d, r11d
xor ebx, ebx
- xor esi, esi
- ;; size=8 bbWeight=8 PerfScore 8.00
-G_M6486_IG09: ; bbWeight=64, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz
- test esi, esi
- jne SHORT G_M6486_IG05
+ ;; size=9 bbWeight=8 PerfScore 8.00
+G_M6486_IG08: ; bbWeight=64, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz
+ test ebx, ebx
+ jne SHORT G_M6486_IG04
;; size=4 bbWeight=64 PerfScore 80.00
-G_M6486_IG10: ; bbWeight=8, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M6486_IG09: ; bbWeight=8, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8]
inc eax
cmp eax, dword ptr [(reloc)] ; static handle
jl SHORT G_M6486_IG03
;; size=10 bbWeight=8 PerfScore 34.00
-G_M6486_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6486_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
mov eax, ecx
;; size=2 bbWeight=1 PerfScore 0.25
-G_M6486_IG12: ; bbWeight=1, epilog, nogc, extend
- add rsp, 208
+G_M6486_IG11: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 200
pop rbx
- pop rsi
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 2.75
-G_M6486_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M6486_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M6486_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6486_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 174, prolog size 42, PerfScore 356.13, instruction count 46, allocated bytes for code 174 (MethodHash=b0f1e6a9) for method PerfLabTests.LowLevelPerf:ForeachOverList100Elements():int:this (Tier1-OSR)
+Total bytes of code 156, prolog size 34, PerfScore 503.62, instruction count 43, allocated bytes for code 156 (MethodHash=b0f1e6a9) for method PerfLabTests.LowLevelPerf:ForeachOverList100Elements():int:this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -127,16 +121,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x14
- CountOfUnwindCodes: 8
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 6
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x14 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
- Scaled Small Offset: 26 * 8 = 208 = 0x000D0
- CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6)
- Scaled Small Offset: 27 * 8 = 216 = 0x000D8
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ Scaled Small Offset: 25 * 8 = 200 = 0x000C8
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
Size: 21 * 8 = 168 = 0x000A8
CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-24 (-7.69%) : 47683.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
@@ -43,9 +43,9 @@ G_M23091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=30 bbWeight=1 PerfScore 7.50
G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
cmp dword ptr [rsi+0x68], 0
- jne G_M23091_IG11
+ jne G_M23091_IG10
test rbx, rbx
- je G_M23091_IG12
+ je G_M23091_IG11
lea rcx, bword ptr [rbx+0xF4]
; byrRegs +[rcx]
mov edx, 1
@@ -53,7 +53,7 @@ G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=00C
lock
cmpxchg dword ptr [rcx], edx
test eax, eax
- jne G_M23091_IG13
+ jne G_M23091_IG12
mov dword ptr [rbx+0xDC], 4
lea rcx, bword ptr [rbx+0x60]
mov rdx, rsi
@@ -62,18 +62,9 @@ G_M23091_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=00C
; gcrRegs -[rdx]
; byrRegs -[rcx]
cmp byte ptr [rbx+0xFA], 0
- jne SHORT G_M23091_IG04
+ je SHORT G_M23091_IG04
;; size=76 bbWeight=1 PerfScore 32.25
-G_M23091_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov rax, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rax]
- ; gcrRegs +[rax]
- cmp byte ptr [rax+0x9D], 0
- je SHORT G_M23091_IG05
- jmp SHORT G_M23091_IG05
- ;; size=24 bbWeight=0.50 PerfScore 4.12
-G_M23091_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+G_M23091_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
call [System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext]
; gcrRegs +[rax]
; gcr arg pop 0
@@ -85,7 +76,7 @@ G_M23091_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
;; size=18 bbWeight=0.50 PerfScore 2.38
-G_M23091_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M23091_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0xB0]
; gcrRegs +[rcx]
lea rcx, bword ptr [rcx+0x08]
@@ -98,22 +89,22 @@ G_M23091_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; byrRegs -[rcx]
nop
;; size=20 bbWeight=1 PerfScore 4.00
-G_M23091_IG06: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M23091_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rsi+0x08]
; gcrRegs +[rdx]
cmp gword ptr [rbx+0x18], 0
- je SHORT G_M23091_IG08
+ je SHORT G_M23091_IG07
;; size=11 bbWeight=1 PerfScore 6.00
-G_M23091_IG07: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+G_M23091_IG06: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi rdi]
mov rcx, rbx
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- jmp SHORT G_M23091_IG09
+ jmp SHORT G_M23091_IG08
;; size=11 bbWeight=0.50 PerfScore 2.62
-G_M23091_IG08: ; bbWeight=0.50, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref
+G_M23091_IG07: ; bbWeight=0.50, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx rdi]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -124,14 +115,14 @@ G_M23091_IG08: ; bbWeight=0.50, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0
; gcr arg pop 0
nop
;; size=13 bbWeight=0.50 PerfScore 1.88
-G_M23091_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx]
; GC ptr vars -{V01}
cmp eax, 997
sete al
movzx rax, al
;; size=11 bbWeight=1 PerfScore 1.50
-G_M23091_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M23091_IG09: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
@@ -139,7 +130,7 @@ G_M23091_IG10: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rsi]
mov rcx, rsi
; gcrRegs +[rcx]
@@ -148,7 +139,7 @@ G_M23091_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {
; gcr arg pop 0
int3
;; size=10 bbWeight=0 PerfScore 0.00
-G_M23091_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23091_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x1BCE
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -161,7 +152,7 @@ G_M23091_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=30 bbWeight=0 PerfScore 0.00
-G_M23091_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
; GC ptr vars +{V00 V01}
mov rcx, rbx
@@ -173,7 +164,7 @@ G_M23091_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
; gcr arg pop 0
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M23091_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M23091_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
push rbp
push rdi
@@ -184,7 +175,7 @@ G_M23091_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
mov qword ptr [rsp+0x20], rbp
lea rbp, [rbp+0x40]
;; size=21 bbWeight=0 PerfScore 0.00
-G_M23091_IG15: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23091_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, gword ptr [rbp+0x18]
; gcrRegs +[rcx]
; GC ptr vars -{V00 V01}
@@ -196,7 +187,7 @@ G_M23091_IG15: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
int3
;; size=16 bbWeight=0 PerfScore 0.00
-Total bytes of code 312, prolog size 30, PerfScore 65.50, instruction count 86, allocated bytes for code 312 (MethodHash=03bba5cc) for method System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
+Total bytes of code 288, prolog size 30, PerfScore 61.38, instruction count 81, allocated bytes for code 288 (MethodHash=03bba5cc) for method System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -231,4 +222,4 @@ Unwind Info:
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
*************** EH table for System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M23091_IG06..G_M23091_IG09) handled by [G_M23091_IG14..END) (class: 1000001)
+EH#0: try [G_M23091_IG05..G_M23091_IG08) handled by [G_M23091_IG13..END) (class: 1000001)
-24 (-7.69%) : 47776.dasm - System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
@@ -43,9 +43,9 @@ G_M29540_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=30 bbWeight=1 PerfScore 7.50
G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
cmp dword ptr [rsi+0x68], 0
- jne G_M29540_IG11
+ jne G_M29540_IG10
test rbx, rbx
- je G_M29540_IG12
+ je G_M29540_IG11
lea rcx, bword ptr [rbx+0xF4]
; byrRegs +[rcx]
mov edx, 1
@@ -53,7 +53,7 @@ G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=00C
lock
cmpxchg dword ptr [rcx], edx
test eax, eax
- jne G_M29540_IG13
+ jne G_M29540_IG12
mov dword ptr [rbx+0xDC], 7
lea rcx, bword ptr [rbx+0x60]
mov rdx, rsi
@@ -62,18 +62,9 @@ G_M29540_IG02: ; bbWeight=1, gcVars=0000000000000001 {V01}, gcrefRegs=00C
; gcrRegs -[rdx]
; byrRegs -[rcx]
cmp byte ptr [rbx+0xFA], 0
- jne SHORT G_M29540_IG04
+ je SHORT G_M29540_IG04
;; size=76 bbWeight=1 PerfScore 32.25
-G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov rax, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rax]
- ; gcrRegs +[rax]
- cmp byte ptr [rax+0x9D], 0
- je SHORT G_M29540_IG05
- jmp SHORT G_M29540_IG05
- ;; size=24 bbWeight=0.50 PerfScore 4.12
-G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+G_M29540_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
call [System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext]
; gcrRegs +[rax]
; gcr arg pop 0
@@ -85,7 +76,7 @@ G_M29540_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
;; size=18 bbWeight=0.50 PerfScore 2.38
-G_M29540_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M29540_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0xB0]
; gcrRegs +[rcx]
lea rcx, bword ptr [rcx+0x08]
@@ -98,22 +89,22 @@ G_M29540_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; byrRegs -[rcx]
nop
;; size=20 bbWeight=1 PerfScore 4.00
-G_M29540_IG06: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M29540_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rsi+0x08]
; gcrRegs +[rdx]
cmp gword ptr [rbx+0x18], 0
- je SHORT G_M29540_IG08
+ je SHORT G_M29540_IG07
;; size=11 bbWeight=1 PerfScore 6.00
-G_M29540_IG07: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+G_M29540_IG06: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi rdi]
mov rcx, rbx
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- jmp SHORT G_M29540_IG09
+ jmp SHORT G_M29540_IG08
;; size=11 bbWeight=0.50 PerfScore 2.62
-G_M29540_IG08: ; bbWeight=0.50, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref
+G_M29540_IG07: ; bbWeight=0.50, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx rdi]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -124,14 +115,14 @@ G_M29540_IG08: ; bbWeight=0.50, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0
; gcr arg pop 0
nop
;; size=13 bbWeight=0.50 PerfScore 1.88
-G_M29540_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx]
; GC ptr vars -{V01}
cmp eax, 997
sete al
movzx rax, al
;; size=11 bbWeight=1 PerfScore 1.50
-G_M29540_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M29540_IG09: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
@@ -139,7 +130,7 @@ G_M29540_IG10: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rsi]
mov rcx, rsi
; gcrRegs +[rcx]
@@ -148,7 +139,7 @@ G_M29540_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {
; gcr arg pop 0
int3
;; size=10 bbWeight=0 PerfScore 0.00
-G_M29540_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29540_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x1BCE
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -161,7 +152,7 @@ G_M29540_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=30 bbWeight=0 PerfScore 0.00
-G_M29540_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG12: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
; GC ptr vars +{V00 V01}
mov rcx, rbx
@@ -173,7 +164,7 @@ G_M29540_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
; gcr arg pop 0
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M29540_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M29540_IG13: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V01}
push rbp
push rdi
@@ -184,7 +175,7 @@ G_M29540_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
mov qword ptr [rsp+0x20], rbp
lea rbp, [rbp+0x40]
;; size=21 bbWeight=0 PerfScore 0.00
-G_M29540_IG15: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29540_IG14: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, gword ptr [rbp+0x18]
; gcrRegs +[rcx]
; GC ptr vars -{V00 V01}
@@ -196,7 +187,7 @@ G_M29540_IG15: ; bbWeight=0, gcVars=0000000000000001 {V01}, gcrefRegs=000
int3
;; size=16 bbWeight=0 PerfScore 0.00
-Total bytes of code 312, prolog size 30, PerfScore 65.50, instruction count 86, allocated bytes for code 312 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
+Total bytes of code 288, prolog size 30, PerfScore 61.38, instruction count 81, allocated bytes for code 288 (MethodHash=4c998c9b) for method System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -231,4 +222,4 @@ Unwind Info:
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
*************** EH table for System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M29540_IG06..G_M29540_IG09) handled by [G_M29540_IG14..END) (class: 1000001)
+EH#0: try [G_M29540_IG05..G_M29540_IG08) handled by [G_M29540_IG13..END) (class: 1000001)
-11 (-0.32%) : 48748.dasm - System.IO.Strategies.BufferedFileStreamStrategy+d__37:MoveNext():this (Tier1)
@@ -30,13 +30,13 @@
; V19 OutArgs [V19 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V20 tmp1 [V20 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V21 tmp2 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
-; V22 tmp3 [V22,T33] ( 3, 6 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
-; V23 tmp4 [V23,T41] ( 3, 6 ) int -> rbx "impAppendStmt"
+; V22 tmp3 [V22,T32] ( 3, 6 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V23 tmp4 [V23,T40] ( 3, 6 ) int -> rbx "impAppendStmt"
;* V24 tmp5 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V25 tmp6 [V25 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V26 tmp7 [V26 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V27 tmp8 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
-; V28 tmp9 [V28,T34] ( 3, 6 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V28 tmp9 [V28,T33] ( 3, 6 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V29 tmp10 [V29 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V30 tmp11 [V30 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V31 tmp12 [V31 ] ( 0, 0 ) int -> zero-ref "dup spill"
@@ -45,7 +45,7 @@
; V34 tmp15 [V34,T124] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V35 tmp16 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp17 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V37 tmp18 [V37,T35] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V37 tmp18 [V37,T34] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V38 tmp19 [V38 ] ( 0, 0 ) ref -> zero-ref
; V39 tmp20 [V39,T94] ( 2, 2 ) ref -> rcx single-def
;* V40 tmp21 [V40,T113] ( 0, 0 ) int -> zero-ref
@@ -63,14 +63,14 @@
;* V52 tmp33 [V52 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V53 tmp34 [V53 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V54 tmp35 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
-; V55 tmp36 [V55,T36] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V55 tmp36 [V55,T35] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
; V56 tmp37 [V56,T62] ( 2, 4 ) int -> rdx "Inlining Arg"
;* V57 tmp38 [V57 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V58 tmp39 [V58,T04] ( 12, 12 ) int -> rbx "Inline return value spill temp"
-; V59 tmp40 [V59,T42] ( 3, 6 ) int -> rbx "Inlining Arg"
-; V60 tmp41 [V60,T43] ( 3, 6 ) int -> rdx "Inlining Arg"
+; V59 tmp40 [V59,T41] ( 3, 6 ) int -> rbx "Inlining Arg"
+; V60 tmp41 [V60,T42] ( 3, 6 ) int -> rdx "Inlining Arg"
; V61 tmp42 [V61,T11] ( 4, 8 ) ref -> rdx class-hnd single-def "Inlining Arg" <ubyte[]>
-; V62 tmp43 [V62,T32] ( 4, 6 ) int -> r8 "Inlining Arg"
+; V62 tmp43 [V62,T43] ( 3, 6 ) int -> rcx "Inlining Arg"
;* V63 tmp44 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V64 tmp45 [V64 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
; V65 tmp46 [V65,T27] ( 6, 6 ) byref -> registers "Inline stloc first use temp"
@@ -191,8 +191,8 @@
; V180 tmp161 [V180,T71] ( 2, 4 ) long -> r8 "Inlining Arg"
; V181 tmp162 [V181,T05] ( 6, 12 ) ref -> rcx class-hnd "Inlining Arg" <System.Threading.SemaphoreSlim>
; V182 tmp163 [V182,T08] ( 5, 10 ) byref -> rcx single-def "Inlining Arg"
-; V183 tmp164 [V183,T37] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox[int]>
-; V184 tmp165 [V184,T38] ( 3, 6 ) byref -> rcx single-def "Inlining Arg"
+; V183 tmp164 [V183,T36] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox[int]>
+; V184 tmp165 [V184,T37] ( 3, 6 ) byref -> rcx single-def "Inlining Arg"
; V185 tmp166 [V185 ] ( 6, 6 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V04.m_task (fldOffset=0x0)" P-DEP
; V186 tmp167 [V186 ] ( 6, 6 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V04.m_options (fldOffset=0x8)" P-DEP
;* V187 tmp168 [V187 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
@@ -257,17 +257,17 @@
;* V246 tmp227 [V246 ] ( 0, 0 ) int -> zero-ref "field V176._length (fldOffset=0x8)" P-INDEP
;* V247 tmp228 [V247 ] ( 0, 0 ) byref -> zero-ref single-def "field V177._reference (fldOffset=0x0)" P-INDEP
;* V248 tmp229 [V248 ] ( 0, 0 ) int -> zero-ref "field V177._length (fldOffset=0x8)" P-INDEP
-; V249 tmp230 [V249,T39] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
+; V249 tmp230 [V249,T38] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
; V250 tmp231 [V250 ] ( 4, 8 ) struct (16) [rbp-0xE0] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlyMemory`1[ubyte]>
; V251 tmp232 [V251,T58] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
; V252 tmp233 [V252 ] ( 6, 12 ) struct (16) [rbp-0xF0] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Memory`1[ubyte]>
; V253 tmp234 [V253,T59] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
-; V254 tmp235 [V254,T40] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
+; V254 tmp235 [V254,T39] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
; V255 tmp236 [V255,T60] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
; V256 tmp237 [V256,T61] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
; V257 PSPSym [V257,T123] ( 1, 1 ) long -> [rbp-0x110] do-not-enreg[V] "PSPSym"
; V258 cse0 [V258,T90] ( 3, 3 ) int -> rdx "CSE - conservative"
-; V259 cse1 [V259,T91] ( 3, 3 ) int -> r8 "CSE - conservative"
+; V259 cse1 [V259,T91] ( 3, 3 ) int -> rcx "CSE - conservative"
; V260 cse2 [V260,T92] ( 3, 3 ) int -> r14 "CSE - conservative"
; V261 cse3 [V261,T93] ( 3, 3 ) int -> rax "CSE - conservative"
; V262 cse4 [V262,T03] ( 12, 12 ) ref -> rdx multi-def "CSE - aggressive"
@@ -387,7 +387,7 @@ G_M33324_IG06: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00
call [<unknown method>]
; gcrRegs -[rax rdx]
; gcr arg pop 0
- jmp G_M33324_IG94
+ jmp G_M33324_IG93
;; size=55 bbWeight=1 PerfScore 15.25
G_M33324_IG07: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, gcvars, byref, nogc
; gcrRegs +[rdi]
@@ -431,8 +431,8 @@ G_M33324_IG11: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi},
xor edx, edx
mov dword ptr [rsi+0x14], edx
mov edx, dword ptr [rdi+0x34]
- mov r8d, dword ptr [rdi+0x30]
- sub edx, r8d
+ mov ecx, dword ptr [rdi+0x30]
+ sub edx, ecx
test edx, edx
jle G_M33324_IG18
mov ebx, dword ptr [rsi+0x34]
@@ -443,14 +443,13 @@ G_M33324_IG11: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi},
mov rdx, gword ptr [rdi+0x20]
; gcrRegs +[rdx]
test rdx, rdx
- je G_M33324_IG77
- mov ecx, r8d
- mov eax, ebx
- add rcx, rax
- mov eax, dword ptr [rdx+0x08]
- cmp rcx, rax
+ je G_M33324_IG76
+ mov eax, ecx
+ mov r8d, ebx
+ add rax, r8
+ mov r8d, dword ptr [rdx+0x08]
+ cmp rax, r8
ja G_M33324_IG76
- mov ecx, r8d
lea r14, bword ptr [rdx+rcx+0x10]
; byrRegs +[r14]
mov r15d, ebx
@@ -494,7 +493,7 @@ G_M33324_IG11: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi},
mov r12d, edx
; gcrRegs -[r12]
jmp SHORT G_M33324_IG13
- ;; size=180 bbWeight=1 PerfScore 42.50
+ ;; size=176 bbWeight=1 PerfScore 42.25
G_M33324_IG12: ; bbWeight=1, gcrefRegs=0180 {rdi r8}, byrefRegs=6040 {rsi r13 r14}, byref
; gcrRegs +[r8]
; byrRegs -[rax]
@@ -560,7 +559,7 @@ G_M33324_IG14: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=5040 {rsi r1
; gcr arg pop 0
mov r13d, dword ptr [rbp-0xA4]
cmp r15d, r13d
- ja G_M33324_IG78
+ ja G_M33324_IG77
mov r8d, r15d
mov rcx, r12
; byrRegs +[rcx]
@@ -575,7 +574,7 @@ G_M33324_IG15: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi},
cmp ebx, dword ptr [rsi+0x34]
jne SHORT G_M33324_IG16
mov dword ptr [rbp-0x40], ebx
- jmp G_M33324_IG82
+ jmp G_M33324_IG81
;; size=13 bbWeight=1 PerfScore 7.00
G_M33324_IG16: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
test ebx, ebx
@@ -584,7 +583,7 @@ G_M33324_IG16: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi},
; byrRegs +[rdx]
mov r14d, dword ptr [rdx+0x0C]
cmp ebx, r14d
- ja G_M33324_IG79
+ ja G_M33324_IG78
mov r15, gword ptr [rdx]
; gcrRegs +[r15]
mov r13d, ebx
@@ -850,7 +849,7 @@ G_M33324_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
; gcrRegs -[r14]
add ebx, dword ptr [rsi+0x14]
mov dword ptr [rbp-0x40], ebx
- jmp G_M33324_IG88
+ jmp G_M33324_IG87
;; size=11 bbWeight=1 PerfScore 6.00
G_M33324_IG31: ; bbWeight=1, gcrefRegs=8080 {rdi r15}, byrefRegs=0040 {rsi}, byref
; gcrRegs +[rdi r15]
@@ -911,7 +910,7 @@ G_M33324_IG35: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
call [<unknown method>]
; gcrRegs -[rax rdx]
; gcr arg pop 0
- jmp G_M33324_IG84
+ jmp G_M33324_IG83
;; size=64 bbWeight=1 PerfScore 15.50
G_M33324_IG36: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, nogc
; gcrRegs +[rdi]
@@ -997,7 +996,7 @@ G_M33324_IG43: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
call [<unknown method>]
; gcrRegs -[rax rdx]
; gcr arg pop 0
- jmp G_M33324_IG86
+ jmp G_M33324_IG85
;; size=67 bbWeight=1 PerfScore 15.75
G_M33324_IG44: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
; gcrRegs +[rdi]
@@ -1212,7 +1211,7 @@ G_M33324_IG59: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
call [<unknown method>]
; gcrRegs -[rax rdx]
; gcr arg pop 0
- jmp G_M33324_IG90
+ jmp G_M33324_IG89
;; size=73 bbWeight=1 PerfScore 15.75
G_M33324_IG60: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
; gcrRegs +[rdi]
@@ -1453,7 +1452,7 @@ G_M33324_IG75: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=9040 {rsi r1
; gcr arg pop 0
mov r14d, dword ptr [rbp-0xBC]
cmp r13d, r14d
- ja SHORT G_M33324_IG78
+ ja SHORT G_M33324_IG77
mov r8d, r13d
mov rcx, r12
; byrRegs +[rcx]
@@ -1462,7 +1461,7 @@ G_M33324_IG75: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=9040 {rsi r1
call [<unknown method>]
; byrRegs -[rcx rdx r12 r15]
; gcr arg pop 0
- jmp SHORT G_M33324_IG80
+ jmp SHORT G_M33324_IG79
;; size=48 bbWeight=1 PerfScore 13.00
G_M33324_IG76: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rdi]
@@ -1472,30 +1471,25 @@ G_M33324_IG76: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
; gcr arg pop 0
int3
;; size=14 bbWeight=0 PerfScore 0.00
-G_M33324_IG77: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
- test r8d, r8d
- jne SHORT G_M33324_IG76
- jmp SHORT G_M33324_IG76
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M33324_IG78: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
+G_M33324_IG77: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
call [System.ThrowHelper:ThrowArgumentException_DestinationTooShort()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M33324_IG79: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
+G_M33324_IG78: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
mov ecx, 33
call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
; gcr arg pop 0
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M33324_IG80: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
+G_M33324_IG79: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
add dword ptr [rdi+0x30], ebx
add ebx, dword ptr [rsi+0x14]
mov dword ptr [rbp-0x40], ebx
;; size=9 bbWeight=1 PerfScore 7.00
-G_M33324_IG81: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
+G_M33324_IG80: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
cmp dword ptr [rbp-0x3C], 0
- jge SHORT G_M33324_IG92
+ jge SHORT G_M33324_IG91
mov rcx, gword ptr [rdi+0x08]
; gcrRegs +[rcx]
cmp byte ptr [rcx], cl
@@ -1504,56 +1498,56 @@ G_M33324_IG81: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi},
call [<unknown method>]
; gcrRegs -[rcx rdi]
; gcr arg pop 0
- jmp SHORT G_M33324_IG92
+ jmp SHORT G_M33324_IG91
...
-34 (-0.28%) : 27829.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
@@ -60,7 +60,7 @@
; V49 tmp36 [V49,T166] ( 2, 8 ) int -> r8 "Strict ordering of exceptions for Array store"
; V50 tmp37 [V50,T167] ( 2, 8 ) int -> r8 "Strict ordering of exceptions for Array store"
; V51 tmp38 [V51,T168] ( 2, 8 ) int -> r8 "Strict ordering of exceptions for Array store"
-; V52 tmp39 [V52,T348] ( 3, 1.50) long -> rcx single-def "Inline stloc first use temp"
+; V52 tmp39 [V52,T348] ( 2, 1 ) long -> rcx single-def "Inline stloc first use temp"
;* V53 tmp40 [V53,T349] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V54 tmp41 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V55 tmp42 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
@@ -109,7 +109,7 @@
;* V98 tmp85 [V98 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V99 tmp86 [V99 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V100 tmp87 [V100 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V101 tmp88 [V101,T120] ( 3, 10 ) long -> rdx "Inline stloc first use temp"
+; V101 tmp88 [V101,T120] ( 2, 8 ) long -> rdx "Inline stloc first use temp"
;* V102 tmp89 [V102,T127] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V103 tmp90 [V103 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V104 tmp91 [V104 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime>
@@ -537,7 +537,7 @@ G_M11467_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
call [r14+0x10]<unknown method>
; gcrRegs -[rcx rdx rbx]
; gcr arg pop 0
- jmp G_M11467_IG266
+ jmp G_M11467_IG264
;; size=32 bbWeight=0.50 PerfScore 5.75
G_M11467_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rsi rdi]
@@ -585,12 +585,12 @@ G_M11467_IG05: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
; gcr arg pop 0
mov ecx, dword ptr [r15+0x08]
test ecx, ecx
- jl G_M11467_IG269
+ jl G_M11467_IG267
mov r13d, ecx
test ecx, ecx
jle G_M11467_IG45
cmp dword ptr [r15+0x08], 0
- jbe G_M11467_IG268
+ jbe G_M11467_IG266
movzx r12, byte ptr [r15+0x10]
cmp r12d, 0xD1FFAB1E
jne SHORT G_M11467_IG06
@@ -749,7 +749,7 @@ G_M11467_IG17: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
cmp r8d, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
mov eax, r8d
movzx rdx, word ptr [rdx+2*rax+0x10]
; gcrRegs -[rdx]
@@ -761,7 +761,7 @@ G_M11467_IG18: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
; gcrRegs +[rdx]
lea eax, [r8+0x01]
cmp eax, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
lea eax, [r8+0x01]
movzx rdx, word ptr [rdx+2*rax+0x10]
; gcrRegs -[rdx]
@@ -773,7 +773,7 @@ G_M11467_IG19: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
; gcrRegs +[rdx]
lea eax, [r8+0x02]
cmp eax, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
add r8d, 2
movzx r8, word ptr [rdx+2*r8+0x10]
mov word ptr [rdi+0x16], r8w
@@ -784,7 +784,7 @@ G_M11467_IG20: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
mov rdx, gword ptr [r8]
; gcrRegs +[rdx]
cmp r9d, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
mov r8d, r9d
movzx r8, word ptr [rdx+2*r8+0x10]
mov word ptr [rdi+0x18], r8w
@@ -796,7 +796,7 @@ G_M11467_IG21: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
; gcrRegs +[rdx]
lea r8d, [r9+0x01]
cmp r8d, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
lea r8d, [r9+0x01]
movzx r8, word ptr [rdx+2*r8+0x10]
mov word ptr [rdi+0x1A], r8w
@@ -810,7 +810,7 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
; gcrRegs +[r8]
lea eax, [r9+0x02]
cmp eax, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
add r9d, 2
movzx r8, word ptr [r8+2*r9+0x10]
; gcrRegs -[r8]
@@ -818,7 +818,7 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
mov r8, rdx
; gcrRegs +[r8]
cmp ecx, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
mov r9d, ecx
movzx r8, word ptr [r8+2*r9+0x10]
; gcrRegs -[r8]
@@ -827,7 +827,7 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
; gcrRegs +[r8]
lea r9d, [rcx+0x01]
cmp r9d, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
lea r9d, [rcx+0x01]
movzx r8, word ptr [r8+2*r9+0x10]
; gcrRegs -[r8]
@@ -837,7 +837,7 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
lea edx, [rcx+0x02]
; gcrRegs -[rdx]
cmp edx, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
add ecx, 2
movzx r8, word ptr [r8+2*rcx+0x10]
; gcrRegs -[r8]
@@ -862,7 +862,7 @@ G_M11467_IG24: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
cmp r13d, r12d
je G_M11467_IG45
cmp r12d, dword ptr [r15+0x08]
- jae G_M11467_IG268
+ jae G_M11467_IG266
mov edx, r12d
movzx rax, byte ptr [r15+rdx+0x10]
mov dword ptr [rsp+0xF4], eax
@@ -1040,7 +1040,7 @@ G_M11467_IG38: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
cmp r8d, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
mov eax, r8d
movzx rdx, word ptr [rdx+2*rax+0x10]
; gcrRegs -[rdx]
@@ -1052,7 +1052,7 @@ G_M11467_IG39: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
; gcrRegs +[rdx]
lea eax, [r8+0x01]
cmp eax, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
lea eax, [r8+0x01]
movzx rdx, word ptr [rdx+2*rax+0x10]
; gcrRegs -[rdx]
@@ -1064,7 +1064,7 @@ G_M11467_IG40: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
; gcrRegs +[rdx]
lea eax, [r8+0x02]
cmp eax, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
add r8d, 2
movzx r8, word ptr [rdx+2*r8+0x10]
mov word ptr [rdi+0x16], r8w
@@ -1075,7 +1075,7 @@ G_M11467_IG41: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
mov rdx, gword ptr [r8]
; gcrRegs +[rdx]
cmp r9d, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
mov r8d, r9d
movzx r8, word ptr [rdx+2*r8+0x10]
mov word ptr [rdi+0x18], r8w
@@ -1087,7 +1087,7 @@ G_M11467_IG42: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
; gcrRegs +[rdx]
lea r8d, [r9+0x01]
cmp r8d, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
lea r8d, [r9+0x01]
movzx r8, word ptr [rdx+2*r8+0x10]
mov word ptr [rdi+0x1A], r8w
@@ -1101,7 +1101,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
; gcrRegs +[r8]
lea eax, [r9+0x02]
cmp eax, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
add r9d, 2
movzx r8, word ptr [r8+2*r9+0x10]
; gcrRegs -[r8]
@@ -1109,7 +1109,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
mov r8, rdx
; gcrRegs +[r8]
cmp ecx, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
mov r9d, ecx
movzx r8, word ptr [r8+2*r9+0x10]
; gcrRegs -[r8]
@@ -1118,7 +1118,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
; gcrRegs +[r8]
lea r9d, [rcx+0x01]
cmp r9d, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
lea r9d, [rcx+0x01]
movzx r8, word ptr [r8+2*r9+0x10]
; gcrRegs -[r8]
@@ -1128,7 +1128,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
lea edx, [rcx+0x02]
; gcrRegs -[rdx]
cmp edx, 0xBB8
- jae G_M11467_IG268
+ jae G_M11467_IG266
add ecx, 2
movzx r8, word ptr [r8+2*rcx+0x10]
; gcrRegs -[r8]
@@ -1187,7 +1187,7 @@ G_M11467_IG46: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
call [r14+0x10]<unknown method>
; gcrRegs -[rcx rdx rsi r15]
; gcr arg pop 0
- jmp G_M11467_IG97
+ jmp G_M11467_IG95
;; size=67 bbWeight=0.50 PerfScore 9.12
G_M11467_IG47: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000000000000000400000000000000000200000000000000000000000000000 {V01 V07}, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r15]
@@ -1202,38 +1202,32 @@ G_M11467_IG47: ; bbWeight=0.50, gcVars=0000000000000000000000000000000000
; gcr arg pop 0
mov ecx, dword ptr [r15+0x08]
test ecx, ecx
- jl G_M11467_IG269
+ jl G_M11467_IG267
mov r12d, ecx
test ecx, ecx
- jle G_M11467_IG96
+ jle G_M11467_IG94
cmp dword ptr [r15+0x08], 0
- jbe G_M11467_IG268
+ jbe G_M11467_IG266
mov r13, qword ptr [r15+0x10]
mov rcx, 0xD1FFAB1E
and rcx, r13
- je SHORT G_M11467_IG48
- mov rax, 0xD1FFAB1E
- cmp rcx, rax
- je SHORT G_M11467_IG49
- jmp SHORT G_M11467_IG49
- ;; size=90 bbWeight=0.50 PerfScore 10.62
-G_M11467_IG48: ; bbWeight=0.50, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
+ jne SHORT G_M11467_IG48
mov rcx, 0xD1FFAB1E
and r13, rcx
mov rcx, 0xD1FFAB1E
or r13, rcx
...
+0 (0.00%) : 49161.dasm - LinqBenchmarks:Where01LinqMethodNestedX():ubyte:this (Tier1-OSR)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <LinqBenchmarks>
-; V01 loc0 [V01,T13] ( 1, 2 ) ref -> rdi class-hnd <System.Collections.Generic.List`1[Product]>
+; V01 loc0 [V01,T15] ( 1, 2 ) ref -> rdi class-hnd <System.Collections.Generic.List`1[Product]>
; V02 loc1 [V02,T01] ( 3, 33 ) int -> rbx
; V03 loc2 [V03,T02] ( 3, 24 ) int -> rsi
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
@@ -24,40 +24,43 @@
; V12 tmp5 [V12,T09] ( 2, 8 ) ref -> r14 class-hnd "impAppendStmt" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref
; V14 tmp7 [V14,T06] ( 4, 8 ) ref -> r8
-; V15 tmp8 [V15,T03] ( 5, 20 ) ref -> r15 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V16 tmp9 [V16,T04] ( 5, 20 ) ref -> r14 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V15 tmp8 [V15,T03] ( 5, 20 ) ref -> r13 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V16 tmp9 [V16,T04] ( 5, 20 ) ref -> r15 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V17 tmp10 [V17 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
; V18 tmp11 [V18,T10] ( 2, 8 ) ref -> rdx class-hnd exact "Inlining Arg" <<unknown class>>
; V19 tmp12 [V19,T11] ( 2, 8 ) ref -> rdx class-hnd exact "Inlining Arg" <<unknown class>>
; V20 tmp13 [V20,T12] ( 2, 8 ) ref -> rcx "argument with side effect"
-; V21 PSPSym [V21,T14] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
+; V21 PSPSym [V21,T16] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
+; V22 cse0 [V22,T13] ( 3, 6 ) long -> r14 "CSE - aggressive"
+; V23 cse1 [V23,T14] ( 3, 6 ) long -> r15 "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M19194_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
mov rax, qword ptr [rbp]
push rax
- sub rsp, 80
- mov qword ptr [rsp+0x148], r15
- mov qword ptr [rsp+0x140], r14
- mov qword ptr [rsp+0x138], rdi
- mov qword ptr [rsp+0x130], rsi
- mov qword ptr [rsp+0x128], rbx
- lea rbp, [rsp+0x50]
- mov qword ptr [rbp-0x30], rsp
+ sub rsp, 96
+ mov qword ptr [rsp+0x158], r15
+ mov qword ptr [rsp+0x150], r14
+ mov qword ptr [rsp+0x148], r13
+ mov qword ptr [rsp+0x140], rdi
+ mov qword ptr [rsp+0x138], rsi
+ mov qword ptr [rsp+0x130], rbx
+ lea rbp, [rsp+0x60]
+ mov qword ptr [rbp-0x40], rsp
mov rdi, gword ptr [rbp+0xC0]
; gcrRegs +[rdi]
mov ebx, dword ptr [rbp+0xBC]
mov esi, dword ptr [rbp+0xB8]
- ;; size=77 bbWeight=0.01 PerfScore 0.16
+ ;; size=85 bbWeight=0.01 PerfScore 0.17
G_M19194_IG02: ; bbWeight=0.01, gcVars=0000000000000001 {V05}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V05}
jmp G_M19194_IG06
;; size=5 bbWeight=0.01 PerfScore 0.02
G_M19194_IG03: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V05}
- mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov r8, gword ptr [rcx]
+ mov r14, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ mov r8, gword ptr [r14]
; gcrRegs +[r8]
test r8, r8
jne SHORT G_M19194_IG04
@@ -65,45 +68,6 @@ G_M19194_IG03: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0080 {
call CORINFO_HELP_NEWSFAST
; gcrRegs -[r8] +[rax]
; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
- mov rcx, 0xD1FFAB1E ; const ptr
- mov rdx, gword ptr [rcx]
- ; gcrRegs +[rdx]
- lea rcx, bword ptr [r14+0x08]
- ; byrRegs +[rcx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
- ; byrRegs -[rcx]
- mov rcx, 0xD1FFAB1E ; code for <unknown method>
- mov qword ptr [r14+0x18], rcx
- mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rdx, r14
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx]
- mov r8, r14
- ; gcrRegs +[r8]
- ;; size=93 bbWeight=2 PerfScore 23.50
-G_M19194_IG04: ; bbWeight=2, gcrefRegs=0180 {rdi r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; <unknown method>
- call [System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon]]
- ; gcrRegs -[rdx r8] +[rax]
- ; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
- mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov r8, gword ptr [rcx]
- ; gcrRegs +[r8]
- test r8, r8
- jne SHORT G_M19194_IG05
- mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs -[r8]
- ; gcr arg pop 0
mov r15, rax
; gcrRegs +[r15]
mov rcx, 0xD1FFAB1E ; const ptr
@@ -116,16 +80,55 @@ G_M19194_IG04: ; bbWeight=2, gcrefRegs=0180 {rdi r8}, byrefRegs=0000 {},
; byrRegs -[rcx]
mov rcx, 0xD1FFAB1E ; code for <unknown method>
mov qword ptr [r15+0x18], rcx
- mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ mov rcx, r14
mov rdx, r15
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx]
mov r8, r15
; gcrRegs +[r8]
- ;; size=115 bbWeight=2 PerfScore 31.00
-G_M19194_IG05: ; bbWeight=2, gcrefRegs=4180 {rdi r8 r14}, byrefRegs=0000 {}, byref
+ ;; size=86 bbWeight=2 PerfScore 23.50
+G_M19194_IG04: ; bbWeight=2, gcrefRegs=0180 {rdi r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown method>
+ call [System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon]]
+ ; gcrRegs -[rdx r8] +[rax]
+ ; gcr arg pop 0
+ mov r14, rax
+ ; gcrRegs +[r14]
+ mov r15, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ mov r8, gword ptr [r15]
+ ; gcrRegs +[r8]
+ test r8, r8
+ jne SHORT G_M19194_IG05
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_NEWSFAST
+ ; gcrRegs -[r8]
+ ; gcr arg pop 0
+ mov r13, rax
+ ; gcrRegs +[r13]
+ mov rcx, 0xD1FFAB1E ; const ptr
+ mov rdx, gword ptr [rcx]
+ ; gcrRegs +[rdx]
+ lea rcx, bword ptr [r13+0x08]
+ ; byrRegs +[rcx]
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rax rdx]
+ ; byrRegs -[rcx]
+ mov rcx, 0xD1FFAB1E ; code for <unknown method>
+ mov qword ptr [r13+0x18], rcx
+ mov rcx, r15
+ mov rdx, r13
+ ; gcrRegs +[rdx]
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rdx]
+ mov r8, r13
+ ; gcrRegs +[r8]
+ ;; size=108 bbWeight=2 PerfScore 31.00
+G_M19194_IG05: ; bbWeight=2, gcrefRegs=4180 {rdi r8 r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r13]
mov rdx, r14
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown method>
@@ -188,28 +191,30 @@ G_M19194_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sete al
;; size=11 bbWeight=1 PerfScore 1.50
G_M19194_IG10: ; bbWeight=1, epilog, nogc, extend
- add rsp, 296
+ add rsp, 304
pop rbx
pop rsi
pop rdi
+ pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=16 bbWeight=1 PerfScore 4.25
+ ;; size=18 bbWeight=1 PerfScore 4.75
G_M19194_IG11: ; bbWeight=0, gcVars=0000000000000001 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V05}
push rbp
push r15
push r14
+ push r13
push rdi
push rsi
push rbx
- sub rsp, 40
+ sub rsp, 48
mov rbp, qword ptr [rcx+0x20]
mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x50]
- ;; size=25 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x60]
+ ;; size=27 bbWeight=0 PerfScore 0.00
G_M19194_IG12: ; bbWeight=0, gcVars=0000000000000001 {V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp+0xA8], 0
je SHORT G_M19194_IG13
@@ -225,17 +230,18 @@ G_M19194_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
G_M19194_IG14: ; bbWeight=0, funclet epilog, nogc, extend
- add rsp, 40
+ add rsp, 48
pop rbx
pop rsi
pop rdi
+ pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
-Total bytes of code 532, prolog size 77, PerfScore 326.43, instruction count 114, allocated bytes for code 532 (MethodHash=717bb505) for method LinqBenchmarks:Where01LinqMethodNestedX():ubyte:this (Tier1-OSR)
+Total bytes of code 532, prolog size 85, PerfScore 326.94, instruction count 118, allocated bytes for code 532 (MethodHash=717bb505) for method LinqBenchmarks:Where01LinqMethodNestedX():ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -243,22 +249,24 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x31
- CountOfUnwindCodes: 15
+ SizeOfProlog : 0x39
+ CountOfUnwindCodes: 17
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x31 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
- Scaled Small Offset: 37 * 8 = 296 = 0x00128
- CodeOffset: 0x29 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6)
+ CodeOffset: 0x39 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
Scaled Small Offset: 38 * 8 = 304 = 0x00130
- CodeOffset: 0x21 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rdi (7)
+ CodeOffset: 0x31 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6)
Scaled Small Offset: 39 * 8 = 312 = 0x00138
...
coreclr_tests.run.windows.x64.checked.mch
-37 (-66.07%) : 230800.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -8,10 +8,9 @@
; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 6, 4.50) float -> mm0 single-def
+;* V00 loc0 [V00 ] ( 0, 0 ) float -> zero-ref
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 4 ) float -> mm0 "Single return block return value"
-; V03 cse0 [V03,T02] ( 5, 3.50) float -> mm1 "CSE - aggressive"
+; V02 tmp1 [V02,T00] ( 2, 4 ) float -> mm0 "Single return block return value"
;
; Lcl frame size = 40
@@ -19,34 +18,17 @@ G_M53791_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 40
vzeroupper
;; size=7 bbWeight=1 PerfScore 1.25
-G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float]
; gcr arg pop 0
- vmovss xmm1, dword ptr [reloc @RWD00]
- vucomiss xmm0, xmm1
- jbe SHORT G_M53791_IG04
- ;; size=20 bbWeight=1 PerfScore 9.00
-G_M53791_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M53791_IG05
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M53791_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- vucomiss xmm1, xmm0
- ja SHORT G_M53791_IG03
- vucomiss xmm0, xmm1
- jp SHORT G_M53791_IG03
- jne SHORT G_M53791_IG03
- vucomiss xmm1, xmm0
- jbe SHORT G_M53791_IG03
- jmp SHORT G_M53791_IG03
- ;; size=22 bbWeight=0.50 PerfScore 6.00
-G_M53791_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ nop
+ ;; size=7 bbWeight=1 PerfScore 3.25
+G_M53791_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-RWD00 dd 41200000h ; 10
-
-Total bytes of code 56, prolog size 7, PerfScore 19.50, instruction count 17, allocated bytes for code 56 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 19, prolog size 7, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
-29 (-60.42%) : 226660.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 5, 4 ) float -> mm0 single-def
+; V00 loc0 [V00,T00] ( 2, 2 ) float -> mm0 single-def
;* V01 loc1 [V01 ] ( 0, 0 ) float -> zero-ref
;* V02 loc2 [V02 ] ( 0, 0 ) float -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T01] ( 4, 3 ) float -> mm1 "CSE - aggressive"
+;* V04 cse0 [V04,T01] ( 0, 0 ) float -> zero-ref "CSE - aggressive"
;
; Lcl frame size = 40
@@ -20,29 +20,17 @@ G_M53663_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 40
vzeroupper
;; size=7 bbWeight=1 PerfScore 1.25
-G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float]
; gcr arg pop 0
- vmovss xmm1, dword ptr [reloc @RWD00]
- vucomiss xmm1, xmm0
- jbe SHORT G_M53663_IG04
- ;; size=20 bbWeight=1 PerfScore 9.00
-G_M53663_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ nop
+ ;; size=7 bbWeight=1 PerfScore 3.25
+G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-G_M53663_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- vucomiss xmm0, xmm1
- jp SHORT G_M53663_IG03
- jne SHORT G_M53663_IG03
- vucomiss xmm0, xmm1
- jbe SHORT G_M53663_IG03
- jmp SHORT G_M53663_IG03
- ;; size=16 bbWeight=0.50 PerfScore 4.50
-RWD00 dd 41200000h ; 10
-
-Total bytes of code 48, prolog size 7, PerfScore 16.00, instruction count 14, allocated bytes for code 48 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 19, prolog size 7, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
-23 (-54.76%) : 230748.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -8,9 +8,8 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 4, 3.50) float -> mm0 single-def
+;* V00 loc0 [V00 ] ( 0, 0 ) float -> zero-ref
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 cse0 [V02,T01] ( 3, 2.50) float -> mm1 "CSE - aggressive"
;
; Lcl frame size = 40
@@ -18,27 +17,17 @@ G_M53663_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 40
vzeroupper
;; size=7 bbWeight=1 PerfScore 1.25
-G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float]
; gcr arg pop 0
- vmovss xmm1, dword ptr [reloc @RWD00]
- vucomiss xmm1, xmm0
- jbe SHORT G_M53663_IG04
- ;; size=20 bbWeight=1 PerfScore 9.00
-G_M53663_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ nop
+ ;; size=7 bbWeight=1 PerfScore 3.25
+G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-G_M53663_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- vucomiss xmm0, xmm1
- jp SHORT G_M53663_IG03
- jne SHORT G_M53663_IG03
- jmp SHORT G_M53663_IG03
- ;; size=10 bbWeight=0.50 PerfScore 3.00
-RWD00 dd 41200000h ; 10
-
-Total bytes of code 42, prolog size 7, PerfScore 14.50, instruction count 12, allocated bytes for code 42 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 19, prolog size 7, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
+10 (+5.92%) : 16244.dasm - testout1:SubFunclet183():int (FullOpts)
@@ -18,49 +18,49 @@
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref single-def
;* V08 tmp4 [V08 ] ( 0, 0 ) int -> zero-ref
;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref
-; V10 tmp6 [V10,T10] ( 2, 2 ) int -> rcx single-def
+; V10 tmp6 [V10,T11] ( 2, 2 ) int -> rdx single-def
;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref
-; V13 tmp9 [V13,T11] ( 2, 2 ) int -> rcx single-def
+; V13 tmp9 [V13,T12] ( 2, 2 ) int -> rdx single-def
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref
-; V16 tmp12 [V16,T12] ( 2, 2 ) int -> rcx single-def
+; V16 tmp12 [V16,T13] ( 2, 2 ) int -> rdx single-def
;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref
-; V19 tmp15 [V19,T13] ( 2, 2 ) int -> rcx single-def
+;* V19 tmp15 [V19,T14] ( 0, 0 ) int -> zero-ref single-def
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref
-; V22 tmp18 [V22,T14] ( 2, 2 ) int -> rcx single-def
+;* V22 tmp18 [V22,T15] ( 0, 0 ) int -> zero-ref single-def
;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref
-;* V25 tmp21 [V25,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp24 [V28,T24] ( 0, 0 ) int -> zero-ref single-def
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref
-;* V31 tmp27 [V31,T16] ( 0, 0 ) int -> zero-ref single-def
+; V31 tmp27 [V31,T16] ( 2, 2 ) int -> rdx single-def
;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp29 [V33 ] ( 0, 0 ) int -> zero-ref
-;* V34 tmp30 [V34,T17] ( 0, 0 ) int -> zero-ref single-def
+; V34 tmp30 [V34,T17] ( 2, 2 ) int -> rcx single-def
;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref
-;* V37 tmp33 [V37,T18] ( 0, 0 ) int -> zero-ref single-def
+; V37 tmp33 [V37,T18] ( 2, 2 ) int -> rcx single-def
;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp35 [V39 ] ( 0, 0 ) int -> zero-ref
-;* V40 tmp36 [V40,T25] ( 0, 0 ) int -> zero-ref single-def
+; V40 tmp36 [V40,T19] ( 2, 2 ) int -> rcx single-def
;* V41 tmp37 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp38 [V42 ] ( 0, 0 ) int -> zero-ref
-; V43 tmp39 [V43,T19] ( 2, 2 ) int -> rcx single-def
+; V43 tmp39 [V43,T20] ( 2, 2 ) int -> rax single-def
;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp41 [V45 ] ( 0, 0 ) int -> zero-ref
-; V46 tmp42 [V46,T20] ( 2, 2 ) int -> rcx single-def
+; V46 tmp42 [V46,T21] ( 2, 2 ) int -> rax single-def
;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref
;* V48 tmp44 [V48 ] ( 0, 0 ) int -> zero-ref
-;* V49 tmp45 [V49,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V49 tmp45 [V49,T25] ( 0, 0 ) int -> zero-ref single-def
;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp47 [V51 ] ( 0, 0 ) int -> zero-ref
-;* V52 tmp48 [V52,T26] ( 0, 0 ) int -> zero-ref single-def
+;* V52 tmp48 [V52 ] ( 0, 0 ) int -> zero-ref
;* V53 tmp49 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp50 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp51 [V55,T22] ( 0, 0 ) int -> zero-ref single-def
@@ -69,19 +69,20 @@
;* V58 tmp54 [V58,T23] ( 0, 0 ) int -> zero-ref single-def
;* V59 tmp55 [V59 ] ( 0, 0 ) int -> zero-ref
;* V60 tmp56 [V60 ] ( 0, 0 ) int -> zero-ref
-;* V61 tmp57 [V61,T27] ( 0, 0 ) int -> zero-ref single-def
+;* V61 tmp57 [V61,T26] ( 0, 0 ) int -> zero-ref single-def
;* V62 tmp58 [V62 ] ( 0, 0 ) int -> zero-ref
;* V63 tmp59 [V63 ] ( 0, 0 ) int -> zero-ref
-;* V64 tmp60 [V64,T28] ( 0, 0 ) int -> zero-ref single-def
+;* V64 tmp60 [V64,T27] ( 0, 0 ) int -> zero-ref single-def
;* V65 tmp61 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp62 [V66 ] ( 0, 0 ) int -> zero-ref
-; V67 cse0 [V67,T06] ( 2, 2 ) int -> rcx "CSE - aggressive"
-; V68 cse1 [V68,T03] ( 2, 2 ) int -> rcx "CSE - aggressive"
+; V67 cse0 [V67,T05] ( 2, 2 ) int -> rdx "CSE - aggressive"
+; V68 cse1 [V68,T06] ( 2, 2 ) int -> rax "CSE - aggressive"
; V69 cse2 [V69,T07] ( 2, 2 ) int -> rax "CSE - aggressive"
-; V70 cse3 [V70,T04] ( 2, 2 ) int -> rdx "CSE - aggressive"
-; V71 cse4 [V71,T05] ( 2, 2 ) int -> rcx "CSE - aggressive"
-; V72 cse5 [V72,T08] ( 2, 2 ) long -> rcx "CSE - aggressive"
+; V70 cse3 [V70,T03] ( 3, 3 ) int -> r8 "CSE - aggressive"
+; V71 cse4 [V71,T04] ( 3, 3 ) int -> rcx "CSE - aggressive"
+; V72 cse5 [V72,T08] ( 3, 3 ) int -> rax "CSE - aggressive"
; V73 cse6 [V73,T09] ( 2, 2 ) long -> rcx "CSE - aggressive"
+; V74 cse7 [V74,T10] ( 2, 2 ) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 32
@@ -116,23 +117,27 @@ G_M39164_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov dword ptr [rbx+0x08], -13
mov word ptr [rbx+0x0C], 256
mov ecx, dword ptr [rbx+0x08]
- add ecx, 17
- mov edx, dword ptr [rax+0x14]
- add ecx, edx
- add ecx, dword ptr [rax+0x10]
- add ecx, 3
- add ecx, -5
- add ecx, 3
- lea eax, [rcx-0x05]
+ mov edx, ecx
+ add edx, 17
+ mov r8d, dword ptr [rax+0x14]
+ add edx, r8d
+ mov eax, dword ptr [rax+0x10]
; gcrRegs -[rax]
- ;; size=158 bbWeight=1 PerfScore 22.75
+ add edx, eax
+ add ecx, edx
+ add ecx, 17
+ add ecx, r8d
+ add eax, ecx
+ add eax, 3
+ add eax, -5
+ ;; size=168 bbWeight=1 PerfScore 22.50
G_M39164_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-Total bytes of code 169, prolog size 5, PerfScore 25.75, instruction count 34, allocated bytes for code 169 (MethodHash=17766703) for method testout1:Sub_Funclet_183():int (FullOpts)
+Total bytes of code 179, prolog size 5, PerfScore 25.50, instruction count 38, allocated bytes for code 179 (MethodHash=17766703) for method testout1:Sub_Funclet_183():int (FullOpts)
; ============================================================
Unwind Info:
+10 (+6.13%) : 15751.dasm - testout1:SubFunclet106():int (FullOpts)
@@ -15,14 +15,14 @@
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
; V05 loc5 [V05,T01] ( 4, 4 ) ref -> rbx class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T03] ( 3, 3 ) ref -> rax class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T02] ( 3, 3 ) ref -> rax class-hnd exact single-def <<unknown class>>
; V08 loc8 [V08,T00] ( 5, 5 ) ref -> rax class-hnd exact single-def <<unknown class>>
; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref single-def
+;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref single-def
@@ -31,60 +31,60 @@
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref single-def
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-;* V23 tmp14 [V23,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V23 tmp14 [V23,T20] ( 0, 0 ) int -> zero-ref single-def
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T08] ( 2, 2 ) int -> rcx single-def
+; V26 tmp17 [V26,T09] ( 2, 2 ) int -> rdx single-def
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-; V29 tmp20 [V29,T09] ( 2, 2 ) int -> rcx single-def
+; V29 tmp20 [V29,T10] ( 2, 2 ) int -> rdx single-def
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
-; V32 tmp23 [V32,T10] ( 2, 2 ) int -> rcx single-def
+; V32 tmp23 [V32,T11] ( 2, 2 ) int -> rdx single-def
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp26 [V35,T11] ( 2, 2 ) int -> rcx single-def
+;* V35 tmp26 [V35,T12] ( 0, 0 ) int -> zero-ref single-def
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
-; V38 tmp29 [V38,T12] ( 2, 2 ) int -> rcx single-def
+;* V38 tmp29 [V38,T13] ( 0, 0 ) int -> zero-ref single-def
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T13] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V44 tmp35 [V44,T21] ( 0, 0 ) int -> zero-ref single-def
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
-;* V47 tmp38 [V47,T14] ( 0, 0 ) int -> zero-ref single-def
+; V47 tmp38 [V47,T14] ( 2, 2 ) int -> rdx single-def
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
-;* V50 tmp41 [V50,T15] ( 0, 0 ) int -> zero-ref single-def
+; V50 tmp41 [V50,T15] ( 2, 2 ) int -> rcx single-def
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp44 [V53,T16] ( 0, 0 ) int -> zero-ref single-def
+; V53 tmp44 [V53,T16] ( 2, 2 ) int -> rcx single-def
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T23] ( 0, 0 ) int -> zero-ref single-def
+; V56 tmp47 [V56,T17] ( 2, 2 ) int -> rcx single-def
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp50 [V59,T18] ( 0, 0 ) int -> zero-ref single-def
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp53 [V62,T19] ( 0, 0 ) int -> zero-ref single-def
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp56 [V65,T22] ( 0, 0 ) int -> zero-ref single-def
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
-;* V68 tmp59 [V68,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref
-; V71 cse0 [V71,T04] ( 2, 2 ) int -> rcx "CSE - aggressive"
-;* V72 cse1 [V72,T20] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V73 cse2 [V73,T02] ( 2, 2 ) int -> rax "CSE - aggressive"
-; V74 cse3 [V74,T05] ( 2, 2 ) int -> rcx "CSE - aggressive"
-; V75 cse4 [V75,T06] ( 2, 2 ) int -> rdx "CSE - aggressive"
-; V76 cse5 [V76,T07] ( 2, 2 ) long -> rcx "CSE - aggressive"
+; V71 cse0 [V71,T03] ( 2, 2 ) int -> rdx "CSE - aggressive"
+; V72 cse1 [V72,T04] ( 2, 2 ) int -> rax "CSE - aggressive"
+; V73 cse2 [V73,T05] ( 3, 3 ) int -> rcx "CSE - aggressive"
+; V74 cse3 [V74,T06] ( 3, 3 ) int -> r8 "CSE - aggressive"
+; V75 cse4 [V75,T07] ( 3, 3 ) int -> rax "CSE - aggressive"
+; V76 cse5 [V76,T08] ( 2, 2 ) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 32
@@ -119,21 +119,25 @@ G_M50161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov dword ptr [rbx+0x08], -13
mov word ptr [rbx+0x0C], 256
mov ecx, dword ptr [rbx+0x08]
- add ecx, 17
- mov edx, dword ptr [rax+0x14]
- add ecx, edx
- add ecx, dword ptr [rax+0x10]
- add ecx, 3
- lea eax, [rcx-0x05]
+ mov edx, ecx
+ add edx, 17
+ mov r8d, dword ptr [rax+0x14]
+ add edx, r8d
+ mov eax, dword ptr [rax+0x10]
; gcrRegs -[rax]
- ;; size=152 bbWeight=1 PerfScore 22.25
+ add edx, eax
+ add ecx, edx
+ add ecx, 17
+ add ecx, r8d
+ add eax, ecx
+ ;; size=162 bbWeight=1 PerfScore 22.00
G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-Total bytes of code 163, prolog size 5, PerfScore 25.25, instruction count 32, allocated bytes for code 163 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
+Total bytes of code 173, prolog size 5, PerfScore 25.00, instruction count 36, allocated bytes for code 173 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
; ============================================================
Unwind Info:
+10 (+6.13%) : 16168.dasm - testout1:SubFunclet106():int (FullOpts)
@@ -19,7 +19,7 @@
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref single-def
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref
-;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref single-def
+;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref single-def
@@ -28,61 +28,61 @@
;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref single-def
;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref
;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref
-;* V20 tmp15 [V20,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V20 tmp15 [V20,T21] ( 0, 0 ) int -> zero-ref single-def
;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp18 [V23,T09] ( 2, 2 ) int -> rcx single-def
+; V23 tmp18 [V23,T10] ( 2, 2 ) int -> rdx single-def
;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp21 [V26,T10] ( 2, 2 ) int -> rcx single-def
+; V26 tmp21 [V26,T11] ( 2, 2 ) int -> rdx single-def
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp23 [V28 ] ( 0, 0 ) int -> zero-ref
-; V29 tmp24 [V29,T11] ( 2, 2 ) int -> rcx single-def
+; V29 tmp24 [V29,T12] ( 2, 2 ) int -> rdx single-def
;* V30 tmp25 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp26 [V31 ] ( 0, 0 ) int -> zero-ref
-; V32 tmp27 [V32,T12] ( 2, 2 ) int -> rcx single-def
+;* V32 tmp27 [V32,T13] ( 0, 0 ) int -> zero-ref single-def
;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp30 [V35,T13] ( 2, 2 ) int -> rcx single-def
+;* V35 tmp30 [V35,T14] ( 0, 0 ) int -> zero-ref single-def
;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref
-;* V38 tmp33 [V38,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp35 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp36 [V41,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp36 [V41,T22] ( 0, 0 ) int -> zero-ref single-def
;* V42 tmp37 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp38 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp39 [V44,T15] ( 0, 0 ) int -> zero-ref single-def
+; V44 tmp39 [V44,T15] ( 2, 2 ) int -> rdx single-def
;* V45 tmp40 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp41 [V46 ] ( 0, 0 ) int -> zero-ref
-;* V47 tmp42 [V47,T16] ( 0, 0 ) int -> zero-ref single-def
+; V47 tmp42 [V47,T16] ( 2, 2 ) int -> rcx single-def
;* V48 tmp43 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp44 [V49 ] ( 0, 0 ) int -> zero-ref
-;* V50 tmp45 [V50,T17] ( 0, 0 ) int -> zero-ref single-def
+; V50 tmp45 [V50,T17] ( 2, 2 ) int -> rcx single-def
;* V51 tmp46 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp47 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp48 [V53,T24] ( 0, 0 ) int -> zero-ref single-def
+; V53 tmp48 [V53,T18] ( 2, 2 ) int -> rcx single-def
;* V54 tmp49 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp50 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp51 [V56,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp51 [V56,T19] ( 0, 0 ) int -> zero-ref single-def
;* V57 tmp52 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp53 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp54 [V59,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp54 [V59,T20] ( 0, 0 ) int -> zero-ref single-def
;* V60 tmp55 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp56 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp57 [V62,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp57 [V62,T23] ( 0, 0 ) int -> zero-ref single-def
;* V63 tmp58 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp59 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp60 [V65,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp60 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp61 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp62 [V67 ] ( 0, 0 ) int -> zero-ref
-; V68 cse0 [V68,T04] ( 2, 2 ) int -> rcx "CSE - aggressive"
-;* V69 cse1 [V69,T21] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V70 cse2 [V70,T03] ( 2, 2 ) int -> rax "CSE - aggressive"
-; V71 cse3 [V71,T05] ( 2, 2 ) int -> rcx "CSE - aggressive"
-; V72 cse4 [V72,T06] ( 2, 2 ) int -> rdx "CSE - aggressive"
-; V73 cse5 [V73,T07] ( 2, 2 ) long -> rcx "CSE - aggressive"
-; V74 cse6 [V74,T08] ( 2, 2 ) long -> rcx "CSE - aggressive"
+; V68 cse0 [V68,T03] ( 2, 2 ) int -> rdx "CSE - aggressive"
+; V69 cse1 [V69,T04] ( 2, 2 ) int -> rax "CSE - aggressive"
+; V70 cse2 [V70,T05] ( 3, 3 ) int -> rcx "CSE - aggressive"
+; V71 cse3 [V71,T06] ( 3, 3 ) int -> r8 "CSE - aggressive"
+; V72 cse4 [V72,T07] ( 3, 3 ) int -> rax "CSE - aggressive"
+; V73 cse5 [V73,T08] ( 2, 2 ) long -> rcx "CSE - aggressive"
+; V74 cse6 [V74,T09] ( 2, 2 ) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 32
@@ -117,21 +117,25 @@ G_M50161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov dword ptr [rbx+0x08], -13
mov word ptr [rbx+0x0C], 256
mov ecx, dword ptr [rbx+0x08]
- add ecx, 17
- mov edx, dword ptr [rax+0x14]
- add ecx, edx
- add ecx, dword ptr [rax+0x10]
- add ecx, 3
- lea eax, [rcx-0x05]
+ mov edx, ecx
+ add edx, 17
+ mov r8d, dword ptr [rax+0x14]
+ add edx, r8d
+ mov eax, dword ptr [rax+0x10]
; gcrRegs -[rax]
- ;; size=152 bbWeight=1 PerfScore 22.25
+ add edx, eax
+ add ecx, edx
+ add ecx, 17
+ add ecx, r8d
+ add eax, ecx
+ ;; size=162 bbWeight=1 PerfScore 22.00
G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-Total bytes of code 163, prolog size 5, PerfScore 25.25, instruction count 32, allocated bytes for code 163 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
+Total bytes of code 173, prolog size 5, PerfScore 25.00, instruction count 36, allocated bytes for code 173 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
; ============================================================
Unwind Info:
libraries.pmi.windows.x64.checked.mch
-22 (-44.00%) : 199183.dasm - System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
@@ -7,64 +7,35 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 3.50) int -> rcx single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) int -> rcx single-def
; V01 loc0 [V01,T02] ( 3, 2 ) ubyte -> rax
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 rat0 [V03,T00] ( 3, 6 ) int -> rax "ReplaceWithLclVar is creating a new local variable"
+; V03 rat0 [V03,T00] ( 3, 6 ) int -> rcx "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 0
G_M3102_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
G_M3102_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- lea eax, [rcx-0x02]
- cmp eax, 19
- ja SHORT G_M3102_IG03
- lea rcx, [reloc @RWD00]
- mov ecx, dword ptr [rcx+4*rax]
- lea rdx, G_M3102_IG02
- add rcx, rdx
- jmp rcx
- ;; size=30 bbWeight=1 PerfScore 7.50
+ add ecx, -2
+ cmp ecx, 19
+ ja SHORT G_M3102_IG04
+ mov eax, 0x3C003
+ bt eax, ecx
+ jae SHORT G_M3102_IG04
+ ;; size=18 bbWeight=1 PerfScore 3.25
G_M3102_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add ecx, -101
- cmp ecx, 2
- jbe SHORT G_M3102_IG05
- jmp SHORT G_M3102_IG05
- ;; size=10 bbWeight=0.50 PerfScore 1.75
-G_M3102_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, 1
- jmp SHORT G_M3102_IG06
+ jmp SHORT G_M3102_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M3102_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3102_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3102_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M3102_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ret
;; size=1 bbWeight=1 PerfScore 1.00
-RWD00 dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
-
-Total bytes of code 50, prolog size 0, PerfScore 11.50, instruction count 16, allocated bytes for code 50 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
+Total bytes of code 28, prolog size 0, PerfScore 5.50, instruction count 10, allocated bytes for code 28 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
; ============================================================
Unwind Info:
-4 (-28.57%) : 276733.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
@@ -28,12 +28,11 @@ G_M40773_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=1 bbWeight=1 PerfScore 1.00
G_M40773_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx]
- cmp gword ptr [rcx+0x10], 0
- je SHORT G_M40773_IG03
+ mov eax, dword ptr [rcx+0x10]
jmp SHORT G_M40773_IG03
- ;; size=9 bbWeight=0.50 PerfScore 3.00
+ ;; size=5 bbWeight=0.50 PerfScore 2.00
-Total bytes of code 14, prolog size 0, PerfScore 5.25, instruction count 6, allocated bytes for code 14 (MethodHash=8a3760ba) for method System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
+Total bytes of code 10, prolog size 0, PerfScore 4.25, instruction count 5, allocated bytes for code 10 (MethodHash=8a3760ba) for method System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
; ============================================================
Unwind Info:
-41 (-22.91%) : 284960.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
@@ -7,7 +7,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 9, 4 ) int -> rbx single-def
+; V00 arg0 [V00,T00] ( 6, 4 ) int -> rbx single-def
; V01 arg1 [V01,T01] ( 4, 2 ) ref -> rsi class-hnd single-def <System.String>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -27,10 +27,10 @@ G_M20631_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 3.75
G_M20631_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
cmp ebx, 452
- jg G_M20631_IG07
+ jg SHORT G_M20631_IG04
cmp ebx, 250
- jne SHORT G_M20631_IG06
- ;; size=20 bbWeight=1 PerfScore 2.50
+ jne SHORT G_M20631_IG04
+ ;; size=16 bbWeight=1 PerfScore 2.50
G_M20631_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
@@ -86,23 +86,10 @@ G_M20631_IG05: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
call CORINFO_HELP_THROW
; gcrRegs -[rcx rdi]
; gcr arg pop 0
- ;; size=46 bbWeight=0 PerfScore 0.00
-G_M20631_IG06: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rsi]
- lea ecx, [rbx-0x1C3]
- cmp ecx, 1
- jbe SHORT G_M20631_IG04
- jmp SHORT G_M20631_IG04
- ;; size=13 bbWeight=0 PerfScore 0.00
-G_M20631_IG07: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- cmp ebx, 552
- je SHORT G_M20631_IG04
- cmp ebx, 554
- je G_M20631_IG04
- jmp G_M20631_IG04
- ;; size=25 bbWeight=0 PerfScore 0.00
+ int3
+ ;; size=47 bbWeight=0 PerfScore 0.00
-Total bytes of code 179, prolog size 7, PerfScore 9.00, instruction count 46, allocated bytes for code 179 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
+Total bytes of code 138, prolog size 7, PerfScore 9.00, instruction count 38, allocated bytes for code 138 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
; ============================================================
Unwind Info:
+12 (+2.21%) : 211246.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
@@ -54,16 +54,16 @@ G_M11729_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov ebp, r8d
mov esi, r9d
;; size=20 bbWeight=1 PerfScore 5.25
-G_M11729_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M11729_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rbx+0x54]
cmp ecx, 10
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG16
lea rax, [reloc @RWD00]
mov eax, dword ptr [rax+4*rcx]
lea rdx, G_M11729_IG02
add rax, rdx
jmp rax
- ;; size=30 bbWeight=1 PerfScore 9.00
+ ;; size=34 bbWeight=1 PerfScore 9.00
G_M11729_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x68], 0
jne SHORT G_M11729_IG04
@@ -82,33 +82,20 @@ G_M11729_IG04: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
mov eax, dword ptr [rax+0x30]
; gcrRegs -[rax]
;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
dec eax
cmp eax, 2
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG16
mov ecx, eax
lea rax, [reloc @RWD44]
mov eax, dword ptr [rax+4*rcx]
lea rdx, G_M11729_IG02
add rax, rdx
jmp rax
- ;; size=31 bbWeight=0.50 PerfScore 3.75
-G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rdi]
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M11729_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M11729_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx rdi]
+ ;; size=35 bbWeight=0.50 PerfScore 3.75
+G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x5C], -1
- je G_M11729_IG12
+ je G_M11729_IG10
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
@@ -117,7 +104,7 @@ G_M11729_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=008
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je G_M11729_IG12
+ je G_M11729_IG10
mov rcx, rdi
; gcrRegs +[rcx]
mov edx, ebp
@@ -126,27 +113,27 @@ G_M11729_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=008
; gcrRegs -[rcx]
; gcr arg pop 0
test esi, esi
- je SHORT G_M11729_IG06
+ je G_M11729_IG16
cmp dword ptr [rbx+0x60], 0
- jne SHORT G_M11729_IG10
+ jne SHORT G_M11729_IG08
mov rcx, gword ptr [rbx+0x38]
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M11729_IG09
+ je SHORT G_M11729_IG07
mov rax, rcx
; gcrRegs +[rax]
mov rax, qword ptr [rax]
; gcrRegs -[rax]
mov rdx, 0xD1FFAB1E ; System.Xml.Base64Decoder
cmp rax, rdx
- jne SHORT G_M11729_IG09
+ jne SHORT G_M11729_IG07
mov rax, qword ptr [rax+0x50]
call [rax+0x08]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- jmp SHORT G_M11729_IG10
- ;; size=98 bbWeight=0.50 PerfScore 18.62
-G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M11729_IG08
+ ;; size=102 bbWeight=0.50 PerfScore 18.62
+G_M11729_IG07: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; System.Xml.Base64Decoder
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -159,13 +146,13 @@ G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
;; size=27 bbWeight=0.50 PerfScore 1.50
-G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M11729_IG08: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rbx+0x60]
mov rdx, gword ptr [rbx+0x40]
; gcrRegs +[rdx]
mov rdx, gword ptr [rdx+0x28]
cmp ecx, dword ptr [rdx+0x08]
- je G_M11729_IG06
+ je G_M11729_IG16
mov rcx, gword ptr [rbx+0x38]
; gcrRegs +[rcx]
mov rdx, rdi
@@ -199,7 +186,7 @@ G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x48]
;; size=98 bbWeight=0.50 PerfScore 23.50
-G_M11729_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M11729_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -207,7 +194,7 @@ G_M11729_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rdi
tail.jmp [rax+0x20]<unknown method>
;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M11729_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M11729_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx] +[rdi]
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
@@ -218,7 +205,7 @@ G_M11729_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=008
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x90]
;; size=23 bbWeight=0.50 PerfScore 3.38
-G_M11729_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M11729_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -226,11 +213,11 @@ G_M11729_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop rdi
tail.jmp [rax+0x20]<unknown method>
;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M11729_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M11729_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx rdx]
mov dword ptr [rbx+0x54], 9
;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M11729_IG15: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M11729_IG13: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
mov rdx, rdi
@@ -244,7 +231,7 @@ G_M11729_IG15: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcr arg pop 0
mov edi, eax
test edi, edi
- jne SHORT G_M11729_IG16
+ jne SHORT G_M11729_IG14
mov dword ptr [rbx+0x54], 1
mov rcx, rbx
; gcrRegs +[rcx]
@@ -252,9 +239,20 @@ G_M11729_IG15: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcrRegs -[rcx rbx]
; gcr arg pop 0
;; size=48 bbWeight=0.50 PerfScore 7.75
-G_M11729_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M11729_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, edi
;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M11729_IG15: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ ret
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M11729_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M11729_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -306,23 +304,23 @@ G_M11729_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=45 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M11729_IG06 - G_M11729_IG02
- dd G_M11729_IG14 - G_M11729_IG02
- dd G_M11729_IG06 - G_M11729_IG02
- dd G_M11729_IG06 - G_M11729_IG02
- dd G_M11729_IG06 - G_M11729_IG02
+RWD00 dd G_M11729_IG16 - G_M11729_IG02
+ dd G_M11729_IG12 - G_M11729_IG02
+ dd G_M11729_IG16 - G_M11729_IG02
+ dd G_M11729_IG16 - G_M11729_IG02
+ dd G_M11729_IG16 - G_M11729_IG02
dd G_M11729_IG03 - G_M11729_IG02
dd G_M11729_IG03 - G_M11729_IG02
dd G_M11729_IG19 - G_M11729_IG02
dd G_M11729_IG19 - G_M11729_IG02
- dd G_M11729_IG15 - G_M11729_IG02
+ dd G_M11729_IG13 - G_M11729_IG02
dd G_M11729_IG19 - G_M11729_IG02
RWD44 dd G_M11729_IG18 - G_M11729_IG02
- dd G_M11729_IG08 - G_M11729_IG02
- dd G_M11729_IG12 - G_M11729_IG02
+ dd G_M11729_IG06 - G_M11729_IG02
+ dd G_M11729_IG10 - G_M11729_IG02
-Total bytes of code 542, prolog size 20, PerfScore 90.50, instruction count 158, allocated bytes for code 542 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
+Total bytes of code 554, prolog size 20, PerfScore 90.50, instruction count 158, allocated bytes for code 554 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
; ============================================================
Unwind Info:
+12 (+2.21%) : 211248.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
@@ -54,16 +54,16 @@ G_M57654_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov ebp, r8d
mov esi, r9d
;; size=20 bbWeight=1 PerfScore 5.25
-G_M57654_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M57654_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rbx+0x54]
cmp ecx, 10
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG16
lea rax, [reloc @RWD00]
mov eax, dword ptr [rax+4*rcx]
lea rdx, G_M57654_IG02
add rax, rdx
jmp rax
- ;; size=30 bbWeight=1 PerfScore 9.00
+ ;; size=34 bbWeight=1 PerfScore 9.00
G_M57654_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x68], 0
jne SHORT G_M57654_IG04
@@ -82,33 +82,20 @@ G_M57654_IG04: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
mov eax, dword ptr [rax+0x30]
; gcrRegs -[rax]
;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
dec eax
cmp eax, 2
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG16
mov ecx, eax
lea rax, [reloc @RWD44]
mov eax, dword ptr [rax+4*rcx]
lea rdx, G_M57654_IG02
add rax, rdx
jmp rax
- ;; size=31 bbWeight=0.50 PerfScore 3.75
-G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rdi]
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M57654_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx rdi]
+ ;; size=35 bbWeight=0.50 PerfScore 3.75
+G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x5C], -1
- je G_M57654_IG12
+ je G_M57654_IG10
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
@@ -117,7 +104,7 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=008
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je G_M57654_IG12
+ je G_M57654_IG10
mov rcx, rdi
; gcrRegs +[rcx]
mov edx, ebp
@@ -126,27 +113,27 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=008
; gcrRegs -[rcx]
; gcr arg pop 0
test esi, esi
- je SHORT G_M57654_IG06
+ je G_M57654_IG16
cmp dword ptr [rbx+0x60], 0
- jne SHORT G_M57654_IG10
+ jne SHORT G_M57654_IG08
mov rcx, gword ptr [rbx+0x38]
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M57654_IG09
+ je SHORT G_M57654_IG07
mov rax, rcx
; gcrRegs +[rax]
mov rax, qword ptr [rax]
; gcrRegs -[rax]
mov rdx, 0xD1FFAB1E ; System.Xml.BinHexDecoder
cmp rax, rdx
- jne SHORT G_M57654_IG09
+ jne SHORT G_M57654_IG07
mov rax, qword ptr [rax+0x50]
call [rax+0x08]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- jmp SHORT G_M57654_IG10
- ;; size=98 bbWeight=0.50 PerfScore 18.62
-G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M57654_IG08
+ ;; size=102 bbWeight=0.50 PerfScore 18.62
+G_M57654_IG07: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; System.Xml.BinHexDecoder
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -159,13 +146,13 @@ G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
;; size=27 bbWeight=0.50 PerfScore 1.50
-G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M57654_IG08: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rbx+0x60]
mov rdx, gword ptr [rbx+0x40]
; gcrRegs +[rdx]
mov rdx, gword ptr [rdx+0x28]
cmp ecx, dword ptr [rdx+0x08]
- je G_M57654_IG06
+ je G_M57654_IG16
mov rcx, gword ptr [rbx+0x38]
; gcrRegs +[rcx]
mov rdx, rdi
@@ -199,7 +186,7 @@ G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x48]
;; size=98 bbWeight=0.50 PerfScore 23.50
-G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M57654_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -207,7 +194,7 @@ G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rdi
tail.jmp [rax+0x20]<unknown method>
;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M57654_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx] +[rdi]
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
@@ -218,7 +205,7 @@ G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=008
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x90]
;; size=23 bbWeight=0.50 PerfScore 3.38
-G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -226,11 +213,11 @@ G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop rdi
tail.jmp [rax+0x30]<unknown method>
;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M57654_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx rdx]
mov dword ptr [rbx+0x54], 10
;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M57654_IG13: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
mov rdx, rdi
@@ -244,7 +231,7 @@ G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcr arg pop 0
mov edi, eax
test edi, edi
- jne SHORT G_M57654_IG16
+ jne SHORT G_M57654_IG14
mov dword ptr [rbx+0x54], 1
mov rcx, rbx
; gcrRegs +[rcx]
@@ -252,9 +239,20 @@ G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcrRegs -[rcx rbx]
; gcr arg pop 0
;; size=48 bbWeight=0.50 PerfScore 7.75
-G_M57654_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57654_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, edi
;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M57654_IG15: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ ret
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M57654_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M57654_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -306,23 +304,23 @@ G_M57654_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=45 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG14 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG03 - G_M57654_IG02
- dd G_M57654_IG03 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG15 - G_M57654_IG02
-RWD44 dd G_M57654_IG18 - G_M57654_IG02
- dd G_M57654_IG08 - G_M57654_IG02
+RWD00 dd G_M57654_IG16 - G_M57654_IG02
dd G_M57654_IG12 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG03 - G_M57654_IG02
+ dd G_M57654_IG03 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG13 - G_M57654_IG02
+RWD44 dd G_M57654_IG18 - G_M57654_IG02
+ dd G_M57654_IG06 - G_M57654_IG02
+ dd G_M57654_IG10 - G_M57654_IG02
-Total bytes of code 542, prolog size 20, PerfScore 90.50, instruction count 158, allocated bytes for code 542 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
+Total bytes of code 554, prolog size 20, PerfScore 90.50, instruction count 158, allocated bytes for code 554 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
; ============================================================
Unwind Info:
+1 (+5.56%) : 51191.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.GCFitBucketInfoTraceData:Validate():this (FullOpts)
@@ -14,7 +14,7 @@
;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg"
;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V06 tmp4 [V06,T01] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;
; Lcl frame size = 0
@@ -25,13 +25,13 @@ G_M32950_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
mov rax, qword ptr [rcx+0x58]
movsx rax, word ptr [rax+0x0C]
mov rax, qword ptr [rcx+0x50]
- movzx rax, byte ptr [rax+0x04]
- ;; size=17 bbWeight=1 PerfScore 10.00
+ movsx rax, word ptr [rax+0x04]
+ ;; size=18 bbWeight=1 PerfScore 12.00
G_M32950_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
-Total bytes of code 18, prolog size 0, PerfScore 11.00, instruction count 5, allocated bytes for code 18 (MethodHash=f47e7f49) for method Microsoft.Diagnostics.Tracing.Parsers.Clr.GCFitBucketInfoTraceData:Validate():this (FullOpts)
+Total bytes of code 19, prolog size 0, PerfScore 13.00, instruction count 5, allocated bytes for code 19 (MethodHash=f47e7f49) for method Microsoft.Diagnostics.Tracing.Parsers.Clr.GCFitBucketInfoTraceData:Validate():this (FullOpts)
; ============================================================
Unwind Info:
libraries_tests.run.windows.x64.Release.mch
-37 (-33.04%) : 61857.dasm - Roslyn.Utilities.AsyncLazy1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task1[System.Canon]):System.Threading.Tasks.Task`1[System.Canon]:this (Tier1)
@@ -12,21 +12,20 @@
; V00 this [V00,T00] ( 6, 4.70) ref -> rbx this class-hnd single-def <Roslyn.Utilities.AsyncLazy`1[System.__Canon]>
; V01 arg1 [V01,T01] ( 5, 3.70) ref -> rsi class-hnd single-def <System.Threading.Tasks.Task`1[System.__Canon]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 8, 2.36) int -> rdi "Inline stloc first use temp"
+; V03 tmp1 [V03,T03] ( 4, 2.27) int -> rcx "Inline stloc first use temp"
;* V04 tmp2 [V04,T04] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V05 cse0 [V05,T02] ( 3, 2.43) ref -> rax "CSE - aggressive"
;
; Lcl frame size = 0
G_M21386_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi
push rsi
push rbx
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; gcrRegs +[rsi]
- ;; size=9 bbWeight=1 PerfScore 3.50
+ ;; size=8 bbWeight=1 PerfScore 2.50
G_M21386_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rbx+0x18]
; gcrRegs +[rax]
@@ -37,18 +36,17 @@ G_M21386_IG03: ; bbWeight=0.43, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
; gcrRegs -[rbx rsi]
pop rbx
pop rsi
- pop rdi
ret
- ;; size=4 bbWeight=0.43 PerfScore 1.08
+ ;; size=3 bbWeight=0.43 PerfScore 0.87
G_M21386_IG04: ; bbWeight=0.57, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx rsi]
- mov edi, dword ptr [rsi+0x34]
- test edi, 0xD1FFAB1E
+ mov ecx, dword ptr [rsi+0x34]
+ test ecx, 0xD1FFAB1E
jne SHORT G_M21386_IG06
- test edi, 0xD1FFAB1E
+ test ecx, 0xD1FFAB1E
jne SHORT G_M21386_IG06
- test edi, 0xD1FFAB1E
- je SHORT G_M21386_IG08
+ test ecx, 0xD1FFAB1E
+ je SHORT G_M21386_IG06
lea rcx, bword ptr [rbx+0x18]
; byrRegs +[rcx]
mov rdx, rsi
@@ -72,23 +70,10 @@ G_M21386_IG06: ; bbWeight=0.57, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
G_M21386_IG07: ; bbWeight=0.57, epilog, nogc, extend
pop rbx
pop rsi
- pop rdi
ret
- ;; size=4 bbWeight=0.57 PerfScore 1.42
-G_M21386_IG08: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
- test edi, 0xD1FFAB1E
- jne SHORT G_M21386_IG06
- test edi, 0x20000
- jne SHORT G_M21386_IG06
- test edi, 0x10000
- jne SHORT G_M21386_IG06
- test edi, 0xD1FFAB1E
- je SHORT G_M21386_IG06
- jmp SHORT G_M21386_IG06
- ;; size=34 bbWeight=0.02 PerfScore 0.16
+ ;; size=3 bbWeight=0.57 PerfScore 1.13
-Total bytes of code 112, prolog size 3, PerfScore 15.08, instruction count 39, allocated bytes for code 112 (MethodHash=7308ac75) for method Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
+Total bytes of code 75, prolog size 2, PerfScore 13.42, instruction count 27, allocated bytes for code 75 (MethodHash=7308ac75) for method Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
; ============================================================
Unwind Info:
@@ -96,11 +81,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x02
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- 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: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
-37 (-32.46%) : 161849.dasm - Roslyn.Utilities.AsyncLazy1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
@@ -12,30 +12,29 @@
; V00 this [V00,T00] ( 7, 6 ) ref -> rbx this class-hnd single-def <Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]>
; V01 arg1 [V01,T01] ( 5, 5 ) ref -> rsi class-hnd single-def <System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 8, 4 ) int -> rdi "Inline stloc first use temp"
+; V03 tmp1 [V03,T02] ( 4, 4 ) int -> rcx "Inline stloc first use temp"
;* V04 tmp2 [V04,T03] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;
; Lcl frame size = 0
-G_M46606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi
+G_M46606_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rsi
push rbx
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; gcrRegs +[rsi]
- ;; size=9 bbWeight=1 PerfScore 3.50
+ ;; size=8 bbWeight=1 PerfScore 2.50
G_M46606_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rbx+0x18], 0
jne SHORT G_M46606_IG06
- mov edi, dword ptr [rsi+0x34]
- test edi, 0xD1FFAB1E
+ mov ecx, dword ptr [rsi+0x34]
+ test ecx, 0xD1FFAB1E
jne SHORT G_M46606_IG04
- test edi, 0xD1FFAB1E
+ test ecx, 0xD1FFAB1E
jne SHORT G_M46606_IG04
- test edi, 0xD1FFAB1E
- je SHORT G_M46606_IG08
+ test ecx, 0xD1FFAB1E
+ je SHORT G_M46606_IG04
lea rcx, bword ptr [rbx+0x18]
; byrRegs +[rcx]
mov rdx, rsi
@@ -59,9 +58,8 @@ G_M46606_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
G_M46606_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbx
pop rsi
- pop rdi
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
+ ;; size=3 bbWeight=1 PerfScore 2.00
G_M46606_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rsi] +[rbx]
mov rax, gword ptr [rbx+0x18]
@@ -70,23 +68,10 @@ G_M46606_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
G_M46606_IG07: ; bbWeight=0, epilog, nogc, extend
pop rbx
pop rsi
- pop rdi
ret
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M46606_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax rbx] +[rsi]
- test edi, 0xD1FFAB1E
- jne SHORT G_M46606_IG04
- test edi, 0x20000
- jne SHORT G_M46606_IG04
- test edi, 0x10000
- jne SHORT G_M46606_IG04
- test edi, 0xD1FFAB1E
- je SHORT G_M46606_IG04
- jmp SHORT G_M46606_IG04
- ;; size=34 bbWeight=0 PerfScore 0.00
+ ;; size=3 bbWeight=0 PerfScore 0.00
-Total bytes of code 114, prolog size 3, PerfScore 20.00, instruction count 39, allocated bytes for code 114 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
+Total bytes of code 77, prolog size 2, PerfScore 18.50, instruction count 27, allocated bytes for code 77 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
; ============================================================
Unwind Info:
@@ -94,11 +79,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x02
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- 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: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
-37 (-32.46%) : 87035.dasm - Roslyn.Utilities.AsyncLazy1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
@@ -12,32 +12,31 @@
; V00 this [V00,T00] ( 7, 6 ) ref -> rbx this class-hnd single-def <Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]>
; V01 arg1 [V01,T01] ( 5, 5 ) ref -> rsi class-hnd single-def <System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 8, 4.07) int -> rdi "Inline stloc first use temp"
+; V03 tmp1 [V03,T02] ( 4, 4 ) int -> rcx "Inline stloc first use temp"
;* V04 tmp2 [V04,T03] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;
; Lcl frame size = 0
-G_M46606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi
+G_M46606_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rsi
push rbx
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; gcrRegs +[rsi]
- ;; size=9 bbWeight=1 PerfScore 3.50
+ ;; size=8 bbWeight=1 PerfScore 2.50
G_M46606_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rbx+0x18], 0
- jne SHORT G_M46606_IG09
- mov edi, dword ptr [rsi+0x34]
- test edi, 0xD1FFAB1E
+ jne SHORT G_M46606_IG08
+ mov ecx, dword ptr [rsi+0x34]
+ test ecx, 0xD1FFAB1E
jne SHORT G_M46606_IG06
;; size=18 bbWeight=1 PerfScore 7.25
G_M46606_IG03: ; bbWeight=1.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- test edi, 0xD1FFAB1E
+ test ecx, 0xD1FFAB1E
jne SHORT G_M46606_IG06
- test edi, 0xD1FFAB1E
- je SHORT G_M46606_IG08
+ test ecx, 0xD1FFAB1E
+ je SHORT G_M46606_IG06
;; size=16 bbWeight=1.00 PerfScore 2.50
G_M46606_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
lea rcx, bword ptr [rbx+0x18]
@@ -63,34 +62,20 @@ G_M46606_IG06: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
G_M46606_IG07: ; bbWeight=1, epilog, nogc, extend
pop rbx
pop rsi
- pop rdi
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
-G_M46606_IG08: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
- test edi, 0xD1FFAB1E
- jne SHORT G_M46606_IG06
- test edi, 0x20000
- jne SHORT G_M46606_IG06
- test edi, 0x10000
- jne SHORT G_M46606_IG06
- test edi, 0xD1FFAB1E
- je SHORT G_M46606_IG06
- jmp SHORT G_M46606_IG06
- ;; size=34 bbWeight=0.02 PerfScore 0.12
-G_M46606_IG09: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi] +[rbx]
+ ;; size=3 bbWeight=1 PerfScore 2.00
+G_M46606_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rsi] +[rbx]
mov rax, gword ptr [rbx+0x18]
; gcrRegs +[rax]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M46606_IG10: ; bbWeight=0, epilog, nogc, extend
+G_M46606_IG09: ; bbWeight=0, epilog, nogc, extend
pop rbx
pop rsi
- pop rdi
ret
- ;; size=4 bbWeight=0 PerfScore 0.00
+ ;; size=3 bbWeight=0 PerfScore 0.00
-Total bytes of code 114, prolog size 3, PerfScore 20.12, instruction count 39, allocated bytes for code 114 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
+Total bytes of code 77, prolog size 2, PerfScore 18.50, instruction count 27, allocated bytes for code 77 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
; ============================================================
Unwind Info:
@@ -98,11 +83,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x02
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- 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: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+13 (+4.56%) : 623879.dasm - Microsoft.CodeAnalysis.BitVector:AllSet(int):Microsoft.CodeAnalysis.BitVector (Tier1)
@@ -43,14 +43,14 @@ G_M40875_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=17 bbWeight=1 PerfScore 6.75
G_M40875_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
test esi, esi
- je G_M40875_IG12
+ je G_M40875_IG10
lea ebp, [rsi-0x01]
sar ebp, 6
xor ecx, ecx
test esi, esi
cmovle ebp, ecx
test ebp, ebp
- jne G_M40875_IG14
+ jne G_M40875_IG12
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
;; size=39 bbWeight=1 PerfScore 4.50
@@ -59,21 +59,34 @@ G_M40875_IG03: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx},
mov rdi, -1
xor ecx, ecx
test r14d, r14d
- jg SHORT G_M40875_IG07
+ jg SHORT G_M40875_IG05
;; size=21 bbWeight=1 PerfScore 2.25
G_M40875_IG04: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, esi
and ecx, 63
- jle SHORT G_M40875_IG10
+ jle G_M40875_IG14
mov rax, -1
shlx rcx, rax, rcx
mov r15, rcx
not r15
test r14d, r14d
- jge SHORT G_M40875_IG09
+ jge G_M40875_IG13
mov rdi, r15
- ;; size=36 bbWeight=1 PerfScore 4.25
-G_M40875_IG05: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref
+ jmp SHORT G_M40875_IG07
+ ;; size=46 bbWeight=1 PerfScore 6.25
+G_M40875_IG05: ; bbWeight=0.03, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
+ cmp ecx, dword ptr [rdx+0x08]
+ jae SHORT G_M40875_IG09
+ mov eax, ecx
+ mov qword ptr [rdx+8*rax+0x10], -1
+ inc ecx
+ cmp ecx, r14d
+ jl SHORT G_M40875_IG05
+ ;; size=23 bbWeight=0.03 PerfScore 0.18
+G_M40875_IG06: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M40875_IG04
+ ;; size=2 bbWeight=1 PerfScore 2.00
+G_M40875_IG07: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref
mov rcx, rbx
; byrRegs +[rcx]
call CORINFO_HELP_CHECKED_ASSIGN_REF
@@ -84,7 +97,7 @@ G_M40875_IG05: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx},
mov rax, rbx
; byrRegs +[rax]
;; size=18 bbWeight=1 PerfScore 3.50
-G_M40875_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M40875_IG08: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -94,43 +107,12 @@ G_M40875_IG06: ; bbWeight=1, epilog, nogc, extend
pop r15
ret
;; size=13 bbWeight=1 PerfScore 4.25
-G_M40875_IG07: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, gcvars, byref, isz
- ; gcrRegs +[rdx]
- ; byrRegs -[rax]
- cmp ecx, dword ptr [rdx+0x08]
- jae SHORT G_M40875_IG11
- mov eax, ecx
- mov qword ptr [rdx+8*rax+0x10], -1
- inc ecx
- cmp ecx, r14d
- jl SHORT G_M40875_IG07
- ;; size=23 bbWeight=0.03 PerfScore 0.18
-G_M40875_IG08: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M40875_IG04
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M40875_IG09: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
- cmp r14d, dword ptr [rdx+0x08]
- jae SHORT G_M40875_IG11
- mov eax, r14d
- mov qword ptr [rdx+8*rax+0x10], r15
- jmp SHORT G_M40875_IG05
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M40875_IG10: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
- test ebp, ebp
- jle SHORT G_M40875_IG05
- cmp r14d, dword ptr [rdx+0x08]
- jae SHORT G_M40875_IG11
- mov eax, r14d
- mov qword ptr [rdx+8*rax+0x10], -1
- jmp SHORT G_M40875_IG05
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M40875_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdx]
- ; byrRegs -[rbx]
+G_M40875_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; byrRegs -[rax rbx]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M40875_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M40875_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; byrRegs +[rbx]
mov rax, 0xD1FFAB1E ; box for <unknown class>:<unknown field>
mov rsi, gword ptr [rax]
@@ -146,7 +128,7 @@ G_M40875_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
mov rax, rbx
; byrRegs +[rax]
;; size=32 bbWeight=0 PerfScore 0.00
-G_M40875_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M40875_IG11: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -156,7 +138,7 @@ G_M40875_IG13: ; bbWeight=0, epilog, nogc, extend
pop r15
ret
;; size=13 bbWeight=0 PerfScore 0.00
-G_M40875_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M40875_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rax rsi rdi]
movsxd rdx, ebp
mov rcx, 0xD1FFAB1E ; ulong[]
@@ -167,8 +149,25 @@ G_M40875_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs +[rdx]
jmp G_M40875_IG03
;; size=26 bbWeight=0 PerfScore 0.00
+G_M40875_IG13: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs -[rax]
+ cmp r14d, dword ptr [rdx+0x08]
+ jae SHORT G_M40875_IG09
+ mov eax, r14d
+ mov qword ptr [rdx+8*rax+0x10], r15
+ jmp SHORT G_M40875_IG07
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M40875_IG14: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
+ test ebp, ebp
+ jle SHORT G_M40875_IG07
+ cmp r14d, dword ptr [rdx+0x08]
+ jae SHORT G_M40875_IG09
+ mov eax, r14d
+ mov qword ptr [rdx+8*rax+0x10], -1
+ jmp G_M40875_IG07
+ ;; size=27 bbWeight=0 PerfScore 0.00
-Total bytes of code 285, prolog size 17, PerfScore 27.68, instruction count 89, allocated bytes for code 285 (MethodHash=4a676054) for method Microsoft.CodeAnalysis.BitVector:AllSet(int):Microsoft.CodeAnalysis.BitVector (Tier1)
+Total bytes of code 298, prolog size 17, PerfScore 29.68, instruction count 90, allocated bytes for code 298 (MethodHash=4a676054) for method Microsoft.CodeAnalysis.BitVector:AllSet(int):Microsoft.CodeAnalysis.BitVector (Tier1)
; ============================================================
Unwind Info:
+7 (+4.76%) : 467037.dasm - System.ArgumentOutOfRangeException:ThrowIfGreaterThanfloat (Instrumented Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T02] ( 8, 3.32) float -> [rsp+0x30] ld-addr-op single-def
-; V01 arg1 [V01,T03] ( 8, 3.32) float -> [rsp+0x38] single-def
+; V01 arg1 [V01,T03] ( 6, 3.32) float -> [rsp+0x38] single-def
; V02 arg2 [V02,T00] ( 3, 2 ) ref -> rbx class-hnd single-def <System.String>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04,T01] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -68,27 +68,24 @@ G_M56262_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=52 bbWeight=0 PerfScore 0.00
G_M56262_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
+ vmovss dword ptr [rsp+0x38], xmm1
vucomiss xmm0, xmm1
jp SHORT G_M56262_IG09
je SHORT G_M56262_IG03
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=14 bbWeight=0 PerfScore 0.00
G_M56262_IG09: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ vmovss xmm1, dword ptr [rsp+0x38]
vmovss dword ptr [rsp+0x30], xmm0
vucomiss xmm0, xmm0
- jp SHORT G_M56262_IG10
- je SHORT G_M56262_IG11
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M56262_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- vucomiss xmm1, xmm1
- jp SHORT G_M56262_IG03
- jmp SHORT G_M56262_IG03
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M56262_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
vmovss dword ptr [rsp+0x38], xmm1
- jmp SHORT G_M56262_IG07
- ;; size=8 bbWeight=0 PerfScore 0.00
+ jp SHORT G_M56262_IG10
+ je SHORT G_M56262_IG07
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M56262_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jmp G_M56262_IG03
+ ;; size=5 bbWeight=0 PerfScore 0.00
-Total bytes of code 147, prolog size 8, PerfScore 10.03, instruction count 37, allocated bytes for code 147 (MethodHash=c4652439) for method System.ArgumentOutOfRangeException:ThrowIfGreaterThan[float](float,float,System.String) (Instrumented Tier1)
+Total bytes of code 154, prolog size 8, PerfScore 10.03, instruction count 36, allocated bytes for code 154 (MethodHash=c4652439) for method System.ArgumentOutOfRangeException:ThrowIfGreaterThan[float](float,float,System.String) (Instrumented Tier1)
; ============================================================
Unwind Info:
+17 (+6.25%) : 423300.dasm - System.Xml.XmlConvert:CreateInvalidNameCharException(System.String,int,int):System.Exception (Tier1)
@@ -9,13 +9,13 @@
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 3, 3 ) ref -> rsi class-hnd single-def <System.String>
-; V01 arg1 [V01,T01] ( 5, 5 ) int -> rbx single-def
-; V02 arg2 [V02,T05] ( 3, 3 ) int -> rdi single-def
+; V00 arg0 [V00,T04] ( 4, 3 ) ref -> rsi class-hnd single-def <System.String>
+; V01 arg1 [V01,T01] ( 6, 5 ) int -> rbx single-def
+; V02 arg2 [V02,T05] ( 4, 3 ) int -> rdi single-def
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T07] ( 5, 3 ) ref -> rbp
; V05 tmp2 [V05,T08] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.Exception>
-; V06 tmp3 [V06,T02] ( 4, 6 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.String[]>
+; V06 tmp3 [V06,T02] ( 5, 6 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.String[]>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
; V08 tmp5 [V08,T09] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -48,21 +48,22 @@ G_M2230_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byre
; gcr arg pop 0
mov rbp, rax
; gcrRegs +[rbp]
- ;; size=17 bbWeight=1 PerfScore 4.50
-G_M2230_IG03: ; bbWeight=1, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
mov rcx, rsi
; gcrRegs +[rcx]
mov edx, ebx
call [<unknown method>]
- ; gcrRegs -[rcx rsi] +[rax]
+ ; gcrRegs -[rcx rsi]
; gcr arg pop 0
mov r14, rax
; gcrRegs +[r14]
test edi, edi
je G_M2230_IG07
+ ;; size=39 bbWeight=1 PerfScore 9.50
+G_M2230_IG03: ; bbWeight=1, gcrefRegs=4020 {rbp r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov rcx, 0xD1FFAB1E ; System.Xml.XmlException
call CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[rax]
; gcr arg pop 0
mov r15, rax
; gcrRegs +[r15]
@@ -112,7 +113,7 @@ G_M2230_IG03: ; bbWeight=1, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {},
xor rax, rax
; gcrRegs +[rax]
mov gword ptr [r15+0x88], rax
- ;; size=134 bbWeight=1 PerfScore 23.00
+ ;; size=112 bbWeight=1 PerfScore 18.00
G_M2230_IG04: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov dword ptr [r15+0x98], eax
@@ -140,10 +141,19 @@ G_M2230_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {r
; gcr arg pop 0
mov rbp, rax
; gcrRegs +[rbp]
- jmp G_M2230_IG03
- ;; size=24 bbWeight=0 PerfScore 0.00
+ mov rcx, rsi
+ ; gcrRegs +[rcx]
+ mov edx, ebx
+ call [<unknown method>]
+ ; gcrRegs -[rcx rsi]
+ ; gcr arg pop 0
+ mov r14, rax
+ ; gcrRegs +[r14]
+ test edi, edi
+ jne G_M2230_IG03
+ ;; size=41 bbWeight=0 PerfScore 0.00
G_M2230_IG07: ; bbWeight=0, gcrefRegs=4020 {rbp r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rsi] +[r14]
+ ; gcrRegs -[rax]
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -169,7 +179,7 @@ G_M2230_IG07: ; bbWeight=0, gcrefRegs=4020 {rbp r14}, byrefRegs=0000 {},
jmp SHORT G_M2230_IG05
;; size=47 bbWeight=0 PerfScore 0.00
-Total bytes of code 272, prolog size 12, PerfScore 41.00, instruction count 72, allocated bytes for code 272 (MethodHash=55e8f749) for method System.Xml.XmlConvert:CreateInvalidNameCharException(System.String,int,int):System.Exception (Tier1)
+Total bytes of code 289, prolog size 12, PerfScore 41.00, instruction count 77, allocated bytes for code 289 (MethodHash=55e8f749) for method System.Xml.XmlConvert:CreateInvalidNameCharException(System.String,int,int):System.Exception (Tier1)
; ============================================================
Unwind Info:
librariestestsnotieredcompilation.run.windows.x64.Release.mch
-22 (-44.00%) : 149286.dasm - System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
@@ -7,64 +7,35 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 3.50) int -> rcx single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) int -> rcx single-def
; V01 loc0 [V01,T02] ( 3, 2 ) ubyte -> rax
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 rat0 [V03,T00] ( 3, 6 ) int -> rax "ReplaceWithLclVar is creating a new local variable"
+; V03 rat0 [V03,T00] ( 3, 6 ) int -> rcx "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 0
G_M3102_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
G_M3102_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- lea eax, [rcx-0x02]
- cmp eax, 19
- ja SHORT G_M3102_IG03
- lea rcx, [reloc @RWD00]
- mov ecx, dword ptr [rcx+4*rax]
- lea rdx, G_M3102_IG02
- add rcx, rdx
- jmp rcx
- ;; size=30 bbWeight=1 PerfScore 7.50
+ add ecx, -2
+ cmp ecx, 19
+ ja SHORT G_M3102_IG04
+ mov eax, 0x3C003
+ bt eax, ecx
+ jae SHORT G_M3102_IG04
+ ;; size=18 bbWeight=1 PerfScore 3.25
G_M3102_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add ecx, -101
- cmp ecx, 2
- jbe SHORT G_M3102_IG05
- jmp SHORT G_M3102_IG05
- ;; size=10 bbWeight=0.50 PerfScore 1.75
-G_M3102_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, 1
- jmp SHORT G_M3102_IG06
+ jmp SHORT G_M3102_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M3102_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3102_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3102_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M3102_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ret
;; size=1 bbWeight=1 PerfScore 1.00
-RWD00 dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG04 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
- dd G_M3102_IG05 - G_M3102_IG02
-
-Total bytes of code 50, prolog size 0, PerfScore 11.50, instruction count 16, allocated bytes for code 50 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
+Total bytes of code 28, prolog size 0, PerfScore 5.50, instruction count 10, allocated bytes for code 28 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
; ============================================================
Unwind Info:
-27 (-28.42%) : 44045.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
@@ -8,7 +8,7 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
; V02 loc0 [V02,T06] ( 3, 1.50) int -> rcx ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
@@ -20,19 +20,18 @@
; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> rax single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V11 tmp6 [V11,T07] ( 3, 1.50) ref -> rdx single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) long -> rax "Spilling to split statement for tree"
+;* V12 rat0 [V12,T05] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) long -> rax "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx
- sub rsp, 48
- mov qword ptr [rsp+0x28], rcx
+ sub rsp, 32
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M43979_IG02: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
mov rcx, gword ptr [rbx+0x20]
@@ -43,54 +42,46 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {},
; byrRegs +[rax]
; gcr arg pop 0
test rax, rax
- je SHORT G_M43979_IG05
+ je SHORT G_M43979_IG04
;; size=17 bbWeight=1 PerfScore 9.25
G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0001 {rax}, byref, isz
mov ecx, dword ptr [rax]
mov rdx, gword ptr [rbx+0x80]
; gcrRegs +[rdx]
- mov rax, qword ptr [rbx]
- ; byrRegs -[rax]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax]
- mov rax, qword ptr [rax+0xC0]
- test rax, rax
- jne SHORT G_M43979_IG07
- ;; size=31 bbWeight=0.50 PerfScore 6.62
-G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M43979_IG07
- ;; size=2 bbWeight=0.10 PerfScore 0.20
-G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M43979_IG06
+ ;; size=11 bbWeight=0.50 PerfScore 3.00
+G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
+ ; byrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 48
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 32
pop rbx
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M43979_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43979_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rdx]
cmp ecx, dword ptr [rdx+0x08]
- jae SHORT G_M43979_IG09
+ jae SHORT G_M43979_IG08
mov eax, ecx
mov rax, gword ptr [rdx+8*rax+0x10]
; gcrRegs +[rax]
;; size=12 bbWeight=0.50 PerfScore 3.12
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 48
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 32
pop rbx
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M43979_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rdx]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 95, prolog size 10, PerfScore 23.57, instruction count 31, allocated bytes for code 95 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
+Total bytes of code 68, prolog size 5, PerfScore 18.75, instruction count 24, allocated bytes for code 68 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -103,5 +94,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-27 (-28.42%) : 5592.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
@@ -8,7 +8,7 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
; V02 loc0 [V02,T06] ( 3, 1.50) int -> rcx ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
@@ -20,19 +20,18 @@
; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> rax single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V11 tmp6 [V11,T07] ( 3, 1.50) ref -> rdx single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) long -> rax "Spilling to split statement for tree"
+;* V12 rat0 [V12,T05] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) long -> rax "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx
- sub rsp, 48
- mov qword ptr [rsp+0x28], rcx
+ sub rsp, 32
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M43979_IG02: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
mov rcx, gword ptr [rbx+0x20]
@@ -43,54 +42,46 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {},
; byrRegs +[rax]
; gcr arg pop 0
test rax, rax
- je SHORT G_M43979_IG05
+ je SHORT G_M43979_IG04
;; size=17 bbWeight=1 PerfScore 9.25
G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0001 {rax}, byref, isz
mov ecx, dword ptr [rax]
mov rdx, gword ptr [rbx+0x80]
; gcrRegs +[rdx]
- mov rax, qword ptr [rbx]
- ; byrRegs -[rax]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax]
- mov rax, qword ptr [rax+0x108]
- test rax, rax
- jne SHORT G_M43979_IG07
- ;; size=31 bbWeight=0.50 PerfScore 6.62
-G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M43979_IG07
- ;; size=2 bbWeight=0.10 PerfScore 0.20
-G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M43979_IG06
+ ;; size=11 bbWeight=0.50 PerfScore 3.00
+G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
+ ; byrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 48
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 32
pop rbx
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M43979_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43979_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rdx]
cmp ecx, dword ptr [rdx+0x08]
- jae SHORT G_M43979_IG09
+ jae SHORT G_M43979_IG08
mov eax, ecx
mov rax, gword ptr [rdx+8*rax+0x10]
; gcrRegs +[rax]
;; size=12 bbWeight=0.50 PerfScore 3.12
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 48
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 32
pop rbx
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M43979_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rdx]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 95, prolog size 10, PerfScore 23.57, instruction count 31, allocated bytes for code 95 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
+Total bytes of code 68, prolog size 5, PerfScore 18.75, instruction count 24, allocated bytes for code 68 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -103,5 +94,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+1 (+0.35%) : 33227.dasm - Moq.ExpressionExtensions:CanSplit(System.Linq.Expressions.Expression):ubyte (FullOpts)
@@ -9,7 +9,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 11, 25 ) ref -> rbx class-hnd <System.Linq.Expressions.Expression>
-; V01 loc0 [V01,T00] ( 12, 29 ) int -> rax
+; V01 loc0 [V01,T00] ( 11, 28.50) int -> rax
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Linq.Expressions.BinaryExpression>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Linq.Expressions.InvocationExpression>
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Linq.Expressions.MemberExpression>
@@ -21,7 +21,7 @@
; V10 tmp5 [V10,T08] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
; V11 tmp6 [V11,T10] ( 3, 2 ) ref -> rax class-hnd "spilling QMark2" <System.Linq.Expressions.InvocationExpression>
;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.RuntimeType>
-; V13 tmp8 [V13,T13] ( 2, 2 ) int -> rax "Single return block return value"
+; V13 tmp8 [V13,T13] ( 2, 2 ) int -> rcx "Single return block return value"
; V14 tmp9 [V14,T04] ( 2, 16 ) ref -> rbx single-def "arg temp"
; V15 tmp10 [V15,T11] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V16 tmp11 [V16,T06] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
@@ -58,14 +58,14 @@ G_M33341_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=5 bbWeight=2 PerfScore 2.50
G_M33341_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
- jmp G_M33341_IG17
+ jmp G_M33341_IG20
;; size=5 bbWeight=0.50 PerfScore 1.00
G_M33341_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
cmp eax, 63
je SHORT G_M33341_IG07
cmp eax, 73
- jne G_M33341_IG25
+ jne G_M33341_IG23
;; size=14 bbWeight=2 PerfScore 5.00
G_M33341_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; System.Linq.Expressions.BinaryExpression
@@ -96,13 +96,13 @@ G_M33341_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
cmp eax, 17
jg SHORT G_M33341_IG16
cmp eax, 6
- je SHORT G_M33341_IG18
+ je G_M33341_IG21
cmp eax, 17
- jne G_M33341_IG25
+ jne G_M33341_IG23
mov rcx, 0xD1FFAB1E ; System.Linq.Expressions.InvocationExpression
cmp rsi, rcx
je SHORT G_M33341_IG13
- ;; size=34 bbWeight=0.50 PerfScore 2.62
+ ;; size=38 bbWeight=0.50 PerfScore 2.62
G_M33341_IG12: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, rbx
; gcrRegs +[rdx]
@@ -141,45 +141,25 @@ G_M33341_IG15: ; bbWeight=0.50, epilog, nogc, extend
G_M33341_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax rcx rdx] +[rbx]
cmp eax, 23
- je SHORT G_M33341_IG20
- cmp eax, 38
- je SHORT G_M33341_IG25
- jmp SHORT G_M33341_IG25
- ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M33341_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
- cmp eax, 55
- jne SHORT G_M33341_IG25
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M33341_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M33341_IG19: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rsi
- ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M33341_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx]
+ jne SHORT G_M33341_IG23
mov rcx, 0xD1FFAB1E ; System.Linq.Expressions.MemberExpression
cmp rsi, rcx
- je SHORT G_M33341_IG22
- ;; size=15 bbWeight=0.50 PerfScore 0.75
-G_M33341_IG21: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M33341_IG18
+ ;; size=20 bbWeight=0.50 PerfScore 1.38
+G_M33341_IG17: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, rbx
; gcrRegs +[rdx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx rbx] +[rax]
; gcr arg pop 0
- jmp SHORT G_M33341_IG23
+ jmp SHORT G_M33341_IG19
;; size=10 bbWeight=0.25 PerfScore 0.81
-G_M33341_IG22: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M33341_IG18: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] +[rbx]
mov rax, rbx
; gcrRegs +[rax]
;; size=3 bbWeight=0.25 PerfScore 0.06
-G_M33341_IG23: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+G_M33341_IG19: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
mov rcx, rax
; gcrRegs +[rcx]
@@ -194,11 +174,28 @@ G_M33341_IG23: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rdx]
; gcr arg pop 0
+ xor ecx, ecx
test rax, rax
- setne al
+ setne cl
+ jmp SHORT G_M33341_IG25
+ ;; size=38 bbWeight=0.50 PerfScore 5.12
+G_M33341_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- movzx rax, al
- ;; size=37 bbWeight=0.50 PerfScore 4.12
+ cmp eax, 55
+ jne SHORT G_M33341_IG23
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M33341_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M33341_IG22: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rsi
+ ret
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M33341_IG23: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M33341_IG24: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -206,8 +203,8 @@ G_M33341_IG24: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M33341_IG25: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
+ movzx rax, cl
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
G_M33341_IG26: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -215,7 +212,7 @@ G_M33341_IG26: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-Total bytes of code 286, prolog size 6, PerfScore 131.62, instruction count 88, allocated bytes for code 286 (MethodHash=33537dc2) for method Moq.ExpressionExtensions:CanSplit(System.Linq.Expressions.Expression):ubyte (FullOpts)
+Total bytes of code 287, prolog size 6, PerfScore 131.12, instruction count 87, allocated bytes for code 287 (MethodHash=33537dc2) for method Moq.ExpressionExtensions:CanSplit(System.Linq.Expressions.Expression):ubyte (FullOpts)
; ============================================================
Unwind Info:
+12 (+2.21%) : 185022.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
@@ -54,16 +54,16 @@ G_M57654_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov ebp, r8d
mov esi, r9d
;; size=20 bbWeight=1 PerfScore 5.25
-G_M57654_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M57654_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rbx+0x54]
cmp ecx, 10
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG16
lea rax, [reloc @RWD00]
mov eax, dword ptr [rax+4*rcx]
lea rdx, G_M57654_IG02
add rax, rdx
jmp rax
- ;; size=30 bbWeight=1 PerfScore 9.00
+ ;; size=34 bbWeight=1 PerfScore 9.00
G_M57654_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x68], 0
jne SHORT G_M57654_IG04
@@ -82,33 +82,20 @@ G_M57654_IG04: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
mov eax, dword ptr [rax+0x30]
; gcrRegs -[rax]
;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
dec eax
cmp eax, 2
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG16
mov ecx, eax
lea rax, [reloc @RWD44]
mov eax, dword ptr [rax+4*rcx]
lea rdx, G_M57654_IG02
add rax, rdx
jmp rax
- ;; size=31 bbWeight=0.50 PerfScore 3.75
-G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rdi]
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M57654_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx rdi]
+ ;; size=35 bbWeight=0.50 PerfScore 3.75
+G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x5C], -1
- je G_M57654_IG12
+ je G_M57654_IG10
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
@@ -117,7 +104,7 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=008
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je G_M57654_IG12
+ je G_M57654_IG10
mov rcx, rdi
; gcrRegs +[rcx]
mov edx, ebp
@@ -126,27 +113,27 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=008
; gcrRegs -[rcx]
; gcr arg pop 0
test esi, esi
- je SHORT G_M57654_IG06
+ je G_M57654_IG16
cmp dword ptr [rbx+0x60], 0
- jne SHORT G_M57654_IG10
+ jne SHORT G_M57654_IG08
mov rcx, gword ptr [rbx+0x38]
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M57654_IG09
+ je SHORT G_M57654_IG07
mov rax, rcx
; gcrRegs +[rax]
mov rax, qword ptr [rax]
; gcrRegs -[rax]
mov rdx, 0xD1FFAB1E ; System.Xml.BinHexDecoder
cmp rax, rdx
- jne SHORT G_M57654_IG09
+ jne SHORT G_M57654_IG07
mov rax, qword ptr [rax+0x50]
call [rax+0x08]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- jmp SHORT G_M57654_IG10
- ;; size=98 bbWeight=0.50 PerfScore 18.62
-G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M57654_IG08
+ ;; size=102 bbWeight=0.50 PerfScore 18.62
+G_M57654_IG07: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; System.Xml.BinHexDecoder
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -159,13 +146,13 @@ G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
;; size=27 bbWeight=0.50 PerfScore 1.50
-G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M57654_IG08: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rbx+0x60]
mov rdx, gword ptr [rbx+0x40]
; gcrRegs +[rdx]
mov rdx, gword ptr [rdx+0x28]
cmp ecx, dword ptr [rdx+0x08]
- je G_M57654_IG06
+ je G_M57654_IG16
mov rcx, gword ptr [rbx+0x38]
; gcrRegs +[rcx]
mov rdx, rdi
@@ -199,7 +186,7 @@ G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x48]
;; size=98 bbWeight=0.50 PerfScore 23.50
-G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M57654_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -207,7 +194,7 @@ G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rdi
tail.jmp [rax+0x20]<unknown method>
;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M57654_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx] +[rdi]
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
@@ -218,7 +205,7 @@ G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=008
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x90]
;; size=23 bbWeight=0.50 PerfScore 3.38
-G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M57654_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -226,11 +213,11 @@ G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop rdi
tail.jmp [rax+0x30]<unknown method>
;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M57654_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M57654_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx rdx]
mov dword ptr [rbx+0x54], 10
;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M57654_IG13: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
mov rdx, rdi
@@ -244,7 +231,7 @@ G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcr arg pop 0
mov edi, eax
test edi, edi
- jne SHORT G_M57654_IG16
+ jne SHORT G_M57654_IG14
mov dword ptr [rbx+0x54], 1
mov rcx, rbx
; gcrRegs +[rcx]
@@ -252,9 +239,20 @@ G_M57654_IG15: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcrRegs -[rcx rbx]
; gcr arg pop 0
;; size=48 bbWeight=0.50 PerfScore 7.75
-G_M57654_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57654_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, edi
;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M57654_IG15: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ ret
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M57654_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M57654_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -306,23 +304,23 @@ G_M57654_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=45 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG14 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG06 - G_M57654_IG02
- dd G_M57654_IG03 - G_M57654_IG02
- dd G_M57654_IG03 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG19 - G_M57654_IG02
- dd G_M57654_IG15 - G_M57654_IG02
-RWD44 dd G_M57654_IG18 - G_M57654_IG02
- dd G_M57654_IG08 - G_M57654_IG02
+RWD00 dd G_M57654_IG16 - G_M57654_IG02
dd G_M57654_IG12 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG16 - G_M57654_IG02
+ dd G_M57654_IG03 - G_M57654_IG02
+ dd G_M57654_IG03 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG19 - G_M57654_IG02
+ dd G_M57654_IG13 - G_M57654_IG02
+RWD44 dd G_M57654_IG18 - G_M57654_IG02
+ dd G_M57654_IG06 - G_M57654_IG02
+ dd G_M57654_IG10 - G_M57654_IG02
-Total bytes of code 542, prolog size 20, PerfScore 90.50, instruction count 158, allocated bytes for code 542 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
+Total bytes of code 554, prolog size 20, PerfScore 90.50, instruction count 158, allocated bytes for code 554 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
; ============================================================
Unwind Info:
+12 (+2.21%) : 185020.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
@@ -54,16 +54,16 @@ G_M11729_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov ebp, r8d
mov esi, r9d
;; size=20 bbWeight=1 PerfScore 5.25
-G_M11729_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M11729_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rbx+0x54]
cmp ecx, 10
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG16
lea rax, [reloc @RWD00]
mov eax, dword ptr [rax+4*rcx]
lea rdx, G_M11729_IG02
add rax, rdx
jmp rax
- ;; size=30 bbWeight=1 PerfScore 9.00
+ ;; size=34 bbWeight=1 PerfScore 9.00
G_M11729_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x68], 0
jne SHORT G_M11729_IG04
@@ -82,33 +82,20 @@ G_M11729_IG04: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
mov eax, dword ptr [rax+0x30]
; gcrRegs -[rax]
;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
dec eax
cmp eax, 2
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG16
mov ecx, eax
lea rax, [reloc @RWD44]
mov eax, dword ptr [rax+4*rcx]
lea rdx, G_M11729_IG02
add rax, rdx
jmp rax
- ;; size=31 bbWeight=0.50 PerfScore 3.75
-G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rdi]
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M11729_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M11729_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx rdi]
+ ;; size=35 bbWeight=0.50 PerfScore 3.75
+G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x5C], -1
- je G_M11729_IG12
+ je G_M11729_IG10
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
@@ -117,7 +104,7 @@ G_M11729_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=008
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je G_M11729_IG12
+ je G_M11729_IG10
mov rcx, rdi
; gcrRegs +[rcx]
mov edx, ebp
@@ -126,27 +113,27 @@ G_M11729_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=008
; gcrRegs -[rcx]
; gcr arg pop 0
test esi, esi
- je SHORT G_M11729_IG06
+ je G_M11729_IG16
cmp dword ptr [rbx+0x60], 0
- jne SHORT G_M11729_IG10
+ jne SHORT G_M11729_IG08
mov rcx, gword ptr [rbx+0x38]
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M11729_IG09
+ je SHORT G_M11729_IG07
mov rax, rcx
; gcrRegs +[rax]
mov rax, qword ptr [rax]
; gcrRegs -[rax]
mov rdx, 0xD1FFAB1E ; System.Xml.Base64Decoder
cmp rax, rdx
- jne SHORT G_M11729_IG09
+ jne SHORT G_M11729_IG07
mov rax, qword ptr [rax+0x50]
call [rax+0x08]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- jmp SHORT G_M11729_IG10
- ;; size=98 bbWeight=0.50 PerfScore 18.62
-G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M11729_IG08
+ ;; size=102 bbWeight=0.50 PerfScore 18.62
+G_M11729_IG07: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; System.Xml.Base64Decoder
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -159,13 +146,13 @@ G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
;; size=27 bbWeight=0.50 PerfScore 1.50
-G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M11729_IG08: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rbx+0x60]
mov rdx, gword ptr [rbx+0x40]
; gcrRegs +[rdx]
mov rdx, gword ptr [rdx+0x28]
cmp ecx, dword ptr [rdx+0x08]
- je G_M11729_IG06
+ je G_M11729_IG16
mov rcx, gword ptr [rbx+0x38]
; gcrRegs +[rcx]
mov rdx, rdi
@@ -199,7 +186,7 @@ G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x48]
;; size=98 bbWeight=0.50 PerfScore 23.50
-G_M11729_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M11729_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -207,7 +194,7 @@ G_M11729_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rdi
tail.jmp [rax+0x20]<unknown method>
;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M11729_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M11729_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx] +[rdi]
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
@@ -218,7 +205,7 @@ G_M11729_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=008
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x90]
;; size=23 bbWeight=0.50 PerfScore 3.38
-G_M11729_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M11729_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -226,11 +213,11 @@ G_M11729_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop rdi
tail.jmp [rax+0x20]<unknown method>
;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M11729_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M11729_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx rdx]
mov dword ptr [rbx+0x54], 9
;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M11729_IG15: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M11729_IG13: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
mov rdx, rdi
@@ -244,7 +231,7 @@ G_M11729_IG15: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcr arg pop 0
mov edi, eax
test edi, edi
- jne SHORT G_M11729_IG16
+ jne SHORT G_M11729_IG14
mov dword ptr [rbx+0x54], 1
mov rcx, rbx
; gcrRegs +[rcx]
@@ -252,9 +239,20 @@ G_M11729_IG15: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcrRegs -[rcx rbx]
; gcr arg pop 0
;; size=48 bbWeight=0.50 PerfScore 7.75
-G_M11729_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M11729_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, edi
;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M11729_IG15: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ ret
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M11729_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M11729_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -306,23 +304,23 @@ G_M11729_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=45 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M11729_IG06 - G_M11729_IG02
- dd G_M11729_IG14 - G_M11729_IG02
- dd G_M11729_IG06 - G_M11729_IG02
- dd G_M11729_IG06 - G_M11729_IG02
- dd G_M11729_IG06 - G_M11729_IG02
+RWD00 dd G_M11729_IG16 - G_M11729_IG02
+ dd G_M11729_IG12 - G_M11729_IG02
+ dd G_M11729_IG16 - G_M11729_IG02
+ dd G_M11729_IG16 - G_M11729_IG02
+ dd G_M11729_IG16 - G_M11729_IG02
dd G_M11729_IG03 - G_M11729_IG02
dd G_M11729_IG03 - G_M11729_IG02
dd G_M11729_IG19 - G_M11729_IG02
dd G_M11729_IG19 - G_M11729_IG02
- dd G_M11729_IG15 - G_M11729_IG02
+ dd G_M11729_IG13 - G_M11729_IG02
dd G_M11729_IG19 - G_M11729_IG02
RWD44 dd G_M11729_IG18 - G_M11729_IG02
- dd G_M11729_IG08 - G_M11729_IG02
- dd G_M11729_IG12 - G_M11729_IG02
+ dd G_M11729_IG06 - G_M11729_IG02
+ dd G_M11729_IG10 - G_M11729_IG02
-Total bytes of code 542, prolog size 20, PerfScore 90.50, instruction count 158, allocated bytes for code 542 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
+Total bytes of code 554, prolog size 20, PerfScore 90.50, instruction count 158, allocated bytes for code 554 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
; ============================================================
Unwind Info:
realworld.run.windows.x64.checked.mch
-25 (-25.25%) : 10223.dasm - FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
@@ -8,8 +8,8 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 7, 5 ) ref -> rbx this class-hnd single-def <FSharp.Compiler.Infos+PropInfo>
-;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <FSharp.Compiler.Infos+PropInfo>
+; V00 this [V00,T00] ( 6, 4.50) ref -> rbx this class-hnd single-def <FSharp.Compiler.Infos+PropInfo>
+;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <FSharp.Compiler.Infos+PropInfo>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
; V03 loc2 [V03,T04] ( 2, 1 ) ref -> rcx class-hnd exact single-def <<unknown class>>
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <FSharp.Compiler.TypedTree+ValRef>
@@ -35,49 +35,37 @@ G_M3270_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
test rax, rax
- jne SHORT G_M3270_IG04
+ je SHORT G_M3270_IG05
;; size=23 bbWeight=1 PerfScore 2.75
G_M3270_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rdx rbx] +[rax]
- ; gcr arg pop 0
- test rax, rax
- jne SHORT G_M3270_IG06
- jmp SHORT G_M3270_IG06
- ;; size=25 bbWeight=0.50 PerfScore 2.38
-G_M3270_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rbx]
mov rcx, gword ptr [rbx+0x18]
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M3270_IG06
+ je SHORT G_M3270_IG05
cmp gword ptr [rbx+0x20], 0
- jne SHORT G_M3270_IG06
+ jne SHORT G_M3270_IG05
mov rcx, gword ptr [rcx+0x08]
mov rdx, gword ptr [rbx+0x08]
; gcrRegs +[rdx]
;; size=24 bbWeight=0.50 PerfScore 5.62
-G_M3270_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M3270_IG04: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
tail.jmp [FSharp.Compiler.Infos:ValRef.IsFSharpEventProperty(FSharp.Compiler.TypedTree+ValRef,FSharp.Compiler.TcGlobals+TcGlobals):ubyte]
; gcr arg pop 0
;; size=11 bbWeight=0.50 PerfScore 1.38
-G_M3270_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3270_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx rdx rbx]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3270_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M3270_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
-Total bytes of code 99, prolog size 8, PerfScore 14.62, instruction count 28, allocated bytes for code 99 (MethodHash=cb2ef339) for method FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
+Total bytes of code 74, prolog size 8, PerfScore 12.25, instruction count 22, allocated bytes for code 74 (MethodHash=cb2ef339) for method FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
-23 (-11.06%) : 27231.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:ResolveBranches(Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):ubyte:this (FullOpts)
@@ -25,10 +25,10 @@
; V14 tmp7 [V14 ] ( 5, 14.50) int -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V05._index (fldOffset=0x8)" P-DEP
; V15 tmp8 [V15,T02] ( 2, 8 ) ref -> rdx "argument with side effect"
;* V16 cse0 [V16,T11] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V17 cse1 [V17,T07] ( 3, 3 ) long -> r14 "CSE - aggressive"
-; V18 rat0 [V18,T09] ( 2, 2 ) long -> rcx "Spilling to split statement for tree"
+; V17 cse1 [V17,T07] ( 2, 2.50) long -> r14 "CSE - aggressive"
+;* V18 rat0 [V18,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V19 rat1 [V19,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V20 rat2 [V20,T08] ( 2, 2 ) long -> rcx "fgMakeTemp is creating a new local variable"
+;* V20 rat2 [V20,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 80
@@ -51,7 +51,7 @@ G_M13717_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rdi, r8
; gcrRegs +[rdi]
;; size=41 bbWeight=1 PerfScore 10.58
-G_M13717_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M13717_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x38]
; gcrRegs +[rcx]
mov rdx, rsi
@@ -63,8 +63,8 @@ G_M13717_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
mov rbp, rax
; gcrRegs +[rbp]
test rbp, rbp
- je G_M13717_IG07
- ;; size=27 bbWeight=1 PerfScore 9.75
+ je SHORT G_M13717_IG07
+ ;; size=23 bbWeight=1 PerfScore 9.75
G_M13717_IG03: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
lea rdx, [rsp+0x30]
@@ -74,14 +74,8 @@ G_M13717_IG03: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRe
; gcrRegs -[rcx]
; gcr arg pop 0
mov r14, qword ptr [rbx]
- mov rcx, r14
- mov rcx, qword ptr [rcx+0x38]
- mov rcx, qword ptr [rcx]
- mov rcx, qword ptr [rcx+0x30]
- test rcx, rcx
- jne SHORT G_M13717_IG05
jmp SHORT G_M13717_IG05
- ;; size=38 bbWeight=0.50 PerfScore 7.62
+ ;; size=19 bbWeight=0.50 PerfScore 3.88
G_M13717_IG04: ; bbWeight=2, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rsp+0x30]
; gcrRegs +[rcx]
@@ -138,7 +132,7 @@ G_M13717_IG08: ; bbWeight=1, epilog, nogc, extend
ret
;; size=11 bbWeight=1 PerfScore 3.75
-Total bytes of code 208, prolog size 32, PerfScore 106.33, instruction count 62, allocated bytes for code 208 (MethodHash=276aca6a) for method Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:ResolveBranches(Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):ubyte:this (FullOpts)
+Total bytes of code 185, prolog size 32, PerfScore 102.58, instruction count 56, allocated bytes for code 185 (MethodHash=276aca6a) for method Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:ResolveBranches(Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
-19 (-10.92%) : 25993.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System._Canon]:getHasAnyApplicableMember():ubyte:this (FullOpts)
@@ -27,10 +27,10 @@
; V16 tmp12 [V16 ] ( 5, 27 ) int -> [rsp+0x68] do-not-enreg[X] addr-exposed "field V01._index (fldOffset=0x8)" P-DEP
;* V17 tmp13 [V17 ] ( 0, 0 ) ubyte -> zero-ref "V03.[004..005)"
;* V18 cse0 [V18,T13] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V19 cse1 [V19,T08] ( 2, 2 ) long -> rsi "CSE - aggressive"
-; V20 rat0 [V20,T09] ( 2, 4 ) long -> rcx "Spilling to split statement for tree"
+; V19 cse1 [V19,T08] ( 1, 1 ) long -> rsi "CSE - aggressive"
+;* V20 rat0 [V20,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V21 rat1 [V21,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V22 rat2 [V22,T07] ( 2, 4 ) long -> rcx "fgMakeTemp is creating a new local variable"
+;* V22 rat2 [V22,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;* V23 rat3 [V23,T12] ( 0, 0 ) long -> zero-ref "runtime lookup"
;* V24 rat4 [V24,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
@@ -57,14 +57,8 @@ G_M864_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
; gcr arg pop 0
mov rsi, qword ptr [rbx]
- mov rcx, rsi
- mov rcx, qword ptr [rcx+0x38]
- mov rcx, qword ptr [rcx]
- mov rcx, qword ptr [rcx+0x30]
- test rcx, rcx
- jne SHORT G_M864_IG04
jmp SHORT G_M864_IG04
- ;; size=41 bbWeight=1 PerfScore 20.00
+ ;; size=22 bbWeight=1 PerfScore 12.50
G_M864_IG03: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rsp+0x60]
; gcrRegs +[rcx]
@@ -114,7 +108,7 @@ G_M864_IG08: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-Total bytes of code 174, prolog size 33, PerfScore 143.83, instruction count 52, allocated bytes for code 174 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
+Total bytes of code 155, prolog size 33, PerfScore 136.33, instruction count 46, allocated bytes for code 155 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
-5 (-0.08%) : 22634.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,ubyte):this (FullOpts)
@@ -2620,10 +2620,8 @@ G_M12170_IG173: ; bbWeight=2, gcrefRegs=1805 {rax rdx r11 r12}, byrefRegs
call [r11]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- cmp eax, 5
- jne SHORT G_M12170_IG177
jmp SHORT G_M12170_IG177
- ;; size=124 bbWeight=2 PerfScore 81.00
+ ;; size=119 bbWeight=2 PerfScore 78.50
G_M12170_IG174: ; bbWeight=2, gcrefRegs=1000 {r12}, byrefRegs=0040 {rsi}, byref, isz
mov rbx, gword ptr [rsp+0x78]
; gcrRegs +[rbx]
@@ -3248,7 +3246,7 @@ RWD00 dq 0070006100720057h, 0045006E006F004Eh, 0070006500630078h, 006E006F0069
RWD32 dq 006300780045006Eh, 0069007400700065h, 00680054006E006Fh, 00730077006F0072h
-Total bytes of code 6655, prolog size 65, PerfScore 949.15, instruction count 1448, allocated bytes for code 6655 (MethodHash=068ad075) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,ubyte):this (FullOpts)
+Total bytes of code 6650, prolog size 65, PerfScore 946.65, instruction count 1446, allocated bytes for code 6650 (MethodHash=068ad075) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,ubyte):this (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 18999.dasm - Microsoft.CodeAnalysis.RuleSetInclude:g_resolveIncludePath|80(System.String,System.String):System.String (FullOpts)
@@ -10,7 +10,7 @@
;
; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rcx class-hnd single-def <System.String>
; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.String>
-; V02 loc0 [V02,T02] ( 2, 2 ) ref -> rax class-hnd single-def <System.String>
+;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 40
+0 (0.00%) : 24411.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNativeIntegerOverflowingUnaryOperator(int,Microsoft.CodeAnalysis.ConstantValue):System.Object (FullOpts)
@@ -23,21 +23,9 @@ G_M35943_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=9 bbWeight=1 PerfScore 2.50
G_M35943_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp ecx, 0x1509
- je SHORT G_M35943_IG05
+ jne SHORT G_M35943_IG05
;; size=8 bbWeight=1 PerfScore 1.25
-G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rsi
- ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax] +[rbx]
+G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -59,6 +47,17 @@ G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov rax, rsi
; gcrRegs +[rax]
;; size=43 bbWeight=0.50 PerfScore 5.75
+G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rsi
+ ret
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M35943_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rsi]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M35943_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -66,7 +65,7 @@ G_M35943_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M35943_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax rsi]
+ ; gcrRegs -[rax]
call CORINFO_HELP_OVERFLOW
; gcr arg pop 0
int3
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.windows.x64.checked.mch |
24 |
24 |
0 |
0 |
-405 |
+0 |
| benchmarks.run_pgo.windows.x64.checked.mch |
261 |
164 |
4 |
93 |
-4,575 |
+156 |
| benchmarks.run_tiered.windows.x64.checked.mch |
12 |
11 |
0 |
1 |
-220 |
+0 |
| coreclr_tests.run.windows.x64.checked.mch |
445 |
249 |
9 |
187 |
-5,898 |
+55 |
| libraries.crossgen2.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries.pmi.windows.x64.checked.mch |
202 |
191 |
4 |
7 |
-3,491 |
+44 |
| libraries_tests.run.windows.x64.Release.mch |
978 |
804 |
24 |
150 |
-22,798 |
+550 |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
249 |
237 |
9 |
3 |
-3,976 |
+102 |
| realworld.run.windows.x64.checked.mch |
60 |
58 |
0 |
2 |
-1,130 |
+0 |
| smoke_tests.nativeaot.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
2,231 |
1,738 |
50 |
443 |
-42,493 |
+907 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.windows.x64.checked.mch |
27,917 |
4 |
27,913 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.windows.x64.checked.mch |
102,635 |
50,161 |
52,474 |
19 (0.02%) |
19 (0.02%) |
| benchmarks.run_tiered.windows.x64.checked.mch |
54,333 |
36,871 |
17,462 |
0 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.windows.x64.checked.mch |
573,722 |
341,128 |
232,594 |
8 (0.00%) |
8 (0.00%) |
| libraries.crossgen2.windows.x64.checked.mch |
2,104 |
0 |
2,104 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.windows.x64.checked.mch |
309,148 |
6 |
309,142 |
0 (0.00%) |
0 (0.00%) |
| libraries_tests.run.windows.x64.Release.mch |
671,224 |
476,124 |
195,100 |
111 (0.02%) |
111 (0.02%) |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
320,489 |
21,924 |
298,565 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.windows.x64.checked.mch |
36,887 |
3 |
36,884 |
0 (0.00%) |
0 (0.00%) |
| smoke_tests.nativeaot.windows.x64.checked.mch |
67 |
0 |
67 |
0 (0.00%) |
0 (0.00%) |
|
2,098,526 |
926,221 |
1,172,305 |
138 (0.01%) |
138 (0.01%) |
jit-analyze output
benchmarks.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 8737750 (overridden on cmd)
Total bytes of diff: 8737345 (overridden on cmd)
Total bytes of delta: -405 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 24 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
benchmarks.run_pgo.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 35778033 (overridden on cmd)
Total bytes of diff: 35773614 (overridden on cmd)
Total bytes of delta: -4419 (-0.01 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 88 unchanged.
benchmarks.run_tiered.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 12549088 (overridden on cmd)
Total bytes of diff: 12548868 (overridden on cmd)
Total bytes of delta: -220 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 12 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
coreclr_tests.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 392964649 (overridden on cmd)
Total bytes of diff: 392958806 (overridden on cmd)
Total bytes of delta: -5843 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 80 unchanged.
libraries.pmi.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 61646281 (overridden on cmd)
Total bytes of diff: 61642834 (overridden on cmd)
Total bytes of delta: -3447 (-0.01 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 62 unchanged.
libraries_tests.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 278843071 (overridden on cmd)
Total bytes of diff: 278820823 (overridden on cmd)
Total bytes of delta: -22248 (-0.01 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 88 unchanged.
librariestestsnotieredcompilation.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 137561184 (overridden on cmd)
Total bytes of diff: 137557310 (overridden on cmd)
Total bytes of delta: -3874 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 71 unchanged.
realworld.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 14184922 (overridden on cmd)
Total bytes of diff: 14183792 (overridden on cmd)
Total bytes of delta: -1130 (-0.01 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 50 unchanged.