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)

No diffs found?

+0 (0.00%) : 176780.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:FillBuffer(int):this (FullOpts)

No diffs found?

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)

No diffs found?

+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.