Assembly Diffs

linux arm

Diffs are based on 2,239,391 contexts (829,328 MinOpts, 1,410,063 FullOpts).

MISSED contexts: 71,273 (3.08%)

Overall (-27,144 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 15,292,190 -366
benchmarks.run_pgo.linux.arm.checked.mch 63,957,952 -1,014
benchmarks.run_tiered.linux.arm.checked.mch 21,548,230 -266
coreclr_tests.run.linux.arm.checked.mch 321,754,792 -4,920
libraries.crossgen2.linux.arm.checked.mch 34,522,432 -590
libraries.pmi.linux.arm.checked.mch 49,857,080 -2,900
libraries_tests.run.linux.arm.Release.mch 243,858,436 -12,512
librariestestsnotieredcompilation.run.linux.arm.Release.mch 94,524,880 -3,542
realworld.run.linux.arm.checked.mch 13,606,712 -1,034

FullOpts (-27,144 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,902,988 -366
benchmarks.run_pgo.linux.arm.checked.mch 52,757,986 -1,014
benchmarks.run_tiered.linux.arm.checked.mch 12,895,230 -266
coreclr_tests.run.linux.arm.checked.mch 109,277,204 -4,920
libraries.crossgen2.linux.arm.checked.mch 34,521,202 -590
libraries.pmi.linux.arm.checked.mch 49,750,856 -2,900
libraries_tests.run.linux.arm.Release.mch 122,889,304 -12,512
librariestestsnotieredcompilation.run.linux.arm.Release.mch 84,454,144 -3,542
realworld.run.linux.arm.checked.mch 13,171,412 -1,034

Example diffs

benchmarks.run.linux.arm.checked.mch

-34 (-58.62%) : 761.dasm - BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<g_GetCurrentProcessInstructionSets|20>d:MoveNext():ubyte:this (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 27 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 6, 4.50) ref -> r0 this class-hnd single-def <BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d>
+; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d>
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
-; V02 loc1 [V02,T02] ( 3, 1.50) int -> r0 single-def
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 rat0 [V04,T01] ( 3, 6 ) int -> r3 "ReplaceWithLclVar is creating a new local variable"
+; V04 rat0 [V04,T01] ( 2, 4 ) int -> r3 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0 @@ -24,39 +24,19 @@ G_M6535_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref ; gcrRegs +[r0] ldr r3, [r0+0x08] cmp r3, 27
- bhi SHORT G_M6535_IG05 - movs r2, 1 - lsr r3, r2, r3 - and r3, r3, 1 - cmp r3, 0 - beq SHORT G_M6535_IG04 - ;; size=20 bbWeight=1 PerfScore 8.00 -G_M6535_IG03: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ bhi SHORT G_M6535_IG03
mov r3, -1 str r3, [r0+0x08]
- ldr r0, [r0+0x10] - ; gcrRegs -[r0] - subs r3, r0, 1 - cmp r3, 1 - bls SHORT G_M6535_IG05 - cmp r0, 4 - beq SHORT G_M6535_IG05 - b SHORT G_M6535_IG05 - ;; size=20 bbWeight=0.50 PerfScore 4.50 -G_M6535_IG04: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref - ; gcrRegs +[r0] - mov r3, -1 - str r3, [r0+0x08] - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M6535_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=1 PerfScore 5.00 +G_M6535_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movs r0, 0 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M6535_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M6535_IG04: ; bbWeight=1, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 58, prolog size 6, PerfScore 17.50, instruction count 23, allocated bytes for code 58 (MethodHash=ff50e678) for method BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 24, prolog size 6, PerfScore 9.00, instruction count 9, allocated bytes for code 24 (MethodHash=ff50e678) for method BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d:MoveNext():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -68,7 +48,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 58 (0x00003a)
+ Function Length : 12 (0x0000c) Actual length = 24 (0x000018)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-20 (-10.99%) : 31657.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 -> r4 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
+; V00 this [V00,T02] ( 3, 3 ) ref -> r4 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
; V01 loc0 [V01,T05] ( 3, 4 ) ref -> r5 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 ( 8) [sp+0x04] 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 ( 8) [sp+0x00] 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 ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" @@ -20,52 +20,44 @@ ;* 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 -> r0 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableStack`1[System.__Canon]> ; V11 tmp6 [V11,T00] ( 2, 32 ) ref -> r0 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableStack`1[System.__Canon]>
-; V12 tmp7 [V12 ] ( 2, 3 ) ref -> [sp+0x04] do-not-enreg[X] addr-exposed "field V03._originalStack (fldOffset=0x0)" P-DEP -; V13 tmp8 [V13 ] ( 9, 29 ) ref -> [sp+0x08] do-not-enreg[X] addr-exposed "field V03._remainingStack (fldOffset=0x4)" P-DEP
+; V12 tmp7 [V12 ] ( 2, 3 ) ref -> [sp+0x00] do-not-enreg[X] addr-exposed "field V03._originalStack (fldOffset=0x0)" P-DEP +; V13 tmp8 [V13 ] ( 9, 29 ) ref -> [sp+0x04] do-not-enreg[X] addr-exposed "field V03._remainingStack (fldOffset=0x4)" P-DEP
;* V14 cse0 [V14,T08] ( 0, 0 ) int -> zero-ref hoist "CSE - aggressive"
-; V15 rat0 [V15,T04] ( 2, 4 ) int -> r0 "Spilling to split statement for tree"
+;* V15 rat0 [V15,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V16 rat1 [V16,T06] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V17 rat2 [V17,T03] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V17 rat2 [V17,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M64146_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - sub sp, 16 - add r11, sp, 24
+ push {r2,r3,r4,r5,r11,lr} + add r11, sp, 16
movs r1, 0
- str r1, [sp+0x04] // [V03 loc2] - str r1, [sp+0x08] // [V03 loc2+0x04] - str r0, [r11-0x0C]
+ str r1, [sp] // [V03 loc2] + str r1, [sp+0x04] // [V03 loc2+0x04]
mov r4, r0 ; gcrRegs +[r4]
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M64146_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz movs r5, 0 ldr r0, [r4+0x50] ; gcrRegs +[r0]
- add r1, sp, 4
+ add r1, sp, 0
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] ldr r2, [r0] blx r3 // System.Collections.Immutable.ImmutableStack`1[System.__Canon]:GetEnumerator():System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]:this ; gcrRegs -[r0] +[r5]
- ldr r0, [r4] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x10] - cmp r0, 0 - bne SHORT G_M64146_IG04
b SHORT G_M64146_IG04
- ;; size=34 bbWeight=1 PerfScore 15.00
+ ;; size=22 bbWeight=1 PerfScore 9.00
G_M64146_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r5]
- ldr r0, [sp+0x08]
+ ldr r0, [sp+0x04]
; gcrRegs +[r0] cmp r0, 0 beq SHORT G_M64146_IG10
- ldr r0, [sp+0x08]
+ ldr r0, [sp+0x04]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -76,36 +68,36 @@ G_M64146_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ;; size=24 bbWeight=2 PerfScore 20.00 G_M64146_IG04: ; bbWeight=8, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
- ldr r0, [sp+0x08]
+ ldr r0, [sp+0x04]
; gcrRegs +[r0] cmp r0, 0 bne SHORT G_M64146_IG06 ;; size=6 bbWeight=8 PerfScore 24.00 G_M64146_IG05: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
- ldr r0, [sp+0x04]
+ ldr r0, [sp]
; gcrRegs +[r0]
- str r0, [sp+0x08] // [V13 tmp8]
+ str r0, [sp+0x04] // [V13 tmp8]
b SHORT G_M64146_IG07 ;; size=6 bbWeight=2 PerfScore 6.00 G_M64146_IG06: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
- ldr r0, [sp+0x08] // [V13 tmp8]
+ ldr r0, [sp+0x04] // [V13 tmp8]
; gcrRegs +[r0] ldr r0, [r0+0x08] cmp r0, 0 beq SHORT G_M64146_IG07
- ldr r0, [sp+0x08] // [V13 tmp8]
+ ldr r0, [sp+0x04] // [V13 tmp8]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] ldr r2, [r0] blx r3 // System.Collections.Immutable.ImmutableStack`1[System.__Canon]:Pop():System.Collections.Immutable.ImmutableStack`1[System.__Canon]:this
- str r0, [sp+0x08] // [V13 tmp8]
+ str r0, [sp+0x04] // [V13 tmp8]
;; size=26 bbWeight=2 PerfScore 22.00 G_M64146_IG07: ; bbWeight=8, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
- ldr r0, [sp+0x08] // [V13 tmp8]
+ ldr r0, [sp+0x04] // [V13 tmp8]
; gcrRegs +[r0] ldr r0, [r0+0x08] cmp r0, 0 @@ -117,9 +109,8 @@ G_M64146_IG08: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ; gcrRegs +[r0] ;; size=2 bbWeight=1 PerfScore 1.00 G_M64146_IG09: ; bbWeight=1, epilog, nogc, extend
- add sp, 16 - pop {r4,r5,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00
+ pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
G_M64146_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r0 r5] movw r0, 0xd1ff @@ -145,7 +136,7 @@ G_M64146_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr bkpt ;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 182, prolog size 20, PerfScore 130.00, instruction count 73, allocated bytes for code 182 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
+; Total bytes of code 162, prolog size 14, PerfScore 121.00, instruction count 64, allocated bytes for code 162 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -157,7 +148,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 91 (0x0005b) Actual length = 182 (0x0000b6)
+ Function Length : 81 (0x00051) Actual length = 162 (0x0000a2)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -165,7 +156,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 04 add sp, sp, #16 ; opsize 16 - A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32 + FF end
FF end

-12 (-8.11%) : 23393.dasm - System.Collections.IterateForEach`1[System.Canon]:ImmutableArray():System.Canon:this (FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 5, 5 ) ref -> r4 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
+; V00 this [V00,T01] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
; V01 loc0 [V01,T06] ( 3, 4 ) ref -> r5 ld-addr-op class-hnd <System.__Canon> ; V02 loc1 [V02 ] ( 2, 2 ) struct ( 4) [sp+0x08] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ; V03 loc2 [V03 ] ( 8, 33 ) struct ( 8) [sp+0x00] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[System.__Canon]> @@ -26,9 +26,9 @@ ; V15 rat0 [V15,T04] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" ; V16 rat1 [V16,T07] ( 3, 4 ) int -> r2 "runtime lookup" ; V17 rat2 [V17,T02] ( 3, 5.60) int -> r2 "fgMakeTemp is creating a new local variable"
-; V18 rat3 [V18,T05] ( 2, 4 ) int -> r0 "Spilling to split statement for tree"
+;* V18 rat3 [V18,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V19 rat4 [V19,T08] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V20 rat5 [V20,T03] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V20 rat5 [V20,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -78,14 +78,8 @@ G_M57349_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ldr r3, [r3] blx r3 // System.Collections.Immutable.ImmutableArray`1[System.__Canon]:GetEnumerator():System.Collections.Immutable.ImmutableArray`1+Enumerator[System.__Canon]:this ; gcr arg pop 0
- ldr r0, [r4] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x14] - cmp r0, 0 - bne SHORT G_M57349_IG07
b SHORT G_M57349_IG07
- ;; size=30 bbWeight=1 PerfScore 13.00
+ ;; size=18 bbWeight=1 PerfScore 7.00
G_M57349_IG06: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r5] ldr r0, [sp+0x04] // [V12 tmp7] @@ -134,7 +128,7 @@ G_M57349_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 24, PerfScore 112.00, instruction count 62, allocated bytes for code 148 (MethodHash=874a1ffa) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
+; Total bytes of code 136, prolog size 24, PerfScore 106.00, instruction count 56, allocated bytes for code 136 (MethodHash=874a1ffa) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -146,7 +140,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 74 (0x0004a) Actual length = 148 (0x000094)
+ Function Length : 68 (0x00044) Actual length = 136 (0x000088)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-6 (-0.31%) : 5720.dasm - System.IO.Strategies.BufferedFileStreamStrategy+d__57:MoveNext():this (FullOpts)

@@ -61,7 +61,7 @@ ;* V50 tmp33 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V51 tmp34 [V51,T21] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task> ; V52 tmp35 [V52,T38] ( 2, 4 ) int -> r1 "Inlining Arg"
-; V53 tmp36 [V53,T09] ( 4, 8 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
+; V53 tmp36 [V53,T08] ( 4, 8 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
;* V54 tmp37 [V54 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.StringBuilder+AppendInterpolatedStringHandler> ; V55 tmp38 [V55,T05] ( 5, 10 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder> ; V56 tmp39 [V56,T42] ( 3, 3 ) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>> @@ -74,7 +74,7 @@ ;* V63 tmp46 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.String> ;* V64 tmp47 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V65 tmp48 [V65,T06] ( 5, 10 ) ref -> r2 class-hnd single-def "Inlining Arg" <ubyte[]>
-; V66 tmp49 [V66,T08] ( 5, 8 ) int -> r3 "Inlining Arg"
+; V66 tmp49 [V66,T09] ( 4, 8 ) int -> r3 "Inlining Arg"
;* V67 tmp50 [V67 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask> ;* V68 tmp51 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Threading.Tasks.ValueTask> ;* V69 tmp52 [V69 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable> @@ -288,7 +288,7 @@ G_M60055_IG04: ; bbWeight=1, gcVars=000000000000000000000001 {V00}, gcref blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M60055_IG72
+ b SHORT G_M60055_IG71
;; size=60 bbWeight=1 PerfScore 22.00 G_M60055_IG05: ; bbWeight=1, gcVars=000000000000000000000003 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, gcvars, byref ; gcrRegs +[r5] @@ -335,8 +335,8 @@ G_M60055_IG09: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by cmp r6, 0 beq G_M60055_IG29 cmp r6, 1
- beq G_M60055_IG55 - b SHORT G_M60055_IG60
+ beq G_M60055_IG54 + b SHORT G_M60055_IG59
;; size=22 bbWeight=1 PerfScore 9.00 G_M60055_IG10: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz ldr r0, [r5+0x20] @@ -507,7 +507,7 @@ G_M60055_IG22: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ; gcrRegs +[r2] ldr r3, [r5+0x1C] cmp r2, 0
- beq G_M60055_IG50
+ beq G_M60055_IG49
ldr r1, [r2+0x04] cmp r1, r3 blo G_M60055_IG49 @@ -652,7 +652,7 @@ G_M60055_IG28: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M60055_IG65
+ b SHORT G_M60055_IG64
;; size=68 bbWeight=1 PerfScore 24.00 G_M60055_IG29: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref ; byrRegs +[r4] @@ -812,7 +812,7 @@ G_M60055_IG40: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ldr r6, [sp+0x20] // [V14 loc13] ; gcrRegs +[r6] cmp r6, 0
- beq G_M60055_IG51
+ beq G_M60055_IG50
mov r1, r6 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -823,7 +823,7 @@ G_M60055_IG40: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ; gcrRegs -[r1] +[r0] ; gcr arg pop 0 cmp r0, 0
- bne G_M60055_IG51
+ bne G_M60055_IG50
mov r1, r6 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -851,14 +851,14 @@ G_M60055_IG42: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b blx r3 // System.Diagnostics.Debug:Assert(ubyte) ; gcr arg pop 0 cmp r6, 0
- bne G_M60055_IG52
+ bne G_M60055_IG51
;; size=20 bbWeight=1 PerfScore 7.00 G_M60055_IG43: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r6] ldr r7, [sp+0x20] // [V14 loc13] ; gcrRegs +[r7] cmp r7, 0
- beq G_M60055_IG58
+ beq G_M60055_IG57
mov r1, r7 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -869,7 +869,7 @@ G_M60055_IG43: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ; gcrRegs -[r1] +[r0] ; gcr arg pop 0 cmp r0, 0
- bne G_M60055_IG58
+ bne G_M60055_IG57
mov r1, r7 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -908,7 +908,7 @@ G_M60055_IG45: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcrRegs -[r1] +[r0] ; gcr arg pop 0 cmp r0, 0
- beq G_M60055_IG59
+ beq G_M60055_IG58
ldr r1, [r0+0x1C] dmb 15 and r1, r1, 0x11000000 @@ -966,7 +966,7 @@ G_M60055_IG47: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre dmb 15 ands r1, r1, 0x1600000 cmp r1, 0
- bne G_M60055_IG63
+ bne G_M60055_IG62
;; size=78 bbWeight=1 PerfScore 29.00 G_M60055_IG48: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs -[r6] @@ -1005,7 +1005,7 @@ G_M60055_IG48: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M60055_IG69
+ b SHORT G_M60055_IG68
;; size=62 bbWeight=1 PerfScore 23.00 G_M60055_IG49: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref movw r3, 0xd1ff @@ -1015,18 +1015,13 @@ G_M60055_IG49: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ; gcr arg pop 0 bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-G_M60055_IG50: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz - cmp r3, 0 - bne SHORT G_M60055_IG49 - b SHORT G_M60055_IG49 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M60055_IG51: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M60055_IG50: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r6] ; byrRegs -[r4] movs r0, 1 b SHORT G_M60055_IG42 ;; size=4 bbWeight=1 PerfScore 2.00
-G_M60055_IG52: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M60055_IG51: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
mov r1, r6 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -1037,16 +1032,16 @@ G_M60055_IG52: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b ; gcrRegs -[r1] +[r0] ; gcr arg pop 0 cmp r0, 0
- beq SHORT G_M60055_IG53
+ beq SHORT G_M60055_IG52
ldr r0, [r0+0x1C] ; gcrRegs -[r0] dmb 15 ands r0, r0, 0x1600000 cmp r0, 0 bne G_M60055_IG43
- b SHORT G_M60055_IG54
+ b SHORT G_M60055_IG53
;; size=42 bbWeight=1 PerfScore 14.00
-G_M60055_IG53: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M60055_IG52: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
mov r0, r6 ; gcrRegs +[r0] ldrsh r1, [sp+0x24] // [V14 loc13+0x04] @@ -1059,7 +1054,7 @@ G_M60055_IG53: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b cmp r0, 0 bne G_M60055_IG43 ;; size=24 bbWeight=1 PerfScore 8.00
-G_M60055_IG54: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M60055_IG53: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
movs r0, 2 str r0, [sp+0x4C] // [V01 loc0] ldr r4, [sp+0x14] // [V00 this] @@ -1093,20 +1088,20 @@ G_M60055_IG54: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M60055_IG67
+ b SHORT G_M60055_IG66
;; size=68 bbWeight=1 PerfScore 24.00
-G_M60055_IG55: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M60055_IG54: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
; byrRegs +[r4] add r0, r4, 32 ; byrRegs +[r0] ;; size=4 bbWeight=1 PerfScore 1.00
-G_M60055_IG56: ; bbWeight=1, nogc, extend
+G_M60055_IG55: ; bbWeight=1, nogc, extend
ldr r3, [r0] str r3, [sp+0x20] // [V14 loc13] ldr r3, [r0+0x04] str r3, [sp+0x24] // [V14 loc13+0x04] ;; size=8 bbWeight=1 PerfScore 4.00
-G_M60055_IG57: ; bbWeight=1, isz, extend
+G_M60055_IG56: ; bbWeight=1, isz, extend
movs r3, 0 str r3, [r0] str r3, [r0+0x04] @@ -1115,13 +1110,13 @@ G_M60055_IG57: ; bbWeight=1, isz, extend str r3, [r4+0x08] b SHORT G_M60055_IG43 ;; size=16 bbWeight=1 PerfScore 7.00
-G_M60055_IG58: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M60055_IG57: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r7] ; byrRegs -[r0 r4] movs r0, 1 b SHORT G_M60055_IG45 ;; size=4 bbWeight=1 PerfScore 2.00
-G_M60055_IG59: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M60055_IG58: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r7 ; gcrRegs +[r0] ldrsh r1, [sp+0x24] // [V14 loc13+0x04] @@ -1133,18 +1128,18 @@ G_M60055_IG59: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcr arg pop 0 b SHORT G_M60055_IG46 ;; size=20 bbWeight=1 PerfScore 7.00
-G_M60055_IG60: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M60055_IG59: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
; byrRegs +[r4] add r6, r4, 24 ; byrRegs +[r6] ;; size=4 bbWeight=1 PerfScore 1.00
-G_M60055_IG61: ; bbWeight=1, nogc, extend
+G_M60055_IG60: ; bbWeight=1, nogc, extend
ldr r3, [r6] str r3, [sp+0x18] // [V15 loc14] ldr r3, [r6+0x04] str r3, [sp+0x1C] // [V15 loc14+0x04] ;; size=8 bbWeight=1 PerfScore 4.00
-G_M60055_IG62: ; bbWeight=1, extend
+G_M60055_IG61: ; bbWeight=1, extend
movs r3, 0 str r3, [r6] str r3, [r6+0x04] @@ -1152,7 +1147,7 @@ G_M60055_IG62: ; bbWeight=1, extend str r3, [sp+0x4C] // [V01 loc0] str r3, [r4+0x08] ;; size=14 bbWeight=1 PerfScore 6.00
-G_M60055_IG63: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
+G_M60055_IG62: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
; byrRegs -[r6] ldr r0, [sp+0x18] // [V131 tmp114] ; gcrRegs +[r0] @@ -1161,7 +1156,7 @@ G_M60055_IG63: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ...

-24 (-0.24%) : 11191.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)

@@ -423,16 +423,16 @@ ; V412 cse17 [V412,T146] ( 4, 8 ) int -> r0 "CSE - conservative" ; V413 cse18 [V413,T282] ( 4, 2 ) int -> r0 "CSE - conservative" ; V414 cse19 [V414,T03] ( 88,115.50) int -> [sp+0x110] spill-single-def "CSE - aggressive"
-; V415 rat0 [V415,T339] ( 3, 1.50) int -> r2 "field V52.lo (fldOffset=0x0)" P-INDEP -; V416 rat1 [V416,T340] ( 3, 1.50) int -> r3 "field V52.hi (fldOffset=0x4)" P-INDEP
+; V415 rat0 [V415,T339] ( 2, 1 ) int -> r2 "field V52.lo (fldOffset=0x0)" P-INDEP +; V416 rat1 [V416,T340] ( 2, 1 ) int -> r3 "field V52.hi (fldOffset=0x4)" P-INDEP
; V417 rat2 [V417,T209] ( 8, 4 ) int -> [sp+0x10C] "field V73.lo (fldOffset=0x0)" P-INDEP ; V418 rat3 [V418,T218] ( 7, 3.50) int -> [sp+0x108] "field V73.hi (fldOffset=0x4)" P-INDEP ; V419 rat4 [V419,T201] ( 9, 4.50) int -> [sp+0x104] "field V75.lo (fldOffset=0x0)" P-INDEP ; V420 rat5 [V420,T202] ( 9, 4.50) int -> [sp+0x100] "field V75.hi (fldOffset=0x4)" P-INDEP ; V421 rat6 [V421,T341] ( 2, 1.50) int -> r0 "field V77.lo (fldOffset=0x0)" P-INDEP ; V422 rat7 [V422,T342] ( 2, 1.50) int -> r1 "field V77.hi (fldOffset=0x4)" P-INDEP
-; V423 rat8 [V423,T140] ( 3, 10 ) int -> r0 "field V92.lo (fldOffset=0x0)" P-INDEP -; V424 rat9 [V424,T141] ( 3, 10 ) int -> r3 "field V92.hi (fldOffset=0x4)" P-INDEP
+; V423 rat8 [V423,T140] ( 2, 8 ) int -> r0 "field V92.lo (fldOffset=0x0)" P-INDEP +; V424 rat9 [V424,T141] ( 2, 8 ) int -> r3 "field V92.hi (fldOffset=0x4)" P-INDEP
; V425 rat10 [V425,T142] ( 3, 10 ) int -> r0 "field V101.lo (fldOffset=0x0)" P-INDEP ; V426 rat11 [V426,T143] ( 3, 10 ) int -> r3 "field V101.hi (fldOffset=0x4)" P-INDEP ; V427 rat12 [V427,T62] ( 8, 16 ) int -> [sp+0xFC] "field V121.lo (fldOffset=0x0)" P-INDEP @@ -550,7 +550,7 @@ G_M11467_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b ldr r3, [r9+0x08] blx r3 // <unknown method> ; gcrRegs -[r0-r1 r5]
- b G_M11467_IG277
+ b G_M11467_IG275
;; size=30 bbWeight=0.50 PerfScore 4.50 G_M11467_IG04: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r5-r7] @@ -611,14 +611,14 @@ G_M11467_IG05: ; bbWeight=0.50, gcVars=0000000000000000000000000000000000 ; gcrRegs +[r3] ldr r0, [r3+0x04] cmp r0, 0
- blt G_M11467_IG279
+ blt G_M11467_IG277
str r0, [sp+0x32C] // [V05 loc2] cmp r0, 0 ble G_M11467_IG45 movs r0, 0 ldr r1, [r3+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
ldrb lr, [r3+0x08] str lr, [sp+0x2F8] // [V21 tmp8] cmp lr, 0x80000000 @@ -823,7 +823,7 @@ G_M11467_IG18: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ; gcrRegs +[r2] ldr r0, [r2+0x04] cmp r3, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -838,7 +838,7 @@ G_M11467_IG19: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r0, r3, 1 ldr r1, [r2+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -854,7 +854,7 @@ G_M11467_IG20: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r0, r3, 2 ldr r1, [r2+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -870,7 +870,7 @@ G_M11467_IG21: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ; gcrRegs +[r2] ldr r0, [r2+0x04] cmp r3, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -885,7 +885,7 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r0, r3, 1 ldr r1, [r2+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -901,7 +901,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r0, r3, 2 ldr r1, [r2+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -915,7 +915,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ldr r0, [r2+0x04] ldr r1, [sp+0x2F0] // [V23 tmp10] cmp r1, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -928,7 +928,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r3, r1, 1 ldr r12, [r2+0x04] cmp r3, r12
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -941,7 +941,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r1, r1, 2 ldr r3, [r2+0x04] cmp r1, r3
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -972,7 +972,7 @@ G_M11467_IG25: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcrRegs +[lr] ldr r1, [lr+0x04] cmp r3, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r1, lr, 8 ; byrRegs +[r1] str r3, [sp+0x328] // [V06 loc3] @@ -1179,7 +1179,7 @@ G_M11467_IG38: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcrRegs +[r1] ldr r2, [r1+0x04] cmp r3, r2
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1194,7 +1194,7 @@ G_M11467_IG39: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b adds r2, r3, 1 ldr r0, [r1+0x04] cmp r2, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1210,7 +1210,7 @@ G_M11467_IG40: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b adds r2, r3, 2 ldr r0, [r1+0x04] cmp r2, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1226,7 +1226,7 @@ G_M11467_IG41: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcrRegs +[r1] ldr r2, [r1+0x04] cmp r3, r2
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1241,7 +1241,7 @@ G_M11467_IG42: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b adds r2, r3, 1 ldr r0, [r1+0x04] cmp r2, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1259,7 +1259,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b adds r0, r3, 2 ldr lr, [r2+0x04] cmp r0, lr
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -1273,7 +1273,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ldr r0, [r2+0x04] ldr r3, [sp+0x2E0] // [V38 tmp25] cmp r3, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -1286,7 +1286,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b add lr, r3, 1 ldr r12, [r2+0x04] cmp lr, r12
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -1300,7 +1300,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcrRegs -[r1] ldr r3, [r2+0x04] cmp r1, r3
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -1365,7 +1365,7 @@ G_M11467_IG46: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ; GC ptr vars -{V07} blx r3 // <unknown method> ; gcrRegs -[r0-r1 r6]
- b G_M11467_IG107
+ b G_M11467_IG105
;; size=44 bbWeight=0.50 PerfScore 8.00 G_M11467_IG47: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000000000000000200000000000002000000000000000000000000000000000 {V01 V07}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars +{V07 V133} @@ -1382,14 +1382,14 @@ G_M11467_IG47: ; bbWeight=0.50, gcVars=0000000000000000000000000000000000 ; gcrRegs +[r1] ldr r2, [r1+0x04] cmp r2, 0
- blt G_M11467_IG279
+ blt G_M11467_IG277
str r2, [sp+0x328] // [V06 loc3] cmp r2, 0
- ble G_M11467_IG106
+ ble G_M11467_IG104
movs r2, 0 ldr r3, [r1+0x04] cmp r2, r3
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] ldr r3, [r2] @@ -1401,15 +1401,8 @@ G_M11467_IG47: ; bbWeight=0.50, gcVars=0000000000000000000000000000000000 ldr r3, [sp+0x324] // [V214 tmp201+0x04] and r2, r2, 0 and r3, r3, -0x40000000
- orrs r0, r2, r3
...

-6 (-0.20%) : 18371.dasm - System.IO.Strategies.BufferedFileStreamStrategy+d__37:MoveNext():this (FullOpts)

@@ -70,12 +70,12 @@ ; V59 tmp40 [V59,T41] ( 3, 6 ) int -> r7 "Inlining Arg" ; V60 tmp41 [V60,T42] ( 3, 6 ) int -> r6 "Inlining Arg" ; V61 tmp42 [V61,T05] ( 5, 10 ) ref -> r1 class-hnd single-def "Inlining Arg" <ubyte[]>
-; V62 tmp43 [V62,T15] ( 5, 8 ) int -> r3 "Inlining Arg"
+; V62 tmp43 [V62,T18] ( 4, 8 ) int -> r0 "Inlining Arg"
;* V63 tmp44 [V63 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V64 tmp45 [V64 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V65 tmp46 [V65,T28] ( 6, 6 ) byref -> [sp+0x18] "Inline stloc first use temp" ; V66 tmp47 [V66,T13] ( 8, 8 ) int -> [sp+0x38] "Inline stloc first use temp"
-; V67 tmp48 [V67,T16] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
+; V67 tmp48 [V67,T15] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
; V68 tmp49 [V68,T11] ( 9, 9 ) ref -> [sp+0x14] class-hnd spill-single-def "Inline stloc first use temp" <System.Object> ;* V69 tmp50 [V69 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V70 tmp51 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -91,7 +91,7 @@ ;* V80 tmp61 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V81 tmp62 [V81 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V82 tmp63 [V82 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V83 tmp64 [V83,T17] ( 4, 8 ) byref -> r1 single-def "Inlining Arg"
+; V83 tmp64 [V83,T16] ( 4, 8 ) byref -> r1 single-def "Inlining Arg"
;* V84 tmp65 [V84 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]> ; V85 tmp66 [V85,T06] ( 5, 10 ) ref -> r7 class-hnd single-def "Inlining Arg" <System.Object> ; V86 tmp67 [V86,T76] ( 3, 3 ) int -> r0 @@ -174,7 +174,7 @@ ;* V163 tmp144 [V163 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V164 tmp145 [V164,T31] ( 6, 6 ) byref -> [sp+0x10] "Inline stloc first use temp" ; V165 tmp146 [V165,T14] ( 8, 8 ) int -> [sp+0x2C] "Inline stloc first use temp"
-; V166 tmp147 [V166,T18] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
+; V166 tmp147 [V166,T17] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
; V167 tmp148 [V167,T12] ( 9, 9 ) ref -> [sp+0x0C] class-hnd spill-single-def "Inline stloc first use temp" <System.Object> ;* V168 tmp149 [V168 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V169 tmp150 [V169 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -265,7 +265,7 @@ ; V254 tmp235 [V254,T61] ( 2, 4 ) ref -> r1 single-def "argument with side effect" ; V255 PSPSym [V255,T119] ( 1, 1 ) int -> [sp+0x80] do-not-enreg[V] "PSPSym" ; V256 cse0 [V256,T86] ( 3, 3 ) int -> r6 "CSE - conservative"
-; V257 cse1 [V257,T87] ( 3, 3 ) int -> r3 "CSE - conservative"
+; V257 cse1 [V257,T87] ( 3, 3 ) int -> r0 "CSE - conservative"
; V258 cse2 [V258,T88] ( 3, 3 ) int -> r0 "CSE - conservative" ; V259 cse3 [V259,T89] ( 3, 3 ) int -> r1 "CSE - conservative" ; V260 rat0 [V260,T20] ( 4, 8 ) int -> r6 "ReplaceWithLclVar is creating a new local variable" @@ -401,7 +401,7 @@ G_M33324_IG06: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00 blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b G_M33324_IG116
+ b G_M33324_IG115
;; size=62 bbWeight=1 PerfScore 22.00 G_M33324_IG07: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, gcvars, byref, nogc ; gcrRegs +[r5] @@ -450,8 +450,8 @@ G_M33324_IG11: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by movs r1, 0 str r1, [r4+0x0C] ldr r1, [r5+0x20]
- ldr r3, [r5+0x1C] - subs r6, r1, r3
+ ldr r0, [r5+0x1C] + subs r6, r1, r0
cmp r6, 0 ble G_M33324_IG27 ldr r7, [r4+0x20] @@ -468,18 +468,18 @@ G_M33324_IG13: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ldr r1, [r5+0x10] ; gcrRegs +[r1] cmp r1, 0
- beq G_M33324_IG99 - ldr r0, [r1+0x04] - cmp r0, r3
+ beq G_M33324_IG98 + ldr r3, [r1+0x04] + cmp r3, r0
blo G_M33324_IG98
- ldr r0, [r1+0x04] - subs r0, r0, r3 - cmp r0, r6
+ ldr r3, [r1+0x04] + subs r3, r3, r0 + cmp r3, r6
blo G_M33324_IG98 adds r1, 8 ; gcrRegs -[r1] ; byrRegs +[r1]
- adds r7, r1, r3
+ adds r7, r1, r0
; byrRegs +[r7] mov r8, r6 add r9, r4, 24 @@ -621,7 +621,7 @@ G_M33324_IG22: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0090 {r4 r7}, ; gcr arg pop 0 ldr r9, [sp+0x38] // [V66 tmp47] cmp r8, r9
- bhi G_M33324_IG100
+ bhi G_M33324_IG99
ldr r0, [sp+0x18] // [V65 tmp46] ; byrRegs +[r0] mov r1, r7 @@ -643,7 +643,7 @@ G_M33324_IG23: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by cmp r6, r1 bne SHORT G_M33324_IG24 str r6, [sp+0x78] // [V03 loc2]
- b G_M33324_IG104
+ b G_M33324_IG103
;; size=12 bbWeight=1 PerfScore 5.00 G_M33324_IG24: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz cmp r6, 0 @@ -652,7 +652,7 @@ G_M33324_IG24: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ; byrRegs +[r1] ldr r0, [r1+0x08] cmp r6, r0
- bhi G_M33324_IG101
+ bhi G_M33324_IG100
ldr r7, [r1] ; gcrRegs +[r7] ldr r1, [r1+0x04] @@ -1022,7 +1022,7 @@ G_M33324_IG42: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ldr r0, [r4+0x0C] adds r0, r6, r0 str r0, [sp+0x78] // [V03 loc2]
- b SHORT G_M33324_IG110
+ b SHORT G_M33324_IG109
;; size=10 bbWeight=1 PerfScore 5.00 G_M33324_IG43: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs +[r7] @@ -1102,7 +1102,7 @@ G_M33324_IG47: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M33324_IG106
+ b SHORT G_M33324_IG105
;; size=68 bbWeight=1 PerfScore 24.00 G_M33324_IG48: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, nogc ; byrRegs +[r4] @@ -1212,7 +1212,7 @@ G_M33324_IG55: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M33324_IG108
+ b SHORT G_M33324_IG107
;; size=76 bbWeight=1 PerfScore 26.00 G_M33324_IG56: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, nogc ; byrRegs +[r4] @@ -1483,7 +1483,7 @@ G_M33324_IG72: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M33324_IG112
+ b SHORT G_M33324_IG111
;; size=76 bbWeight=1 PerfScore 26.00 G_M33324_IG73: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, nogc ; byrRegs +[r4] @@ -1794,7 +1794,7 @@ G_M33324_IG97: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, ; gcr arg pop 0 ldr r9, [sp+0x2C] // [V165 tmp146] cmp r8, r9
- bhi SHORT G_M33324_IG100
+ bhi SHORT G_M33324_IG99
ldr r0, [sp+0x10] // [V164 tmp145] ; byrRegs +[r0] mov r1, r6 @@ -1807,7 +1807,7 @@ G_M33324_IG97: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, blx r3 // <unknown method> ; byrRegs -[r0-r1 r6] ; gcr arg pop 0
- b SHORT G_M33324_IG102
+ b SHORT G_M33324_IG101
;; size=40 bbWeight=1 PerfScore 15.00 G_M33324_IG98: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref movw r3, 0xd1ff @@ -1817,12 +1817,7 @@ G_M33324_IG98: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ; gcr arg pop 0 bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-G_M33324_IG99: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz - cmp r3, 0 - bne SHORT G_M33324_IG98 - b SHORT G_M33324_IG98 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M33324_IG100: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M33324_IG99: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -1830,7 +1825,7 @@ G_M33324_IG100: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b ; gcr arg pop 0 bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-G_M33324_IG101: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M33324_IG100: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
movs r0, 33 movw r3, 0xd1ff movt r3, 0xd1ff @@ -1839,7 +1834,7 @@ G_M33324_IG101: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b ; gcr arg pop 0 bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-G_M33324_IG102: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M33324_IG101: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
ldr r0, [r5+0x1C] adds r0, r0, r7 str r0, [r5+0x1C] @@ -1847,10 +1842,10 @@ G_M33324_IG102: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b adds r0, r0, r7 str r0, [sp+0x78] // [V03 loc2] ;; size=12 bbWeight=1 PerfScore 6.00
-G_M33324_IG103: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
+G_M33324_IG102: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
ldr r0, [sp+0x7C] // [V01 loc0] cmp r0, 0
- bge SHORT G_M33324_IG114
+ bge SHORT G_M33324_IG113
ldr r0, [r5+0x04] ; gcrRegs +[r0] ldrsb r1, [r0] @@ -1862,44 +1857,44 @@ G_M33324_IG103: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b blx r3 // <unknown method> ; gcrRegs -[r0 r5] ; gcr arg pop 0
- b SHORT G_M33324_IG114
+ b SHORT G_M33324_IG113
;; size=28 bbWeight=1 PerfScore 11.00
-G_M33324_IG104: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, gcvars, byref
+G_M33324_IG103: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, gcvars, byref
; gcrRegs +[r5] ; GC ptr vars +{V01 V02}
- bl G_M33324_IG117
+ bl G_M33324_IG116
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG105: ; bbWeight=1, nogc, isz, extend - b SHORT G_M33324_IG114
+G_M33324_IG104: ; bbWeight=1, nogc, isz, extend + b SHORT G_M33324_IG113
;; size=2 bbWeight=1 PerfScore 1.00
-G_M33324_IG106: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M33324_IG105: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
; byrRegs -[r4]
- bl G_M33324_IG117
+ bl G_M33324_IG116
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG107: ; bbWeight=1, nogc, isz, extend - b SHORT G_M33324_IG116
+G_M33324_IG106: ; bbWeight=1, nogc, isz, extend + b SHORT G_M33324_IG115
;; size=2 bbWeight=1 PerfScore 1.00
-G_M33324_IG108: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref - bl G_M33324_IG117
+G_M33324_IG107: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref + bl G_M33324_IG116
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG109: ; bbWeight=1, nogc, isz, extend
...

benchmarks.run_pgo.linux.arm.checked.mch

-16 (-17.02%) : 8449.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)

@@ -9,27 +9,26 @@ ; 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 -> r2 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]> -; V01 arg1 [V01,T01] ( 4, 3 ) byref -> [sp+0x00] single-def
+; V00 this [V00,T00] ( 7, 6.14) ref -> r2 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]> +; V01 arg1 [V01,T01] ( 4, 3 ) byref -> [sp+0x04] single-def
; V02 loc0 [V02,T02] ( 5, 4.14) int -> r4 ; V03 loc1 [V03,T04] ( 4, 3.43) ref -> r5 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) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V07 cse0 [V07,T06] ( 2, 2 ) int -> r0 "CSE - aggressive"
-; V08 rat0 [V08,T05] ( 2, 2.86) int -> r0 "Spilling to split statement for tree"
+;* V08 rat0 [V08,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V10 rat2 [V10,T03] ( 2, 2.86) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V10 rat2 [V10,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 G_M49890_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push {r2,r3,r4,r5,r11,lr} add r11, sp, 16
- str r0, [r11-0x0C]
mov r2, r0 ; gcrRegs +[r2]
- ;; size=14 bbWeight=1 PerfScore 4.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz ; byrRegs +[r1] ldr r0, [r2+0x08] @@ -38,10 +37,10 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, by ; gcrRegs +[r5] ldr r0, [r5+0x04] cmp r0, r4
- bls SHORT G_M49890_IG05
+ bls SHORT G_M49890_IG04
;; size=12 bbWeight=1 PerfScore 6.00 G_M49890_IG03: ; bbWeight=0.71, gcrefRegs=0024 {r2 r5}, byrefRegs=0002 {r1}, byref, isz
- str r1, [sp]
+ str r1, [sp+0x04]
; GC ptr vars +{V01} ldr r0, [r2+0x0C] adds r0, r0, 1 @@ -53,34 +52,26 @@ G_M49890_IG03: ; bbWeight=0.71, gcrefRegs=0024 {r2 r5}, byrefRegs=0002 {r ldr r1, [r0+r3] ; gcrRegs +[r1] ; byrRegs -[r1]
- ldr r0, [sp] // [V01 arg1]
+ ldr r0, [sp+0x04] // [V01 arg1]
movw r12, 0xd1ff movt r12, 0xd1ff ; GC ptr vars -{V01} blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- ldr r0, [r2] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x0C] - cmp r0, 0 - bne SHORT G_M49890_IG07 - ;; size=42 bbWeight=0.71 PerfScore 12.86 -G_M49890_IG04: ; bbWeight=0.14, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, byref, isz - b SHORT G_M49890_IG07 - ;; size=2 bbWeight=0.14 PerfScore 0.14 -G_M49890_IG05: ; bbWeight=0.29, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref
+ b SHORT G_M49890_IG06 + ;; size=32 bbWeight=0.71 PerfScore 9.29 +G_M49890_IG04: ; bbWeight=0.29, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref
; gcrRegs -[r5] ; byrRegs +[r1] movs r0, 0 str r0, [r1] ;; size=4 bbWeight=0.29 PerfScore 0.57
-G_M49890_IG06: ; bbWeight=0.29, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M49890_IG05: ; bbWeight=0.29, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r1] pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=0.29 PerfScore 0.29
-G_M49890_IG07: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, gcvars, byref
+G_M49890_IG06: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r5] add r0, r5, 8 ; byrRegs +[r0] @@ -90,11 +81,11 @@ G_M49890_IG07: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5 movs r0, 1 ; byrRegs -[r0] ;; size=12 bbWeight=0.71 PerfScore 3.57
-G_M49890_IG08: ; bbWeight=0.71, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.71, epilog, nogc, extend
pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=0.71 PerfScore 0.71
-; Total bytes of code 94, prolog size 12, PerfScore 28.14, instruction count 38, allocated bytes for code 94 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+; Total bytes of code 78, prolog size 8, PerfScore 23.43, instruction count 31, allocated bytes for code 78 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -106,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
+ Function Length : 39 (0x00027) Actual length = 78 (0x00004e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-17.02%) : 56799.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)

@@ -9,27 +9,26 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 6.67) ref -> r2 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]> -; V01 arg1 [V01,T01] ( 4, 3 ) byref -> [sp+0x00] single-def
+; V00 this [V00,T00] ( 7, 6.00) ref -> r2 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]> +; V01 arg1 [V01,T01] ( 4, 3 ) byref -> [sp+0x04] single-def
; V02 loc0 [V02,T02] ( 5, 4.00) int -> r4 ; V03 loc1 [V03,T04] ( 4, 3.33) ref -> r5 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) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V07 cse0 [V07,T06] ( 2, 2 ) int -> r0 "CSE - aggressive"
-; V08 rat0 [V08,T05] ( 2, 2.67) int -> r0 "Spilling to split statement for tree"
+;* V08 rat0 [V08,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V10 rat2 [V10,T03] ( 2, 2.67) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V10 rat2 [V10,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 G_M49890_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push {r2,r3,r4,r5,r11,lr} add r11, sp, 16
- str r0, [r11-0x0C]
mov r2, r0 ; gcrRegs +[r2]
- ;; size=14 bbWeight=1 PerfScore 4.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz ; byrRegs +[r1] ldr r0, [r2+0x08] @@ -38,10 +37,10 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, by ; gcrRegs +[r5] ldr r0, [r5+0x04] cmp r0, r4
- bls SHORT G_M49890_IG05
+ bls SHORT G_M49890_IG04
;; size=12 bbWeight=1 PerfScore 6.00 G_M49890_IG03: ; bbWeight=0.67, gcrefRegs=0024 {r2 r5}, byrefRegs=0002 {r1}, byref, isz
- str r1, [sp]
+ str r1, [sp+0x04]
; GC ptr vars +{V01} ldr r0, [r2+0x0C] adds r0, r0, 1 @@ -53,34 +52,26 @@ G_M49890_IG03: ; bbWeight=0.67, gcrefRegs=0024 {r2 r5}, byrefRegs=0002 {r ldr r1, [r0+r3] ; gcrRegs +[r1] ; byrRegs -[r1]
- ldr r0, [sp] // [V01 arg1]
+ ldr r0, [sp+0x04] // [V01 arg1]
movw r12, 0xd1ff movt r12, 0xd1ff ; GC ptr vars -{V01} blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- ldr r0, [r2] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x0C] - cmp r0, 0 - bne SHORT G_M49890_IG07 - ;; size=42 bbWeight=0.67 PerfScore 12.00 -G_M49890_IG04: ; bbWeight=0.13, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, byref, isz - b SHORT G_M49890_IG07 - ;; size=2 bbWeight=0.13 PerfScore 0.13 -G_M49890_IG05: ; bbWeight=0.33, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref
+ b SHORT G_M49890_IG06 + ;; size=32 bbWeight=0.67 PerfScore 8.67 +G_M49890_IG04: ; bbWeight=0.33, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref
; gcrRegs -[r5] ; byrRegs +[r1] movs r0, 0 str r0, [r1] ;; size=4 bbWeight=0.33 PerfScore 0.67
-G_M49890_IG06: ; bbWeight=0.33, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M49890_IG05: ; bbWeight=0.33, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r1] pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=0.33 PerfScore 0.33
-G_M49890_IG07: ; bbWeight=0.67, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, gcvars, byref
+G_M49890_IG06: ; bbWeight=0.67, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r5] add r0, r5, 8 ; byrRegs +[r0] @@ -90,11 +81,11 @@ G_M49890_IG07: ; bbWeight=0.67, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5 movs r0, 1 ; byrRegs -[r0] ;; size=12 bbWeight=0.67 PerfScore 3.33
-G_M49890_IG08: ; bbWeight=0.67, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.67, epilog, nogc, extend
pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=0.67 PerfScore 0.67
-; Total bytes of code 94, prolog size 12, PerfScore 27.13, instruction count 38, allocated bytes for code 94 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+; Total bytes of code 78, prolog size 8, PerfScore 22.67, instruction count 31, allocated bytes for code 78 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -106,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
+ Function Length : 39 (0x00027) Actual length = 78 (0x00004e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-17.02%) : 151435.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)

@@ -9,27 +9,26 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 7.53) ref -> r2 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]> -; V01 arg1 [V01,T01] ( 4, 3 ) byref -> [sp+0x00] single-def
+; V00 this [V00,T00] ( 7, 6.65) ref -> r2 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]> +; V01 arg1 [V01,T01] ( 4, 3 ) byref -> [sp+0x04] single-def
; V02 loc0 [V02,T03] ( 5, 4.65) int -> r4 ; V03 loc1 [V03,T05] ( 4, 3.76) ref -> r5 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) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V07 cse0 [V07,T06] ( 2, 2 ) int -> r0 "CSE - aggressive"
-; V08 rat0 [V08,T04] ( 2, 3.53) int -> r0 "Spilling to split statement for tree"
+;* V08 rat0 [V08,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V10 rat2 [V10,T02] ( 2, 3.53) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V10 rat2 [V10,T02] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 G_M49890_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push {r2,r3,r4,r5,r11,lr} add r11, sp, 16
- str r0, [r11-0x0C]
mov r2, r0 ; gcrRegs +[r2]
- ;; size=14 bbWeight=1 PerfScore 4.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz ; byrRegs +[r1] ldr r0, [r2+0x08] @@ -38,10 +37,10 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, by ; gcrRegs +[r5] ldr r0, [r5+0x04] cmp r0, r4
- bls SHORT G_M49890_IG05
+ bls SHORT G_M49890_IG04
;; size=12 bbWeight=1 PerfScore 6.00 G_M49890_IG03: ; bbWeight=0.88, gcrefRegs=0024 {r2 r5}, byrefRegs=0002 {r1}, byref, isz
- str r1, [sp]
+ str r1, [sp+0x04]
; GC ptr vars +{V01} ldr r0, [r2+0x0C] adds r0, r0, 1 @@ -53,34 +52,26 @@ G_M49890_IG03: ; bbWeight=0.88, gcrefRegs=0024 {r2 r5}, byrefRegs=0002 {r ldr r1, [r0+r3] ; gcrRegs +[r1] ; byrRegs -[r1]
- ldr r0, [sp] // [V01 arg1]
+ ldr r0, [sp+0x04] // [V01 arg1]
movw r12, 0xd1ff movt r12, 0xd1ff ; GC ptr vars -{V01} blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- ldr r0, [r2] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x0C] - cmp r0, 0 - bne SHORT G_M49890_IG07 - ;; size=42 bbWeight=0.88 PerfScore 15.88 -G_M49890_IG04: ; bbWeight=0.18, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, byref, isz - b SHORT G_M49890_IG07 - ;; size=2 bbWeight=0.18 PerfScore 0.18 -G_M49890_IG05: ; bbWeight=0.12, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref
+ b SHORT G_M49890_IG06 + ;; size=32 bbWeight=0.88 PerfScore 11.47 +G_M49890_IG04: ; bbWeight=0.12, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref
; gcrRegs -[r5] ; byrRegs +[r1] movs r0, 0 str r0, [r1] ;; size=4 bbWeight=0.12 PerfScore 0.24
-G_M49890_IG06: ; bbWeight=0.12, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M49890_IG05: ; bbWeight=0.12, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r1] pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=0.12 PerfScore 0.12
-G_M49890_IG07: ; bbWeight=0.88, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, gcvars, byref
+G_M49890_IG06: ; bbWeight=0.88, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r5] add r0, r5, 8 ; byrRegs +[r0] @@ -90,11 +81,11 @@ G_M49890_IG07: ; bbWeight=0.88, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5 movs r0, 1 ; byrRegs -[r0] ;; size=12 bbWeight=0.88 PerfScore 4.41
-G_M49890_IG08: ; bbWeight=0.88, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.88, epilog, nogc, extend
pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=0.88 PerfScore 0.88
-; Total bytes of code 94, prolog size 12, PerfScore 31.71, instruction count 38, allocated bytes for code 94 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+; Total bytes of code 78, prolog size 8, PerfScore 26.12, instruction count 31, allocated bytes for code 78 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -106,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
+ Function Length : 39 (0x00027) Actual length = 78 (0x00004e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 141540.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)

@@ -13,22 +13,22 @@ ; V01 arg1 [V01,T00] ( 37, 25.94) ref -> [sp+0x4C] class-hnd EH-live single-def <System.Net.Sockets.SocketAsyncEventArgs> ; V02 arg2 [V02 ] ( 4, 3 ) struct ( 4) [sp+0xD4] single-def <System.Threading.CancellationToken> ; V03 loc0 [V03,T07] ( 11, 6.00) ref -> [sp+0x48] ld-addr-op class-hnd <System.Net.EndPoint>
-; V04 loc1 [V04,T62] ( 3, 0 ) ref -> [sp+0x44] class-hnd EH-live single-def <System.Net.EndPoint>
+; V04 loc1 [V04,T63] ( 3, 0 ) ref -> [sp+0x44] class-hnd EH-live single-def <System.Net.EndPoint>
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref ; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V08 tmp2 [V08,T63] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V08 tmp2 [V08,T64] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V09 tmp3 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Net.SocketAddress> ; V11 tmp5 [V11,T33] ( 4, 3.00) ref -> r5 class-hnd single-def "Inline stloc first use temp" <System.Net.IPEndPoint>
-; V12 tmp6 [V12,T64] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V13 tmp7 [V13,T40] ( 5, 2.00) ref -> r6 class-hnd "Inline stloc first use temp" <System.Net.IPAddress> -; V14 tmp8 [V14,T65] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Net.IPEndPoint> -; V15 tmp9 [V15,T41] ( 3, 2.00) ref -> r7 "guarded devirt return temp"
+; V12 tmp6 [V12,T65] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V13 tmp7 [V13,T41] ( 5, 2.00) ref -> r6 class-hnd "Inline stloc first use temp" <System.Net.IPAddress> +; V14 tmp8 [V14,T66] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Net.IPEndPoint> +; V15 tmp9 [V15,T42] ( 3, 2.00) ref -> r7 "guarded devirt return temp"
;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp" ;* V17 tmp11 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Net.IPEndPoint>
-;* V18 tmp12 [V18,T56] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V19 tmp13 [V19,T55] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp"
+;* V18 tmp12 [V18,T57] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V19 tmp13 [V19,T56] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp"
; V20 tmp14 [V20,T19] ( 2, 4.00) ref -> r6 class-hnd single-def "impAppendStmt" <System.Net.IPAddress> ; V21 tmp15 [V21,T02] ( 4, 8.00) ref -> [sp+0x40] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.SocketAddress> ; V22 tmp16 [V22,T20] ( 2, 4.00) int -> r8 "Inlining Arg" @@ -39,16 +39,16 @@ ; V27 tmp21 [V27 ] ( 2, 2.00) byref -> [sp+0xA4] must-init pinned "Inline stloc first use temp" ;* V28 tmp22 [V28 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V29 tmp23 [V29 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V30 tmp24 [V30,T43] ( 2, 2.00) int -> r0 "Inline stloc first use temp"
+; V30 tmp24 [V30,T44] ( 2, 2.00) int -> r0 "Inline stloc first use temp"
;* V31 tmp25 [V31 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp" ; V32 tmp26 [V32,T28] ( 4, 4.00) byref -> r0 "Inline stloc first use temp"
-; V33 tmp27 [V33,T45] ( 3, 2 ) int -> r1 "Inline stloc first use temp"
+; V33 tmp27 [V33,T46] ( 3, 2 ) int -> r1 "Inline stloc first use temp"
; V34 tmp28 [V34,T09] ( 3, 6 ) byref -> r0 single-def "Inlining Arg" ;* V35 tmp29 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ; V36 tmp30 [V36,T08] ( 6, 6 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <System.Net.Sockets.SafeSocketHandle>
-; V37 tmp31 [V37,T69] ( 2, 0 ) ref -> r5 class-hnd exact single-def "impAppendStmt" <System.Net.Sockets.SocketAsyncContext> -; V38 tmp32 [V38,T70] ( 2, 0 ) ref -> r6 class-hnd single-def "impAppendStmt" <<unknown class>> -; V39 tmp33 [V39,T83] ( 2, 0 ) int -> r7 "impAppendStmt"
+; V37 tmp31 [V37,T70] ( 2, 0 ) ref -> r5 class-hnd exact single-def "impAppendStmt" <System.Net.Sockets.SocketAsyncContext> +; V38 tmp32 [V38,T71] ( 2, 0 ) ref -> r6 class-hnd single-def "impAppendStmt" <<unknown class>> +; V39 tmp33 [V39,T84] ( 2, 0 ) int -> r7 "impAppendStmt"
; V40 tmp34 [V40 ] ( 6, 2.99) int -> [sp+0xA0] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V41 tmp35 [V41 ] ( 4, 0 ) struct (12) [sp+0x94] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "impAppendStmt" <System.Memory`1[ubyte]> ; V42 tmp36 [V42,T16] ( 9, 4.99) int -> r8 "Inline stloc first use temp" @@ -59,19 +59,19 @@ ; V47 tmp41 [V47,T27] ( 2, 4 ) int -> [sp+0x90] spill-single-def "impAppendStmt" ; V48 tmp42 [V48,T23] ( 3, 4 ) int -> [sp+0x8C] spill-single-def "impAppendStmt" ;* V49 tmp43 [V49 ] ( 0, 0 ) struct (12) zero-ref "impAppendStmt" <System.Memory`1[ubyte]>
-; V50 tmp44 [V50,T66] ( 3, 0 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.SocketAsyncContext> -; V51 tmp45 [V51,T67] ( 3, 0 ) byref -> r6 single-def "impAppendStmt"
+; V50 tmp44 [V50,T67] ( 3, 0 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.SocketAsyncContext> +; V51 tmp45 [V51,T68] ( 3, 0 ) byref -> r6 single-def "impAppendStmt"
;* V52 tmp46 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.SocketAddress> ;* V53 tmp47 [V53 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]> ; V54 tmp48 [V54,T10] ( 3, 6 ) ref -> lr class-hnd single-def "Inlining Arg" <ubyte[]> ;* V55 tmp49 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Action`4[int,System.Memory`1[ubyte],int,int]> ; V56 tmp50 [V56,T24] ( 2, 4 ) ref -> r0 class-hnd single-def "dup spill" <System.Action`4[int,System.Memory`1[ubyte],int,int]>
-; V57 tmp51 [V57,T44] ( 4, 2 ) ref -> [sp+0x3C] -; V58 tmp52 [V58,T61] ( 4, 0 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.Action`4[int,System.Memory`1[ubyte],int,int]>
+; V57 tmp51 [V57,T45] ( 4, 2 ) ref -> [sp+0x3C] +; V58 tmp52 [V58,T62] ( 4, 0 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.Action`4[int,System.Memory`1[ubyte],int,int]>
;* V59 tmp53 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Action`4[int,System.Memory`1[ubyte],int,int]>
-; V60 tmp54 [V60,T46] ( 3, 2 ) int -> r8 "Inline return value spill temp"
+; V60 tmp54 [V60,T47] ( 3, 2 ) int -> r8 "Inline return value spill temp"
; V61 tmp55 [V61,T35] ( 4, 3 ) int -> [sp+0x88] ld-addr-op "Inline ldloca(s) first use temp"
-; V62 tmp56 [V62,T60] ( 16, 0 ) ref -> r5 class-hnd exact single-def "Inline stloc first use temp" <System.Net.Sockets.SocketAsyncContext+BufferMemorySendOperation>
+; V62 tmp56 [V62,T61] ( 16, 0 ) ref -> r5 class-hnd exact single-def "Inline stloc first use temp" <System.Net.Sockets.SocketAsyncContext+BufferMemorySendOperation>
;* V63 tmp57 [V63 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[ubyte]> ; V64 tmp58 [V64 ] ( 3, 4 ) int -> [sp+0x84] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ; V65 tmp59 [V65 ] ( 3, 4 ) int -> [sp+0x80] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" @@ -81,13 +81,13 @@ ;* V69 tmp63 [V69 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Span`1[ubyte]> ;* V70 tmp64 [V70 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> ;* V71 tmp65 [V71 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-; V72 tmp66 [V72,T68] ( 3, 0 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.SocketException> -; V73 tmp67 [V73,T84] ( 2, 0 ) int -> r9 "Inlining Arg"
+; V72 tmp66 [V72,T69] ( 3, 0 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.SocketException> +; V73 tmp67 [V73,T85] ( 2, 0 ) int -> r9 "Inlining Arg"
;* V74 tmp68 [V74 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V75 tmp69 [V75,T11] ( 3, 6 ) byref -> r3 single-def "Inlining Arg"
-; V76 tmp70 [V76,T42] ( 3, 2.00) int -> r5 "Inline stloc first use temp" -; V77 tmp71 [V77,T47] ( 3, 2 ) int -> r5 -; V78 tmp72 [V78,T50] ( 2, 2 ) ubyte -> r5 "Inline stloc first use temp"
+; V76 tmp70 [V76,T43] ( 3, 2.00) int -> r5 "Inline stloc first use temp" +; V77 tmp71 [V77,T48] ( 3, 2 ) int -> r5 +; V78 tmp72 [V78,T51] ( 2, 2 ) ubyte -> r5 "Inline stloc first use temp"
; V79 tmp73 [V79,T17] ( 6, 4.99) byref -> r8 "Inline stloc first use temp" ; V80 tmp74 [V80,T05] ( 9, 7.96) int -> [sp+0x78] "Inline stloc first use temp" ;* V81 tmp75 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Object> @@ -139,29 +139,29 @@ ;* V127 tmp121 [V127 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.SocketAddress> ;* V128 tmp122 [V128 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V129 tmp123 [V129,T32] ( 3, 3.95) int -> r2 "Inlining Arg"
-;* V130 tmp124 [V130,T57] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V130 tmp124 [V130,T58] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V131 tmp125 [V131,T15] ( 4, 3 ) ref -> [sp+0xD4] do-not-enreg[] single-def "field V02._source (fldOffset=0x0)" P-DEP ;* V132 tmp126 [V132 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP ;* V133 tmp127 [V133 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP
-; V134 tmp128 [V134,T54] ( 3, 1.99) byref -> r6 "field V25._reference (fldOffset=0x0)" P-INDEP
+; V134 tmp128 [V134,T55] ( 3, 1.99) byref -> r6 "field V25._reference (fldOffset=0x0)" P-INDEP
; V135 tmp129 [V135,T34] ( 4, 3.00) int -> r1 "field V25._length (fldOffset=0x4)" P-INDEP ;* V136 tmp130 [V136 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP ;* V137 tmp131 [V137 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x4)" P-INDEP
-; V138 tmp132 [V138,T71] ( 2, 0 ) ref -> [sp+0x94] do-not-enreg[H] hidden-struct-arg "field V41._object (fldOffset=0x0)" P-DEP -; V139 tmp133 [V139,T85] ( 2, 0 ) int -> [sp+0x98] do-not-enreg[H] hidden-struct-arg "field V41._index (fldOffset=0x4)" P-DEP -; V140 tmp134 [V140,T86] ( 2, 0 ) int -> [sp+0x9C] do-not-enreg[H] hidden-struct-arg "field V41._length (fldOffset=0x8)" P-DEP
+; V138 tmp132 [V138,T72] ( 2, 0 ) ref -> [sp+0x94] do-not-enreg[H] hidden-struct-arg "field V41._object (fldOffset=0x0)" P-DEP +; V139 tmp133 [V139,T86] ( 2, 0 ) int -> [sp+0x98] do-not-enreg[H] hidden-struct-arg "field V41._index (fldOffset=0x4)" P-DEP +; V140 tmp134 [V140,T87] ( 2, 0 ) int -> [sp+0x9C] do-not-enreg[H] hidden-struct-arg "field V41._length (fldOffset=0x8)" P-DEP
;* V141 tmp135 [V141 ] ( 0, 0 ) ref -> zero-ref "field V43._object (fldOffset=0x0)" P-INDEP ;* V142 tmp136 [V142 ] ( 0, 0 ) int -> zero-ref "field V43._index (fldOffset=0x4)" P-INDEP ;* V143 tmp137 [V143 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP ; V144 tmp138 [V144,T13] ( 10, 5.98) ref -> r7 single-def "field V45._object (fldOffset=0x0)" P-INDEP
-; V145 tmp139 [V145,T53] ( 3, 2.00) int -> [sp+0x5C] spill-single-def "field V45._index (fldOffset=0x4)" P-INDEP -; V146 tmp140 [V146,T38] ( 4, 2.97) int -> r6 "field V45._length (fldOffset=0x8)" P-INDEP
+; V145 tmp139 [V145,T54] ( 3, 2.00) int -> [sp+0x5C] spill-single-def "field V45._index (fldOffset=0x4)" P-INDEP +; V146 tmp140 [V146,T39] ( 4, 2.97) int -> r6 "field V45._length (fldOffset=0x8)" P-INDEP
;* V147 tmp141 [V147 ] ( 0, 0 ) ref -> zero-ref single-def "field V49._object (fldOffset=0x0)" P-INDEP ;* V148 tmp142 [V148 ] ( 0, 0 ) int -> zero-ref "field V49._index (fldOffset=0x4)" P-INDEP ;* V149 tmp143 [V149 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP ; V150 tmp144 [V150,T06] ( 12, 6.98) ref -> [sp+0x34] "field V53._object (fldOffset=0x0)" P-INDEP
-;* V151 tmp145 [V151,T58] ( 0, 0 ) int -> zero-ref "field V53._index (fldOffset=0x4)" P-INDEP -; V152 tmp146 [V152,T37] ( 5, 2.99) int -> [sp+0x58] "field V53._length (fldOffset=0x8)" P-INDEP
+;* V151 tmp145 [V151,T59] ( 0, 0 ) int -> zero-ref "field V53._index (fldOffset=0x4)" P-INDEP +; V152 tmp146 [V152,T38] ( 5, 2.99) int -> [sp+0x58] "field V53._length (fldOffset=0x8)" P-INDEP
;* V153 tmp147 [V153 ] ( 0, 0 ) ref -> zero-ref single-def "field V63._object (fldOffset=0x0)" P-INDEP ;* V154 tmp148 [V154 ] ( 0, 0 ) int -> zero-ref "field V63._index (fldOffset=0x4)" P-INDEP ;* V155 tmp149 [V155 ] ( 0, 0 ) int -> zero-ref "field V63._length (fldOffset=0x8)" P-INDEP @@ -178,7 +178,7 @@ ;* V166 tmp160 [V166 ] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0x4)" P-INDEP ; V167 tmp161 [V167 ] ( 2, 0 ) byref -> [sp+0x70] do-not-enreg[X] addr-exposed "field V84._reference (fldOffset=0x0)" P-DEP ; V168 tmp162 [V168 ] ( 2, 0 ) int -> [sp+0x74] do-not-enreg[X] addr-exposed "field V84._length (fldOffset=0x4)" P-DEP
-; V169 tmp163 [V169,T72] ( 2, 0 ) byref -> r8 single-def "field V91._reference (fldOffset=0x0)" P-INDEP
+; V169 tmp163 [V169,T73] ( 2, 0 ) byref -> r8 single-def "field V91._reference (fldOffset=0x0)" P-INDEP
;* V170 tmp164 [V170 ] ( 0, 0 ) int -> zero-ref "field V91._length (fldOffset=0x4)" P-INDEP ;* V171 tmp165 [V171 ] ( 0, 0 ) byref -> zero-ref "field V94._reference (fldOffset=0x0)" P-INDEP ;* V172 tmp166 [V172 ] ( 0, 0 ) int -> zero-ref "field V94._length (fldOffset=0x4)" P-INDEP @@ -186,36 +186,37 @@ ;* V174 tmp168 [V174 ] ( 0, 0 ) int -> zero-ref "field V98._length (fldOffset=0x4)" P-INDEP ; V175 tmp169 [V175 ] ( 2, 0 ) byref -> [sp+0x64] do-not-enreg[X] addr-exposed "field V100._reference (fldOffset=0x0)" P-DEP ; V176 tmp170 [V176 ] ( 2, 0 ) int -> [sp+0x68] do-not-enreg[X] addr-exposed "field V100._length (fldOffset=0x4)" P-DEP
-; V177 tmp171 [V177,T73] ( 2, 0 ) byref -> r12 single-def "field V107._reference (fldOffset=0x0)" P-INDEP
+; V177 tmp171 [V177,T74] ( 2, 0 ) byref -> r12 single-def "field V107._reference (fldOffset=0x0)" P-INDEP
;* V178 tmp172 [V178 ] ( 0, 0 ) int -> zero-ref "field V107._length (fldOffset=0x4)" P-INDEP ;* V179 tmp173 [V179 ] ( 0, 0 ) byref -> zero-ref single-def "field V110._reference (fldOffset=0x0)" P-INDEP ;* V180 tmp174 [V180 ] ( 0, 0 ) int -> zero-ref "field V110._length (fldOffset=0x4)" P-INDEP
-; V181 tmp175 [V181,T48] ( 2, 2 ) byref -> [sp+0x30] spill-single-def "field V111._reference (fldOffset=0x0)" P-INDEP -; V182 tmp176 [V182,T51] ( 2, 2 ) int -> [sp+0x54] spill-single-def "field V111._length (fldOffset=0x4)" P-INDEP
+; V181 tmp175 [V181,T49] ( 2, 2 ) byref -> [sp+0x30] spill-single-def "field V111._reference (fldOffset=0x0)" P-INDEP +; V182 tmp176 [V182,T52] ( 2, 2 ) int -> [sp+0x54] spill-single-def "field V111._length (fldOffset=0x4)" P-INDEP
;* V183 tmp177 [V183 ] ( 0, 0 ) byref -> zero-ref "field V117._reference (fldOffset=0x0)" P-INDEP ;* V184 tmp178 [V184 ] ( 0, 0 ) int -> zero-ref "field V117._length (fldOffset=0x4)" P-INDEP ;* V185 tmp179 [V185 ] ( 0, 0 ) byref -> zero-ref single-def "field V118._reference (fldOffset=0x0)" P-INDEP ;* V186 tmp180 [V186 ] ( 0, 0 ) int -> zero-ref "field V118._length (fldOffset=0x4)" P-INDEP
-; V187 tmp181 [V187,T49] ( 2, 2 ) byref -> r8 single-def "field V119._reference (fldOffset=0x0)" P-INDEP -; V188 tmp182 [V188,T52] ( 2, 2 ) int -> r2 "field V119._length (fldOffset=0x4)" P-INDEP
+; V187 tmp181 [V187,T50] ( 2, 2 ) byref -> r8 single-def "field V119._reference (fldOffset=0x0)" P-INDEP +; V188 tmp182 [V188,T53] ( 2, 2 ) int -> r2 "field V119._length (fldOffset=0x4)" P-INDEP
;* V189 tmp183 [V189 ] ( 0, 0 ) ref -> zero-ref "field V125._object (fldOffset=0x0)" P-INDEP ;* V190 tmp184 [V190 ] ( 0, 0 ) int -> zero-ref "field V125._index (fldOffset=0x4)" P-INDEP ;* V191 tmp185 [V191 ] ( 0, 0 ) int -> zero-ref "field V125._length (fldOffset=0x8)" P-INDEP
-; V192 tmp186 [V192,T74] ( 2, 0 ) ref -> r8 single-def "argument with side effect" -; V193 tmp187 [V193,T75] ( 2, 0 ) ref -> r1 single-def "argument with side effect" -; V194 tmp188 [V194,T76] ( 2, 0 ) ref -> r5 single-def "argument with side effect" -; V195 tmp189 [V195,T77] ( 2, 0 ) ref -> r2 single-def "argument with side effect"
+; V192 tmp186 [V192,T75] ( 2, 0 ) ref -> r8 single-def "argument with side effect" +; V193 tmp187 [V193,T76] ( 2, 0 ) ref -> r1 single-def "argument with side effect" +; V194 tmp188 [V194,T77] ( 2, 0 ) ref -> r5 single-def "argument with side effect" +; V195 tmp189 [V195,T78] ( 2, 0 ) ref -> r2 single-def "argument with side effect"
; V196 tmp190 [V196,T21] ( 2, 4.00) int -> r0 "Cast away GC" ; V197 tmp191 [V197,T22] ( 2, 4.00) int -> r0 "argument with side effect"
-; V198 tmp192 [V198,T78] ( 2, 0 ) ref -> r0 single-def "argument with side effect" -; V199 tmp193 [V199,T87] ( 2, 0 ) int -> r1 "argument with side effect" -; V200 tmp194 [V200,T79] ( 2, 0 ) ref -> r9 single-def "argument with side effect" -; V201 tmp195 [V201,T80] ( 2, 0 ) ref -> r1 single-def "argument with side effect" -; V202 tmp196 [V202,T81] ( 2, 0 ) ref -> r7 single-def "argument with side effect" -; V203 tmp197 [V203,T82] ( 2, 0 ) ref -> r2 single-def "argument with side effect" -; V204 PSPSym [V204,T59] ( 1, 1 ) int -> [sp+0xAC] do-not-enreg[V] "PSPSym" -; V205 cse0 [V205,T36] ( 3, 3 ) ref -> r0 "CSE - conservative" -; V206 cse1 [V206,T39] ( 3, 2.96) ref -> r0 "CSE - conservative"
+; V198 tmp192 [V198,T36] ( 2, 2 ) ref -> r0 single-def "Field obj" +; V199 tmp193 [V199,T79] ( 2, 0 ) ref -> r0 single-def "argument with side effect" +; V200 tmp194 [V200,T88] ( 2, 0 ) int -> r1 "argument with side effect" +; V201 tmp195 [V201,T80] ( 2, 0 ) ref -> r9 single-def "argument with side effect" +; V202 tmp196 [V202,T81] ( 2, 0 ) ref -> r1 single-def "argument with side effect" +; V203 tmp197 [V203,T82] ( 2, 0 ) ref -> r7 single-def "argument with side effect" +; V204 tmp198 [V204,T83] ( 2, 0 ) ref -> r2 single-def "argument with side effect" +; V205 PSPSym [V205,T60] ( 1, 1 ) int -> [sp+0xAC] do-not-enreg[V] "PSPSym" +; V206 cse0 [V206,T37] ( 3, 3 ) ref -> r0 "CSE - conservative" +; V207 cse1 [V207,T40] ( 3, 2.96) ref -> r0 "CSE - conservative"
; TEMP_03 ref -> [r11-0xA0] ; TEMP_02 int -> [r11-0xA4] ; TEMP_01 int -> [r11-0xA8] @@ -236,7 +237,7 @@ G_M38239_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, bhi SHORT pc-6 (-3 instructions) str r2, [r4] add r2, sp, 216
- str r2, [sp+0xAC] // [V204 PSPSym]
+ str r2, [sp+0xAC] // [V205 PSPSym]
str r0, [sp+0x50] // [V00 this] ; GC ptr vars +{V00} str r1, [sp+0x4C] // [V01 arg1] @@ -417,7 +418,7 @@ G_M38239_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movt r0, 0xd1ff ldr r0, [r0] ; gcrRegs +[r0]
- ldrsb r0, [r0+0x5D]
+ ldrsb r0, [r0]
; gcrRegs -[r0] ;; size=80 bbWeight=1 PerfScore 27.00 G_M38239_IG11: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz @@ -428,7 +429,7 @@ G_M38239_IG11: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b cmp r0, 0 beq G_M38239_IG80 ;; size=10 bbWeight=1 PerfScore 4.00
-G_M38239_IG12: ; bbWeight=1, gcVars=000000004000000000000003 {V00 V01 V04}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG12: ; bbWeight=1, gcVars=000000008000000000000003 {V00 V01 V04}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0] ; GC ptr vars -{V03} ldr r7, [r1+0x04] @@ -474,7 +475,7 @@ G_M38239_IG14: ; bbWeight=1, gcrefRegs=0092 {r1 r4 r7}, byrefRegs=0000 {} ldr r12, [lr+0x04] str r12, [sp+0x58] // [V152 tmp146] ;; size=54 bbWeight=1 PerfScore 17.00
-G_M38239_IG15: ; bbWeight=1, gcVars=000000004000000000000043 {V00 V01 V04 V150}, gcrefRegs=0292 {r1 r4 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38239_IG15: ; bbWeight=1, gcVars=000000008000000000000043 {V00 V01 V04 V150}, gcrefRegs=0292 {r1 r4 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0 lr] ldr r0, [r4+0x3C] ; gcrRegs +[r0] @@ -483,7 +484,7 @@ G_M38239_IG15: ; bbWeight=1, gcVars=000000004000000000000043 {V00 V01 V04 cmp r0, 0 beq G_M38239_IG48 ;; size=10 bbWeight=1 PerfScore 4.00
-G_M38239_IG16: ; bbWeight=1, gcVars=000000004000100000000043 {V00 V01 V04 V57 V150}, gcrefRegs=0292 {r1 r4 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38239_IG16: ; bbWeight=1, gcVars=000000008000200000000043 {V00 V01 V04 V57 V150}, gcrefRegs=0292 {r1 r4 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] str r5, [sp+0x84] // [V64 tmp58] str r3, [sp+0x80] // [V65 tmp59] @@ -593,7 +594,7 @@ G_M38239_IG30: ; bbWeight=1, gcrefRegs=02B2 {r1 r4 r5 r7 r9}, byrefRegs=0 cmp lr, 0 beq SHORT G_M38239_IG34 ...

+0 (0.00%) : 148280.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)

@@ -13,19 +13,19 @@ ; V01 arg1 [V01,T00] ( 38, 25 ) ref -> [sp+0x44] class-hnd EH-live single-def <System.Net.Sockets.SocketAsyncEventArgs> ; V02 arg2 [V02 ] ( 4, 3 ) struct ( 4) [sp+0xC4] single-def <System.Threading.CancellationToken> ; V03 loc0 [V03 ] ( 4, 1 ) ref -> [sp+0x94] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Net.EndPoint>
-; V04 loc1 [V04,T46] ( 3, 0 ) ref -> [sp+0x40] class-hnd EH-live single-def <System.Net.EndPoint>
+; V04 loc1 [V04,T47] ( 3, 0 ) ref -> [sp+0x40] class-hnd EH-live single-def <System.Net.EndPoint>
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref ; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V08 tmp2 [V08,T47] ( 3, 0 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V08 tmp2 [V08,T48] ( 3, 0 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V09 tmp3 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp4 [V10,T32] ( 3, 2 ) int -> r1 "Inline stloc first use temp"
+; V10 tmp4 [V10,T33] ( 3, 2 ) int -> r1 "Inline stloc first use temp"
; V11 tmp5 [V11,T08] ( 5, 6 ) byref -> r0 single-def "Inlining Arg" ;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ; V13 tmp7 [V13,T07] ( 6, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <System.Net.Sockets.SafeSocketHandle>
-; V14 tmp8 [V14,T51] ( 2, 0 ) ref -> r4 class-hnd exact single-def "impAppendStmt" <System.Net.Sockets.SocketAsyncContext> -; V15 tmp9 [V15,T52] ( 2, 0 ) ref -> r5 class-hnd single-def "impAppendStmt" <<unknown class>> -; V16 tmp10 [V16,T61] ( 2, 0 ) int -> r6 "impAppendStmt"
+; V14 tmp8 [V14,T52] ( 2, 0 ) ref -> r4 class-hnd exact single-def "impAppendStmt" <System.Net.Sockets.SocketAsyncContext> +; V15 tmp9 [V15,T53] ( 2, 0 ) ref -> r5 class-hnd single-def "impAppendStmt" <<unknown class>> +; V16 tmp10 [V16,T62] ( 2, 0 ) int -> r6 "impAppendStmt"
; V17 tmp11 [V17 ] ( 6, 3 ) int -> [sp+0x90] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V18 tmp12 [V18 ] ( 4, 0 ) struct (12) [sp+0x84] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "impAppendStmt" <System.Memory`1[ubyte]> ; V19 tmp13 [V19,T14] ( 9, 5.00) int -> r7 "Inline stloc first use temp" @@ -36,19 +36,19 @@ ; V24 tmp18 [V24,T24] ( 2, 4 ) int -> r4 "impAppendStmt" ; V25 tmp19 [V25,T19] ( 3, 4 ) int -> [sp+0x80] spill-single-def "impAppendStmt" ;* V26 tmp20 [V26 ] ( 0, 0 ) struct (12) zero-ref "impAppendStmt" <System.Memory`1[ubyte]>
-; V27 tmp21 [V27,T48] ( 3, 0 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.SocketAsyncContext> -; V28 tmp22 [V28,T49] ( 3, 0 ) byref -> r7 single-def "impAppendStmt"
+; V27 tmp21 [V27,T49] ( 3, 0 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.SocketAsyncContext> +; V28 tmp22 [V28,T50] ( 3, 0 ) byref -> r7 single-def "impAppendStmt"
;* V29 tmp23 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.SocketAddress> ;* V30 tmp24 [V30 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]> ; V31 tmp25 [V31,T09] ( 3, 6.00) ref -> lr class-hnd single-def "Inlining Arg" <ubyte[]> ;* V32 tmp26 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Action`4[int,System.Memory`1[ubyte],int,int]> ; V33 tmp27 [V33,T21] ( 2, 4.00) ref -> r0 class-hnd single-def "dup spill" <System.Action`4[int,System.Memory`1[ubyte],int,int]>
-; V34 tmp28 [V34,T31] ( 4, 2.00) ref -> [sp+0x3C] -; V35 tmp29 [V35,T45] ( 4, 0 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Action`4[int,System.Memory`1[ubyte],int,int]>
+; V34 tmp28 [V34,T32] ( 4, 2.00) ref -> [sp+0x3C] +; V35 tmp29 [V35,T46] ( 4, 0 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Action`4[int,System.Memory`1[ubyte],int,int]>
;* V36 tmp30 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Action`4[int,System.Memory`1[ubyte],int,int]>
-; V37 tmp31 [V37,T33] ( 3, 2 ) int -> r7 "Inline return value spill temp"
+; V37 tmp31 [V37,T34] ( 3, 2 ) int -> r7 "Inline return value spill temp"
; V38 tmp32 [V38,T27] ( 4, 3 ) int -> r4 ld-addr-op "Inline ldloca(s) first use temp"
-; V39 tmp33 [V39,T44] ( 16, 0 ) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <System.Net.Sockets.SocketAsyncContext+BufferMemorySendOperation>
+; V39 tmp33 [V39,T45] ( 16, 0 ) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <System.Net.Sockets.SocketAsyncContext+BufferMemorySendOperation>
;* V40 tmp34 [V40 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[ubyte]> ; V41 tmp35 [V41 ] ( 3, 4.00) int -> [sp+0x7C] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ; V42 tmp36 [V42 ] ( 3, 4.00) int -> [sp+0x78] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" @@ -58,13 +58,13 @@ ;* V46 tmp40 [V46 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Span`1[ubyte]> ;* V47 tmp41 [V47 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> ;* V48 tmp42 [V48 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-; V49 tmp43 [V49,T50] ( 3, 0 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.SocketException> -; V50 tmp44 [V50,T62] ( 2, 0 ) int -> r5 "Inlining Arg"
+; V49 tmp43 [V49,T51] ( 3, 0 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.SocketException> +; V50 tmp44 [V50,T63] ( 2, 0 ) int -> r5 "Inlining Arg"
;* V51 tmp45 [V51 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V52 tmp46 [V52,T10] ( 3, 6.00) byref -> r4 single-def "Inlining Arg"
-; V53 tmp47 [V53,T34] ( 3, 2.00) int -> r9 "Inline stloc first use temp" -; V54 tmp48 [V54,T35] ( 3, 2 ) int -> r9 -; V55 tmp49 [V55,T38] ( 2, 2 ) ubyte -> r9 "Inline stloc first use temp"
+; V53 tmp47 [V53,T35] ( 3, 2.00) int -> r9 "Inline stloc first use temp" +; V54 tmp48 [V54,T36] ( 3, 2 ) int -> r9 +; V55 tmp49 [V55,T39] ( 2, 2 ) ubyte -> r9 "Inline stloc first use temp"
; V56 tmp50 [V56,T12] ( 6, 5.01) byref -> registers "Inline stloc first use temp" ; V57 tmp51 [V57,T01] ( 9, 8.01) int -> [sp+0x70] "Inline stloc first use temp" ;* V58 tmp52 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Object> @@ -116,22 +116,22 @@ ;* V104 tmp98 [V104 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.SocketAddress> ;* V105 tmp99 [V105 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V106 tmp100 [V106,T20] ( 3, 4.00) int -> r3 "Inlining Arg"
-;* V107 tmp101 [V107,T41] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V107 tmp101 [V107,T42] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V108 tmp102 [V108,T15] ( 4, 3 ) ref -> [sp+0xC4] do-not-enreg[] single-def "field V02._source (fldOffset=0x0)" P-DEP
-; V109 tmp103 [V109,T53] ( 2, 0 ) ref -> [sp+0x84] do-not-enreg[H] hidden-struct-arg "field V18._object (fldOffset=0x0)" P-DEP -; V110 tmp104 [V110,T63] ( 2, 0 ) int -> [sp+0x88] do-not-enreg[H] hidden-struct-arg "field V18._index (fldOffset=0x4)" P-DEP -; V111 tmp105 [V111,T64] ( 2, 0 ) int -> [sp+0x8C] do-not-enreg[H] hidden-struct-arg "field V18._length (fldOffset=0x8)" P-DEP
+; V109 tmp103 [V109,T54] ( 2, 0 ) ref -> [sp+0x84] do-not-enreg[H] hidden-struct-arg "field V18._object (fldOffset=0x0)" P-DEP +; V110 tmp104 [V110,T64] ( 2, 0 ) int -> [sp+0x88] do-not-enreg[H] hidden-struct-arg "field V18._index (fldOffset=0x4)" P-DEP +; V111 tmp105 [V111,T65] ( 2, 0 ) int -> [sp+0x8C] do-not-enreg[H] hidden-struct-arg "field V18._length (fldOffset=0x8)" P-DEP
;* V112 tmp106 [V112 ] ( 0, 0 ) ref -> zero-ref "field V20._object (fldOffset=0x0)" P-INDEP ;* V113 tmp107 [V113 ] ( 0, 0 ) int -> zero-ref "field V20._index (fldOffset=0x4)" P-INDEP ;* V114 tmp108 [V114 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP ; V115 tmp109 [V115,T05] ( 10, 6.01) ref -> r6 single-def "field V22._object (fldOffset=0x0)" P-INDEP
-; V116 tmp110 [V116,T30] ( 3, 2.00) int -> [sp+0x54] spill-single-def "field V22._index (fldOffset=0x4)" P-INDEP
+; V116 tmp110 [V116,T31] ( 3, 2.00) int -> [sp+0x54] spill-single-def "field V22._index (fldOffset=0x4)" P-INDEP
; V117 tmp111 [V117,T26] ( 4, 3.00) int -> r8 "field V22._length (fldOffset=0x8)" P-INDEP ;* V118 tmp112 [V118 ] ( 0, 0 ) ref -> zero-ref single-def "field V26._object (fldOffset=0x0)" P-INDEP ;* V119 tmp113 [V119 ] ( 0, 0 ) int -> zero-ref "field V26._index (fldOffset=0x4)" P-INDEP ;* V120 tmp114 [V120 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP ; V121 tmp115 [V121,T04] ( 12, 7.01) ref -> [sp+0x34] "field V30._object (fldOffset=0x0)" P-INDEP
-;* V122 tmp116 [V122,T42] ( 0, 0 ) int -> zero-ref "field V30._index (fldOffset=0x4)" P-INDEP
+;* V122 tmp116 [V122,T43] ( 0, 0 ) int -> zero-ref "field V30._index (fldOffset=0x4)" P-INDEP
; V123 tmp117 [V123,T25] ( 5, 3.01) int -> [sp+0x50] "field V30._length (fldOffset=0x8)" P-INDEP ;* V124 tmp118 [V124 ] ( 0, 0 ) ref -> zero-ref single-def "field V40._object (fldOffset=0x0)" P-INDEP ;* V125 tmp119 [V125 ] ( 0, 0 ) int -> zero-ref "field V40._index (fldOffset=0x4)" P-INDEP @@ -149,7 +149,7 @@ ;* V137 tmp131 [V137 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x4)" P-INDEP ; V138 tmp132 [V138 ] ( 2, 0 ) byref -> [sp+0x68] do-not-enreg[X] addr-exposed "field V61._reference (fldOffset=0x0)" P-DEP ; V139 tmp133 [V139 ] ( 2, 0 ) int -> [sp+0x6C] do-not-enreg[X] addr-exposed "field V61._length (fldOffset=0x4)" P-DEP
-; V140 tmp134 [V140,T54] ( 2, 0 ) byref -> r7 single-def "field V68._reference (fldOffset=0x0)" P-INDEP
+; V140 tmp134 [V140,T55] ( 2, 0 ) byref -> r7 single-def "field V68._reference (fldOffset=0x0)" P-INDEP
;* V141 tmp135 [V141 ] ( 0, 0 ) int -> zero-ref "field V68._length (fldOffset=0x4)" P-INDEP ;* V142 tmp136 [V142 ] ( 0, 0 ) byref -> zero-ref "field V71._reference (fldOffset=0x0)" P-INDEP ;* V143 tmp137 [V143 ] ( 0, 0 ) int -> zero-ref "field V71._length (fldOffset=0x4)" P-INDEP @@ -157,30 +157,31 @@ ;* V145 tmp139 [V145 ] ( 0, 0 ) int -> zero-ref "field V75._length (fldOffset=0x4)" P-INDEP ; V146 tmp140 [V146 ] ( 2, 0 ) byref -> [sp+0x5C] do-not-enreg[X] addr-exposed "field V77._reference (fldOffset=0x0)" P-DEP ; V147 tmp141 [V147 ] ( 2, 0 ) int -> [sp+0x60] do-not-enreg[X] addr-exposed "field V77._length (fldOffset=0x4)" P-DEP
-; V148 tmp142 [V148,T55] ( 2, 0 ) byref -> r2 single-def "field V84._reference (fldOffset=0x0)" P-INDEP
+; V148 tmp142 [V148,T56] ( 2, 0 ) byref -> r2 single-def "field V84._reference (fldOffset=0x0)" P-INDEP
;* V149 tmp143 [V149 ] ( 0, 0 ) int -> zero-ref "field V84._length (fldOffset=0x4)" P-INDEP ;* V150 tmp144 [V150 ] ( 0, 0 ) byref -> zero-ref single-def "field V87._reference (fldOffset=0x0)" P-INDEP ;* V151 tmp145 [V151 ] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x4)" P-INDEP
-; V152 tmp146 [V152,T36] ( 2, 2 ) byref -> [sp+0x30] spill-single-def "field V88._reference (fldOffset=0x0)" P-INDEP -; V153 tmp147 [V153,T39] ( 2, 2 ) int -> [sp+0x4C] spill-single-def "field V88._length (fldOffset=0x4)" P-INDEP
+; V152 tmp146 [V152,T37] ( 2, 2 ) byref -> [sp+0x30] spill-single-def "field V88._reference (fldOffset=0x0)" P-INDEP +; V153 tmp147 [V153,T40] ( 2, 2 ) int -> [sp+0x4C] spill-single-def "field V88._length (fldOffset=0x4)" P-INDEP
;* V154 tmp148 [V154 ] ( 0, 0 ) byref -> zero-ref "field V94._reference (fldOffset=0x0)" P-INDEP ;* V155 tmp149 [V155 ] ( 0, 0 ) int -> zero-ref "field V94._length (fldOffset=0x4)" P-INDEP ;* V156 tmp150 [V156 ] ( 0, 0 ) byref -> zero-ref single-def "field V95._reference (fldOffset=0x0)" P-INDEP ;* V157 tmp151 [V157 ] ( 0, 0 ) int -> zero-ref "field V95._length (fldOffset=0x4)" P-INDEP
-; V158 tmp152 [V158,T37] ( 2, 2 ) byref -> r7 single-def "field V96._reference (fldOffset=0x0)" P-INDEP -; V159 tmp153 [V159,T40] ( 2, 2 ) int -> r2 "field V96._length (fldOffset=0x4)" P-INDEP
+; V158 tmp152 [V158,T38] ( 2, 2 ) byref -> r7 single-def "field V96._reference (fldOffset=0x0)" P-INDEP +; V159 tmp153 [V159,T41] ( 2, 2 ) int -> r2 "field V96._length (fldOffset=0x4)" P-INDEP
;* V160 tmp154 [V160 ] ( 0, 0 ) ref -> zero-ref "field V102._object (fldOffset=0x0)" P-INDEP ;* V161 tmp155 [V161 ] ( 0, 0 ) int -> zero-ref "field V102._index (fldOffset=0x4)" P-INDEP ;* V162 tmp156 [V162 ] ( 0, 0 ) int -> zero-ref "field V102._length (fldOffset=0x8)" P-INDEP
-; V163 tmp157 [V163,T56] ( 2, 0 ) ref -> r0 single-def "argument with side effect" -; V164 tmp158 [V164,T65] ( 2, 0 ) int -> r1 "argument with side effect" -; V165 tmp159 [V165,T57] ( 2, 0 ) ref -> r6 single-def "argument with side effect" -; V166 tmp160 [V166,T58] ( 2, 0 ) ref -> r1 single-def "argument with side effect" -; V167 tmp161 [V167,T59] ( 2, 0 ) ref -> r4 single-def "argument with side effect" -; V168 tmp162 [V168,T60] ( 2, 0 ) ref -> r2 single-def "argument with side effect" -; V169 PSPSym [V169,T43] ( 1, 1 ) int -> [sp+0x9C] do-not-enreg[V] "PSPSym" -; V170 cse0 [V170,T28] ( 3, 3 ) ref -> r0 "CSE - moderate" -; V171 cse1 [V171,T29] ( 3, 3.00) ref -> r0 "CSE - moderate"
+; V163 tmp157 [V163,T28] ( 2, 2 ) ref -> r0 single-def "Field obj" +; V164 tmp158 [V164,T57] ( 2, 0 ) ref -> r0 single-def "argument with side effect" +; V165 tmp159 [V165,T66] ( 2, 0 ) int -> r1 "argument with side effect" +; V166 tmp160 [V166,T58] ( 2, 0 ) ref -> r6 single-def "argument with side effect" +; V167 tmp161 [V167,T59] ( 2, 0 ) ref -> r1 single-def "argument with side effect" +; V168 tmp162 [V168,T60] ( 2, 0 ) ref -> r4 single-def "argument with side effect" +; V169 tmp163 [V169,T61] ( 2, 0 ) ref -> r2 single-def "argument with side effect" +; V170 PSPSym [V170,T44] ( 1, 1 ) int -> [sp+0x9C] do-not-enreg[V] "PSPSym" +; V171 cse0 [V171,T29] ( 3, 3 ) ref -> r0 "CSE - conservative" +; V172 cse1 [V172,T30] ( 3, 3.00) ref -> r0 "CSE - conservative"
; TEMP_03 ref -> [r11-0x90] ; TEMP_02 int -> [r11-0x94] ; TEMP_01 int -> [r11-0x98] @@ -201,7 +202,7 @@ G_M38239_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, bhi SHORT pc-6 (-3 instructions) str r2, [r4] add r2, sp, 200
- str r2, [sp+0x9C] // [V169 PSPSym]
+ str r2, [sp+0x9C] // [V170 PSPSym]
str r0, [sp+0x48] // [V00 this] ; GC ptr vars +{V00} str r1, [sp+0x44] // [V01 arg1] @@ -259,7 +260,7 @@ G_M38239_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre movt r0, 0xd1ff ldr r0, [r0] ; gcrRegs +[r0]
- ldrsb r0, [r0+0x5D]
+ ldrsb r0, [r0]
; gcrRegs -[r0] ;; size=68 bbWeight=1 PerfScore 23.00 G_M38239_IG04: ; bbWeight=1, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz @@ -270,7 +271,7 @@ G_M38239_IG04: ; bbWeight=1, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, b cmp r0, 0 beq G_M38239_IG73 ;; size=10 bbWeight=1 PerfScore 4.00
-G_M38239_IG05: ; bbWeight=1, gcVars=000000000000400000000005 {V00 V01 V04}, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG05: ; bbWeight=1, gcVars=000000000000800000000005 {V00 V01 V04}, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0] ldr r4, [r1+0x04] ; gcrRegs +[r4] @@ -323,7 +324,7 @@ G_M38239_IG09: ; bbWeight=1.00, gcrefRegs=4066 {r1 r2 r5 r6 lr}, byrefReg ldr r12, [lr+0x04] str r12, [sp+0x50] // [V123 tmp117] ;; size=12 bbWeight=1.00 PerfScore 3.00
-G_M38239_IG10: ; bbWeight=1.00, gcVars=000000000000400000000015 {V00 V01 V04 V121}, gcrefRegs=0066 {r1 r2 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38239_IG10: ; bbWeight=1.00, gcVars=000000000000800000000015 {V00 V01 V04 V121}, gcrefRegs=0066 {r1 r2 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[lr] ldr r0, [r2+0x3C] ; gcrRegs +[r0] @@ -332,7 +333,7 @@ G_M38239_IG10: ; bbWeight=1.00, gcVars=000000000000400000000015 {V00 V01 cmp r0, 0 beq SHORT G_M38239_IG19 ;; size=8 bbWeight=1.00 PerfScore 4.00
-G_M38239_IG11: ; bbWeight=1.00, gcVars=000000000000400080000015 {V00 V01 V04 V34 V121}, gcrefRegs=0062 {r1 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38239_IG11: ; bbWeight=1.00, gcVars=000000000000800100000015 {V00 V01 V04 V34 V121}, gcrefRegs=0062 {r1 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0 r2] str r9, [sp+0x7C] // [V41 tmp35] str r4, [sp+0x78] // [V42 tmp36] @@ -371,7 +372,7 @@ G_M38239_IG15: ; bbWeight=0, gcrefRegs=0062 {r1 r5 r6}, byrefRegs=0000 {} mov r9, 0 b SHORT G_M38239_IG17 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M38239_IG16: ; bbWeight=0, gcVars=000000000000400080000005 {V00 V01 V04 V34}, gcrefRegs=4062 {r1 r5 r6 lr}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG16: ; bbWeight=0, gcVars=000000000000800100000005 {V00 V01 V04 V34}, gcrefRegs=4062 {r1 r5 r6 lr}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V04 V121} mov r9, 1 ;; size=4 bbWeight=0 PerfScore 0.00 @@ -380,7 +381,7 @@ G_M38239_IG17: ; bbWeight=0, gcrefRegs=4062 {r1 r5 r6 lr}, byrefRegs=0000 ; GC ptr vars +{V121} b SHORT G_M38239_IG14 ;; size=6 bbWeight=0 PerfScore 0.00
-G_M38239_IG18: ; bbWeight=0, gcVars=000000000000400080000015 {V00 V01 V04 V34 V121}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38239_IG18: ; bbWeight=0, gcVars=000000000000800100000015 {V00 V01 V04 V34 V121}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r1 lr] ; GC ptr vars +{V04} ldr r0, [r5+0x18] @@ -435,7 +436,7 @@ G_M38239_IG18: ; bbWeight=0, gcVars=000000000000400080000015 {V00 V01 V04 ; gcrRegs -[r0 r6] ; gcr arg pop 0 ;; size=96 bbWeight=0 PerfScore 0.00
-G_M38239_IG19: ; bbWeight=0, gcVars=000000000000400000000015 {V00 V01 V04 V121}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38239_IG19: ; bbWeight=0, gcVars=000000000000800000000015 {V00 V01 V04 V121}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r5-r6] ; GC ptr vars +{V04 V121} movw r0, 0xd1ff @@ -478,19 +479,19 @@ G_M38239_IG19: ; bbWeight=0, gcVars=000000000000400000000015 {V00 V01 V04 ; gcrRegs +[r1] b SHORT G_M38239_IG11 ;; size=76 bbWeight=0 PerfScore 0.00
-G_M38239_IG20: ; bbWeight=0, gcVars=000000000000400000000005 {V00 V01 V04}, gcrefRegs=0066 {r1 r2 r5 r6}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG20: ; bbWeight=0, gcVars=000000000000800000000005 {V00 V01 V04}, gcrefRegs=0066 {r1 r2 r5 r6}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r7] +[r2] ; GC ptr vars -{V04 V34 V121} movs r0, 0 str r0, [sp+0x34] // [V121 tmp115] ; GC ptr vars +{V121} ;; size=4 bbWeight=0 PerfScore 0.00
-G_M38239_IG21: ; bbWeight=0, gcVars=000000000000400000000015 {V00 V01 V04 V121}, gcrefRegs=0066 {r1 r2 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38239_IG21: ; bbWeight=0, gcVars=000000000000800000000015 {V00 V01 V04 V121}, gcrefRegs=0066 {r1 r2 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V04} str r0, [sp+0x50] // [V123 tmp117] b SHORT G_M38239_IG10 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M38239_IG22: ; bbWeight=0, gcVars=000000000000400000000005 {V00 V01 V04}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38239_IG22: ; bbWeight=0, gcVars=000000000000800000000005 {V00 V01 V04}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r1-r2 r5-r6] +[r4] ; GC ptr vars -{V04 V121} movw r0, 0xd1ff ...

+4 (+0.47%) : 10621.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (Tier0-FullOpts)

@@ -45,10 +45,10 @@ ;* V34 tmp23 [V34 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V35 tmp24 [V35,T18] ( 5, 4 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Emit.VarArgMethod> ;* V36 tmp25 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.VarArgMethod>
-; V37 tmp26 [V37,T23] ( 3, 3 ) ref -> r5 class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.DynamicScope>
+; V37 tmp26 [V37,T23] ( 3, 3 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.DynamicScope>
; V38 tmp27 [V38,T11] ( 7, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V39 tmp28 [V39,T29] ( 3, 1.33) ref -> r1 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V40 tmp29 [V40,T27] ( 4, 1.66) int -> r3 "Inline stloc first use temp"
+; V39 tmp28 [V39,T29] ( 3, 1.33) ref -> r3 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V40 tmp29 [V40,T27] ( 4, 1.66) int -> r1 "Inline stloc first use temp"
;* V41 tmp30 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>> ; V42 tmp31 [V42 ] ( 4, 13 ) byref -> [sp+0x20] do-not-enreg[X] addr-exposed "field V08._reference (fldOffset=0x0)" P-DEP ; V43 tmp32 [V43 ] ( 8, 19 ) int -> [sp+0x24] do-not-enreg[X] addr-exposed "field V08._length (fldOffset=0x4)" P-DEP @@ -110,14 +110,14 @@ G_M8328_IG04: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, mov r7, r4 ; gcrRegs +[r7] cmp r7, 0
- bne G_M8328_IG18
+ bne G_M8328_IG17
;; size=8 bbWeight=1 PerfScore 3.00 G_M8328_IG05: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz mov r8, r4 ; gcrRegs +[r8] cmp r8, 0
- bne SHORT G_M8328_IG13 - ;; size=8 bbWeight=1 PerfScore 3.00
+ bne G_M8328_IG14 + ;; size=10 bbWeight=1 PerfScore 3.00
G_M8328_IG06: ; bbWeight=1, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz orrs r1, r7, r8 cmp r1, 0 @@ -132,17 +132,120 @@ G_M8328_IG06: ; bbWeight=1, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=00 ; gcrRegs -[r0] ldr r1, [sp+0x24] cmp r1, 0
- bne SHORT G_M8328_IG15 - ;; size=28 bbWeight=1 PerfScore 12.00 -G_M8328_IG07: ; bbWeight=0.50, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref - mov r9, 0 - mov r10, 0 - movs r3, 0 - str r3, [sp+0x10]
+ beq G_M8328_IG16 + ;; size=30 bbWeight=1 PerfScore 12.00 +G_M8328_IG07: ; bbWeight=0.50, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz + ldr r1, [sp+0x24] + movw r0, 0xd1ff + movt r0, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_NEWARR_1_OBJ + ; gcrRegs +[r0] + mov r9, r0 + ; gcrRegs +[r9] + ldr r1, [r9+0x04] + movw r0, 0xd1ff + ; gcrRegs -[r0] + movt r0, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_NEWARR_1_OBJ + ; gcrRegs +[r0] + mov r10, r0 + ; gcrRegs +[r10] + ldr r1, [r9+0x04] + movw r0, 0xd1ff + ; gcrRegs -[r0] + movt r0, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_NEWARR_1_OBJ + ; gcrRegs +[r0] + str r0, [sp+0x10] // [V05 loc2]
; GC ptr vars +{V05}
- ;; size=12 bbWeight=0.50 PerfScore 2.00 -G_M8328_IG08: ; bbWeight=1, gcVars=0000000000008000 {V05}, gcrefRegs=07F0 {r4 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r9-r10]
+ movs r2, 0 + ldr r0, [sp+0x24] // [V43 tmp32] + ; gcrRegs -[r0] + cmp r0, 0 + ble SHORT G_M8328_IG09 + ;; size=78 bbWeight=0.50 PerfScore 12.50 +G_M8328_IG08: ; bbWeight=4, gcVars=0000000000008000 {V05}, gcrefRegs=07F0 {r4 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz + ldr r0, [sp+0x24] // [V43 tmp32] + cmp r2, r0 + bhs G_M8328_IG26 + ldr r0, [sp+0x20] // [V42 tmp31] + ; byrRegs +[r0] + str r2, [sp+0x1C] // [V10 loc7] + lsls r1, r2, 2 + str r1, [sp+0x14] // [V65 cse0] + ldr r0, [r0+r1] + ; gcrRegs +[r0] + ; byrRegs -[r0] + ldr lr, [r0] + ldr lr, [lr+0x2C] + ldr lr, [lr+0x1C] + blx lr // <unknown method> + mov r2, r0 + ; gcrRegs +[r2] + ldr r1, [sp+0x1C] // [V10 loc7] + mov r0, r9 + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_ARRADDR_ST + ; gcrRegs -[r0 r2] + ldr r0, [sp+0x24] // [V43 tmp32] + ldr r3, [sp+0x1C] // [V10 loc7] + cmp r3, r0 + bhs G_M8328_IG26 + ldr r0, [sp+0x20] // [V42 tmp31] + ; byrRegs +[r0] + ldr r2, [sp+0x14] // [V65 cse0] + ldr r0, [r0+r2] + ; gcrRegs +[r0] + ; byrRegs -[r0] + ldr r1, [r0] + ldr r1, [r1+0x34] + ldr r1, [r1+0x0C] + blx r1 // <unknown method> + mov r2, r0 + ; gcrRegs +[r2] + ldr r1, [sp+0x1C] // [V10 loc7] + mov r0, r10 + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_ARRADDR_ST + ; gcrRegs -[r0 r2] + ldr r0, [sp+0x24] // [V43 tmp32] + ldr r3, [sp+0x1C] // [V10 loc7] + cmp r3, r0 + bhs G_M8328_IG26 + ldr r0, [sp+0x20] // [V42 tmp31] + ; byrRegs +[r0] + ldr r2, [sp+0x14] // [V65 cse0] + ldr r0, [r0+r2] + ; gcrRegs +[r0] + ; byrRegs -[r0] + ldr r2, [r0] + ldr r2, [r2+0x34] + ldr r2, [r2+0x08] + blx r2 // <unknown method> + mov r2, r0 + ; gcrRegs +[r2] + ldr r1, [sp+0x1C] // [V10 loc7] + ldr r0, [sp+0x10] // [V05 loc2] + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_ARRADDR_ST + ; gcrRegs -[r0 r2] + ldr r0, [sp+0x1C] // [V10 loc7] + adds r0, r0, 1 + ldr r3, [sp+0x24] // [V43 tmp32] + cmp r0, r3 + mov r2, r0 + blt SHORT G_M8328_IG08 + ;; size=140 bbWeight=4 PerfScore 232.00 +G_M8328_IG09: ; bbWeight=1, gcrefRegs=07F0 {r4 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
mov r0, r4 ; gcrRegs +[r0] ldr r2, [r4] @@ -178,9 +281,9 @@ G_M8328_IG08: ; bbWeight=1, gcVars=0000000000008000 {V05}, gcrefRegs=07F0 mov r4, r0 ; gcrRegs +[r4] cmp r7, 0
- beq G_M8328_IG21 - ;; size=66 bbWeight=1 PerfScore 26.00 -G_M8328_IG09: ; bbWeight=0.50, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M8328_IG19 + ;; size=64 bbWeight=1 PerfScore 26.00 +G_M8328_IG10: ; bbWeight=0.50, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r8] movw r0, 0xd1ff movt r0, 0xd1ff @@ -221,9 +324,9 @@ G_M8328_IG09: ; bbWeight=0.50, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 ldr r3, [r0+0x08] ldr lr, [r1+0x04] cmp lr, r3
- bls G_M8328_IG20 - ;; size=78 bbWeight=0.50 PerfScore 13.00 -G_M8328_IG10: ; bbWeight=0.33, gcrefRegs=0107 {r0 r1 r2 r8}, byrefRegs=0000 {}, byref
+ bls SHORT G_M8328_IG21 + ;; size=76 bbWeight=0.50 PerfScore 13.00 +G_M8328_IG11: ; bbWeight=0.33, gcrefRegs=0107 {r0 r1 r2 r8}, byrefRegs=0000 {}, byref
; gcrRegs -[r5] add lr, r3, 1 str lr, [r0+0x08] @@ -235,7 +338,7 @@ G_M8328_IG10: ; bbWeight=0.33, gcrefRegs=0107 {r0 r1 r2 r8}, byrefRegs=00 blx r3 // CORINFO_HELP_ARRADDR_ST ; gcrRegs -[r0 r2] ;; size=22 bbWeight=0.33 PerfScore 2.31
-G_M8328_IG11: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
+G_M8328_IG12: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
ldr r0, [r8+0x04] ; gcrRegs +[r0] ldr r0, [r0+0x08] @@ -243,140 +346,34 @@ G_M8328_IG11: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, by subs r0, r0, 1 orr r0, r0, 0xa000000 ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M8328_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M8328_IG13: ; bbWeight=0.50, epilog, nogc, extend
add sp, 44 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M8328_IG13: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8328_IG14: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4-r7] ldr r1, [r8] movw r0, 0xd1ff movt r0, 0xd1ff cmp r1, r0
- beq SHORT G_M8328_IG06 - ;; size=16 bbWeight=0.25 PerfScore 1.25 -G_M8328_IG14: ; bbWeight=0.12, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ beq G_M8328_IG06 + ;; size=18 bbWeight=0.25 PerfScore 1.25 +G_M8328_IG15: ; bbWeight=0.12, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8] mov r8, 0 b SHORT G_M8328_IG06 ;; size=6 bbWeight=0.12 PerfScore 0.25
-G_M8328_IG15: ; bbWeight=0.50, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M8328_IG16: ; bbWeight=0.50, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r8]
- ldr r1, [sp+0x24] // [V43 tmp32] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_NEWARR_1_OBJ - ; gcrRegs +[r0] - mov r9, r0 - ; gcrRegs +[r9] - ldr r1, [r9+0x04] - movw r0, 0xd1ff - ; gcrRegs -[r0] - movt r0, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_NEWARR_1_OBJ - ; gcrRegs +[r0] - mov r10, r0 - ; gcrRegs +[r10] - ldr r1, [r9+0x04] - movw r0, 0xd1ff - ; gcrRegs -[r0] - movt r0, 0xd1ff
...

benchmarks.run_tiered.linux.arm.checked.mch

-20 (-10.99%) : 63785.dasm - System.Collections.IterateForEach`1[System.Canon]:ImmutableStack():System.Canon:this (Tier0-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 -> r4 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
+; V00 this [V00,T02] ( 3, 3 ) ref -> r4 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
; V01 loc0 [V01,T05] ( 3, 4 ) ref -> r5 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 ( 8) [sp+0x04] 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 ( 8) [sp+0x00] 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 ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" @@ -20,52 +20,44 @@ ;* 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 -> r0 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableStack`1[System.__Canon]> ; V11 tmp6 [V11,T00] ( 2, 32 ) ref -> r0 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableStack`1[System.__Canon]>
-; V12 tmp7 [V12 ] ( 2, 3 ) ref -> [sp+0x04] do-not-enreg[X] addr-exposed "field V03._originalStack (fldOffset=0x0)" P-DEP -; V13 tmp8 [V13 ] ( 9, 29 ) ref -> [sp+0x08] do-not-enreg[X] addr-exposed "field V03._remainingStack (fldOffset=0x4)" P-DEP
+; V12 tmp7 [V12 ] ( 2, 3 ) ref -> [sp+0x00] do-not-enreg[X] addr-exposed "field V03._originalStack (fldOffset=0x0)" P-DEP +; V13 tmp8 [V13 ] ( 9, 29 ) ref -> [sp+0x04] do-not-enreg[X] addr-exposed "field V03._remainingStack (fldOffset=0x4)" P-DEP
;* V14 cse0 [V14,T08] ( 0, 0 ) int -> zero-ref hoist "CSE - aggressive"
-; V15 rat0 [V15,T04] ( 2, 4 ) int -> r0 "Spilling to split statement for tree"
+;* V15 rat0 [V15,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V16 rat1 [V16,T06] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V17 rat2 [V17,T03] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V17 rat2 [V17,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M64146_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - sub sp, 16 - add r11, sp, 24
+ push {r2,r3,r4,r5,r11,lr} + add r11, sp, 16
movs r1, 0
- str r1, [sp+0x04] // [V03 loc2] - str r1, [sp+0x08] // [V03 loc2+0x04] - str r0, [r11-0x0C]
+ str r1, [sp] // [V03 loc2] + str r1, [sp+0x04] // [V03 loc2+0x04]
mov r4, r0 ; gcrRegs +[r4]
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M64146_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz movs r5, 0 ldr r0, [r4+0x50] ; gcrRegs +[r0]
- add r1, sp, 4
+ add r1, sp, 0
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] ldr r2, [r0] blx r3 // System.Collections.Immutable.ImmutableStack`1[System.__Canon]:GetEnumerator():System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]:this ; gcrRegs -[r0] +[r5]
- ldr r0, [r4] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x10] - cmp r0, 0 - bne SHORT G_M64146_IG04
b SHORT G_M64146_IG04
- ;; size=34 bbWeight=1 PerfScore 15.00
+ ;; size=22 bbWeight=1 PerfScore 9.00
G_M64146_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r5]
- ldr r0, [sp+0x08]
+ ldr r0, [sp+0x04]
; gcrRegs +[r0] cmp r0, 0 beq SHORT G_M64146_IG10
- ldr r0, [sp+0x08]
+ ldr r0, [sp+0x04]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -76,36 +68,36 @@ G_M64146_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ;; size=24 bbWeight=2 PerfScore 20.00 G_M64146_IG04: ; bbWeight=8, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
- ldr r0, [sp+0x08]
+ ldr r0, [sp+0x04]
; gcrRegs +[r0] cmp r0, 0 bne SHORT G_M64146_IG06 ;; size=6 bbWeight=8 PerfScore 24.00 G_M64146_IG05: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
- ldr r0, [sp+0x04]
+ ldr r0, [sp]
; gcrRegs +[r0]
- str r0, [sp+0x08] // [V13 tmp8]
+ str r0, [sp+0x04] // [V13 tmp8]
b SHORT G_M64146_IG07 ;; size=6 bbWeight=2 PerfScore 6.00 G_M64146_IG06: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
- ldr r0, [sp+0x08] // [V13 tmp8]
+ ldr r0, [sp+0x04] // [V13 tmp8]
; gcrRegs +[r0] ldr r0, [r0+0x08] cmp r0, 0 beq SHORT G_M64146_IG07
- ldr r0, [sp+0x08] // [V13 tmp8]
+ ldr r0, [sp+0x04] // [V13 tmp8]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] ldr r2, [r0] blx r3 // System.Collections.Immutable.ImmutableStack`1[System.__Canon]:Pop():System.Collections.Immutable.ImmutableStack`1[System.__Canon]:this
- str r0, [sp+0x08] // [V13 tmp8]
+ str r0, [sp+0x04] // [V13 tmp8]
;; size=26 bbWeight=2 PerfScore 22.00 G_M64146_IG07: ; bbWeight=8, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
- ldr r0, [sp+0x08] // [V13 tmp8]
+ ldr r0, [sp+0x04] // [V13 tmp8]
; gcrRegs +[r0] ldr r0, [r0+0x08] cmp r0, 0 @@ -117,9 +109,8 @@ G_M64146_IG08: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ; gcrRegs +[r0] ;; size=2 bbWeight=1 PerfScore 1.00 G_M64146_IG09: ; bbWeight=1, epilog, nogc, extend
- add sp, 16 - pop {r4,r5,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00
+ pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
G_M64146_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r0 r5] movw r0, 0xd1ff @@ -145,7 +136,7 @@ G_M64146_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr bkpt ;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 182, prolog size 20, PerfScore 130.00, instruction count 73, allocated bytes for code 182 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
+; Total bytes of code 162, prolog size 14, PerfScore 121.00, instruction count 64, allocated bytes for code 162 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -157,7 +148,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 91 (0x0005b) Actual length = 182 (0x0000b6)
+ Function Length : 81 (0x00051) Actual length = 162 (0x0000a2)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -165,7 +156,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 04 add sp, sp, #16 ; opsize 16 - A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32 + FF end
FF end

-12 (-8.11%) : 45870.dasm - System.Collections.IterateForEach`1[System.Canon]:ImmutableArray():System.Canon:this (Tier0-FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 5, 5 ) ref -> r4 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
+; V00 this [V00,T01] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
; V01 loc0 [V01,T06] ( 3, 4 ) ref -> r5 ld-addr-op class-hnd <System.__Canon> ; V02 loc1 [V02 ] ( 2, 2 ) struct ( 4) [sp+0x08] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ; V03 loc2 [V03 ] ( 8, 33 ) struct ( 8) [sp+0x00] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[System.__Canon]> @@ -26,9 +26,9 @@ ; V15 rat0 [V15,T04] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" ; V16 rat1 [V16,T07] ( 3, 4 ) int -> r2 "runtime lookup" ; V17 rat2 [V17,T02] ( 3, 5.60) int -> r2 "fgMakeTemp is creating a new local variable"
-; V18 rat3 [V18,T05] ( 2, 4 ) int -> r0 "Spilling to split statement for tree"
+;* V18 rat3 [V18,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V19 rat4 [V19,T08] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V20 rat5 [V20,T03] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V20 rat5 [V20,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -78,14 +78,8 @@ G_M57349_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ldr r3, [r3] blx r3 // System.Collections.Immutable.ImmutableArray`1[System.__Canon]:GetEnumerator():System.Collections.Immutable.ImmutableArray`1+Enumerator[System.__Canon]:this ; gcr arg pop 0
- ldr r0, [r4] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x14] - cmp r0, 0 - bne SHORT G_M57349_IG07
b SHORT G_M57349_IG07
- ;; size=30 bbWeight=1 PerfScore 13.00
+ ;; size=18 bbWeight=1 PerfScore 7.00
G_M57349_IG06: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r5] ldr r0, [sp+0x04] // [V12 tmp7] @@ -134,7 +128,7 @@ G_M57349_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 24, PerfScore 112.00, instruction count 62, allocated bytes for code 148 (MethodHash=874a1ffa) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableArray():System.__Canon:this (Tier0-FullOpts)
+; Total bytes of code 136, prolog size 24, PerfScore 106.00, instruction count 56, allocated bytes for code 136 (MethodHash=874a1ffa) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableArray():System.__Canon:this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -146,7 +140,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 74 (0x0004a) Actual length = 148 (0x000094)
+ Function Length : 68 (0x00044) Actual length = 136 (0x000088)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-4.92%) : 66974.dasm - System.Collections.IterateForEach`1[System.Canon]:FrozenSet():System.Canon:this (Tier0-FullOpts)

@@ -24,10 +24,10 @@ ; V13 tmp8 [V13,T02] ( 3, 6 ) ref -> r3 single-def "argument with side effect" ; V14 PSPSym [V14,T10] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym" ;* V15 cse0 [V15,T11] ( 0, 0 ) int -> zero-ref hoist "CSE - aggressive"
-; V16 cse1 [V16,T09] ( 6, 3.20) int -> r3 multi-def "CSE - aggressive" -; V17 rat0 [V17,T05] ( 2, 4 ) int -> r1 "Spilling to split statement for tree"
+; V16 cse1 [V16,T09] ( 5, 2.20) int -> r3 multi-def "CSE - aggressive" +;* V17 rat0 [V17,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V18 rat1 [V18,T08] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V19 rat2 [V19,T03] ( 2, 4 ) int -> r1 "fgMakeTemp is creating a new local variable"
+;* V19 rat2 [V19,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; V20 rat3 [V20,T04] ( 3, 5.60) int -> r2 "fgMakeTemp is creating a new local variable" ; V21 rat4 [V21,T12] ( 3, 0 ) int -> r3 "Spilling to split statement for tree" ; V22 rat5 [V22,T13] ( 3, 0 ) int -> r2 "fgMakeTemp is creating a new local variable" @@ -66,14 +66,8 @@ G_M17622_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ldr r0, [sp] // [V00 this] ; gcrRegs +[r0] ldr r3, [r0]
- mov r1, r3 - ldr r1, [r1+0x24] - ldr r1, [r1] - ldr r1, [r1+0x10] - cmp r1, 0 - bne SHORT G_M17622_IG05
b SHORT G_M17622_IG05
- ;; size=18 bbWeight=1 PerfScore 9.00
+ ;; size=6 bbWeight=1 PerfScore 3.00
G_M17622_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0 r4] ldr r1, [sp+0x08] // [V12 tmp7] @@ -207,7 +201,7 @@ G_M17622_IG19: ; bbWeight=0, funclet epilog, nogc, extend pop {r3,r4,r11,pc} ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 26, PerfScore 149.20, instruction count 101, allocated bytes for code 244 (MethodHash=5937bb29) for method System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (Tier0-FullOpts)
+; Total bytes of code 232, prolog size 26, PerfScore 143.20, instruction count 95, allocated bytes for code 232 (MethodHash=5937bb29) for method System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -219,7 +213,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 92 (0x0005c) Actual length = 184 (0x0000b8)
+ Function Length : 86 (0x00056) Actual length = 172 (0x0000ac)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-24 (-0.24%) : 26113.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)

@@ -423,16 +423,16 @@ ; V412 cse17 [V412,T146] ( 4, 8 ) int -> r0 "CSE - conservative" ; V413 cse18 [V413,T282] ( 4, 2 ) int -> r0 "CSE - conservative" ; V414 cse19 [V414,T03] ( 88,115.50) int -> [sp+0x110] spill-single-def "CSE - aggressive"
-; V415 rat0 [V415,T339] ( 3, 1.50) int -> r2 "field V52.lo (fldOffset=0x0)" P-INDEP -; V416 rat1 [V416,T340] ( 3, 1.50) int -> r3 "field V52.hi (fldOffset=0x4)" P-INDEP
+; V415 rat0 [V415,T339] ( 2, 1 ) int -> r2 "field V52.lo (fldOffset=0x0)" P-INDEP +; V416 rat1 [V416,T340] ( 2, 1 ) int -> r3 "field V52.hi (fldOffset=0x4)" P-INDEP
; V417 rat2 [V417,T209] ( 8, 4 ) int -> [sp+0x10C] "field V73.lo (fldOffset=0x0)" P-INDEP ; V418 rat3 [V418,T218] ( 7, 3.50) int -> [sp+0x108] "field V73.hi (fldOffset=0x4)" P-INDEP ; V419 rat4 [V419,T201] ( 9, 4.50) int -> [sp+0x104] "field V75.lo (fldOffset=0x0)" P-INDEP ; V420 rat5 [V420,T202] ( 9, 4.50) int -> [sp+0x100] "field V75.hi (fldOffset=0x4)" P-INDEP ; V421 rat6 [V421,T341] ( 2, 1.50) int -> r0 "field V77.lo (fldOffset=0x0)" P-INDEP ; V422 rat7 [V422,T342] ( 2, 1.50) int -> r1 "field V77.hi (fldOffset=0x4)" P-INDEP
-; V423 rat8 [V423,T140] ( 3, 10 ) int -> r0 "field V92.lo (fldOffset=0x0)" P-INDEP -; V424 rat9 [V424,T141] ( 3, 10 ) int -> r3 "field V92.hi (fldOffset=0x4)" P-INDEP
+; V423 rat8 [V423,T140] ( 2, 8 ) int -> r0 "field V92.lo (fldOffset=0x0)" P-INDEP +; V424 rat9 [V424,T141] ( 2, 8 ) int -> r3 "field V92.hi (fldOffset=0x4)" P-INDEP
; V425 rat10 [V425,T142] ( 3, 10 ) int -> r0 "field V101.lo (fldOffset=0x0)" P-INDEP ; V426 rat11 [V426,T143] ( 3, 10 ) int -> r3 "field V101.hi (fldOffset=0x4)" P-INDEP ; V427 rat12 [V427,T62] ( 8, 16 ) int -> [sp+0xFC] "field V121.lo (fldOffset=0x0)" P-INDEP @@ -550,7 +550,7 @@ G_M11467_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b ldr r3, [r9+0x08] blx r3 // <unknown method> ; gcrRegs -[r0-r1 r5]
- b G_M11467_IG277
+ b G_M11467_IG275
;; size=30 bbWeight=0.50 PerfScore 4.50 G_M11467_IG04: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r5-r7] @@ -611,14 +611,14 @@ G_M11467_IG05: ; bbWeight=0.50, gcVars=0000000000000000000000000000000000 ; gcrRegs +[r3] ldr r0, [r3+0x04] cmp r0, 0
- blt G_M11467_IG279
+ blt G_M11467_IG277
str r0, [sp+0x32C] // [V05 loc2] cmp r0, 0 ble G_M11467_IG45 movs r0, 0 ldr r1, [r3+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
ldrb lr, [r3+0x08] str lr, [sp+0x2F8] // [V21 tmp8] cmp lr, 0x80000000 @@ -823,7 +823,7 @@ G_M11467_IG18: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ; gcrRegs +[r2] ldr r0, [r2+0x04] cmp r3, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -838,7 +838,7 @@ G_M11467_IG19: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r0, r3, 1 ldr r1, [r2+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -854,7 +854,7 @@ G_M11467_IG20: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r0, r3, 2 ldr r1, [r2+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -870,7 +870,7 @@ G_M11467_IG21: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ; gcrRegs +[r2] ldr r0, [r2+0x04] cmp r3, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -885,7 +885,7 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r0, r3, 1 ldr r1, [r2+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -901,7 +901,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r0, r3, 2 ldr r1, [r2+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -915,7 +915,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ldr r0, [r2+0x04] ldr r1, [sp+0x2F0] // [V23 tmp10] cmp r1, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -928,7 +928,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r3, r1, 1 ldr r12, [r2+0x04] cmp r3, r12
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -941,7 +941,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r1, r1, 2 ldr r3, [r2+0x04] cmp r1, r3
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -972,7 +972,7 @@ G_M11467_IG25: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcrRegs +[lr] ldr r1, [lr+0x04] cmp r3, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r1, lr, 8 ; byrRegs +[r1] str r3, [sp+0x328] // [V06 loc3] @@ -1179,7 +1179,7 @@ G_M11467_IG38: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcrRegs +[r1] ldr r2, [r1+0x04] cmp r3, r2
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1194,7 +1194,7 @@ G_M11467_IG39: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b adds r2, r3, 1 ldr r0, [r1+0x04] cmp r2, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1210,7 +1210,7 @@ G_M11467_IG40: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b adds r2, r3, 2 ldr r0, [r1+0x04] cmp r2, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1226,7 +1226,7 @@ G_M11467_IG41: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcrRegs +[r1] ldr r2, [r1+0x04] cmp r3, r2
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1241,7 +1241,7 @@ G_M11467_IG42: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b adds r2, r3, 1 ldr r0, [r1+0x04] cmp r2, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1259,7 +1259,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b adds r0, r3, 2 ldr lr, [r2+0x04] cmp r0, lr
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -1273,7 +1273,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ldr r0, [r2+0x04] ldr r3, [sp+0x2E0] // [V38 tmp25] cmp r3, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -1286,7 +1286,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b add lr, r3, 1 ldr r12, [r2+0x04] cmp lr, r12
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -1300,7 +1300,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcrRegs -[r1] ldr r3, [r2+0x04] cmp r1, r3
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -1365,7 +1365,7 @@ G_M11467_IG46: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ; GC ptr vars -{V07} blx r3 // <unknown method> ; gcrRegs -[r0-r1 r6]
- b G_M11467_IG107
+ b G_M11467_IG105
;; size=44 bbWeight=0.50 PerfScore 8.00 G_M11467_IG47: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000000000000000200000000000002000000000000000000000000000000000 {V01 V07}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars +{V07 V133} @@ -1382,14 +1382,14 @@ G_M11467_IG47: ; bbWeight=0.50, gcVars=0000000000000000000000000000000000 ; gcrRegs +[r1] ldr r2, [r1+0x04] cmp r2, 0
- blt G_M11467_IG279
+ blt G_M11467_IG277
str r2, [sp+0x328] // [V06 loc3] cmp r2, 0
- ble G_M11467_IG106
+ ble G_M11467_IG104
movs r2, 0 ldr r3, [r1+0x04] cmp r2, r3
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] ldr r3, [r2] @@ -1401,15 +1401,8 @@ G_M11467_IG47: ; bbWeight=0.50, gcVars=0000000000000000000000000000000000 ldr r3, [sp+0x324] // [V214 tmp201+0x04] and r2, r2, 0 and r3, r3, -0x40000000
- orrs r0, r2, r3
...

-6 (-0.20%) : 44805.dasm - System.IO.Strategies.BufferedFileStreamStrategy+d__37:MoveNext():this (Tier1)

@@ -70,12 +70,12 @@ ; V59 tmp40 [V59,T41] ( 3, 6 ) int -> r7 "Inlining Arg" ; V60 tmp41 [V60,T42] ( 3, 6 ) int -> r6 "Inlining Arg" ; V61 tmp42 [V61,T05] ( 5, 10 ) ref -> r1 class-hnd single-def "Inlining Arg" <ubyte[]>
-; V62 tmp43 [V62,T15] ( 5, 8 ) int -> r3 "Inlining Arg"
+; V62 tmp43 [V62,T18] ( 4, 8 ) int -> r0 "Inlining Arg"
;* V63 tmp44 [V63 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V64 tmp45 [V64 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V65 tmp46 [V65,T28] ( 6, 6 ) byref -> [sp+0x18] "Inline stloc first use temp" ; V66 tmp47 [V66,T13] ( 8, 8 ) int -> [sp+0x38] "Inline stloc first use temp"
-; V67 tmp48 [V67,T16] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
+; V67 tmp48 [V67,T15] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
; V68 tmp49 [V68,T11] ( 9, 9 ) ref -> [sp+0x14] class-hnd spill-single-def "Inline stloc first use temp" <System.Object> ;* V69 tmp50 [V69 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V70 tmp51 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -91,7 +91,7 @@ ;* V80 tmp61 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V81 tmp62 [V81 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V82 tmp63 [V82 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V83 tmp64 [V83,T17] ( 4, 8 ) byref -> r1 single-def "Inlining Arg"
+; V83 tmp64 [V83,T16] ( 4, 8 ) byref -> r1 single-def "Inlining Arg"
;* V84 tmp65 [V84 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]> ; V85 tmp66 [V85,T06] ( 5, 10 ) ref -> r7 class-hnd single-def "Inlining Arg" <System.Object> ; V86 tmp67 [V86,T76] ( 3, 3 ) int -> r0 @@ -174,7 +174,7 @@ ;* V163 tmp144 [V163 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V164 tmp145 [V164,T31] ( 6, 6 ) byref -> [sp+0x10] "Inline stloc first use temp" ; V165 tmp146 [V165,T14] ( 8, 8 ) int -> [sp+0x2C] "Inline stloc first use temp"
-; V166 tmp147 [V166,T18] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
+; V166 tmp147 [V166,T17] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
; V167 tmp148 [V167,T12] ( 9, 9 ) ref -> [sp+0x0C] class-hnd spill-single-def "Inline stloc first use temp" <System.Object> ;* V168 tmp149 [V168 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V169 tmp150 [V169 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -265,7 +265,7 @@ ; V254 tmp235 [V254,T61] ( 2, 4 ) ref -> r1 single-def "argument with side effect" ; V255 PSPSym [V255,T119] ( 1, 1 ) int -> [sp+0x80] do-not-enreg[V] "PSPSym" ; V256 cse0 [V256,T86] ( 3, 3 ) int -> r6 "CSE - conservative"
-; V257 cse1 [V257,T87] ( 3, 3 ) int -> r3 "CSE - conservative"
+; V257 cse1 [V257,T87] ( 3, 3 ) int -> r0 "CSE - conservative"
; V258 cse2 [V258,T88] ( 3, 3 ) int -> r0 "CSE - conservative" ; V259 cse3 [V259,T89] ( 3, 3 ) int -> r1 "CSE - conservative" ; V260 rat0 [V260,T20] ( 4, 8 ) int -> r6 "ReplaceWithLclVar is creating a new local variable" @@ -401,7 +401,7 @@ G_M33324_IG06: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00 blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b G_M33324_IG116
+ b G_M33324_IG115
;; size=62 bbWeight=1 PerfScore 22.00 G_M33324_IG07: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, gcvars, byref, nogc ; gcrRegs +[r5] @@ -450,8 +450,8 @@ G_M33324_IG11: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by movs r1, 0 str r1, [r4+0x0C] ldr r1, [r5+0x20]
- ldr r3, [r5+0x1C] - subs r6, r1, r3
+ ldr r0, [r5+0x1C] + subs r6, r1, r0
cmp r6, 0 ble G_M33324_IG27 ldr r7, [r4+0x20] @@ -468,18 +468,18 @@ G_M33324_IG13: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ldr r1, [r5+0x10] ; gcrRegs +[r1] cmp r1, 0
- beq G_M33324_IG99 - ldr r0, [r1+0x04] - cmp r0, r3
+ beq G_M33324_IG98 + ldr r3, [r1+0x04] + cmp r3, r0
blo G_M33324_IG98
- ldr r0, [r1+0x04] - subs r0, r0, r3 - cmp r0, r6
+ ldr r3, [r1+0x04] + subs r3, r3, r0 + cmp r3, r6
blo G_M33324_IG98 adds r1, 8 ; gcrRegs -[r1] ; byrRegs +[r1]
- adds r7, r1, r3
+ adds r7, r1, r0
; byrRegs +[r7] mov r8, r6 add r9, r4, 24 @@ -621,7 +621,7 @@ G_M33324_IG22: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0090 {r4 r7}, ; gcr arg pop 0 ldr r9, [sp+0x38] // [V66 tmp47] cmp r8, r9
- bhi G_M33324_IG100
+ bhi G_M33324_IG99
ldr r0, [sp+0x18] // [V65 tmp46] ; byrRegs +[r0] mov r1, r7 @@ -643,7 +643,7 @@ G_M33324_IG23: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by cmp r6, r1 bne SHORT G_M33324_IG24 str r6, [sp+0x78] // [V03 loc2]
- b G_M33324_IG104
+ b G_M33324_IG103
;; size=12 bbWeight=1 PerfScore 5.00 G_M33324_IG24: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz cmp r6, 0 @@ -652,7 +652,7 @@ G_M33324_IG24: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ; byrRegs +[r1] ldr r0, [r1+0x08] cmp r6, r0
- bhi G_M33324_IG101
+ bhi G_M33324_IG100
ldr r7, [r1] ; gcrRegs +[r7] ldr r1, [r1+0x04] @@ -1022,7 +1022,7 @@ G_M33324_IG42: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ldr r0, [r4+0x0C] adds r0, r6, r0 str r0, [sp+0x78] // [V03 loc2]
- b SHORT G_M33324_IG110
+ b SHORT G_M33324_IG109
;; size=10 bbWeight=1 PerfScore 5.00 G_M33324_IG43: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs +[r7] @@ -1102,7 +1102,7 @@ G_M33324_IG47: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M33324_IG106
+ b SHORT G_M33324_IG105
;; size=68 bbWeight=1 PerfScore 24.00 G_M33324_IG48: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, nogc ; byrRegs +[r4] @@ -1212,7 +1212,7 @@ G_M33324_IG55: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M33324_IG108
+ b SHORT G_M33324_IG107
;; size=76 bbWeight=1 PerfScore 26.00 G_M33324_IG56: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, nogc ; byrRegs +[r4] @@ -1483,7 +1483,7 @@ G_M33324_IG72: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M33324_IG112
+ b SHORT G_M33324_IG111
;; size=76 bbWeight=1 PerfScore 26.00 G_M33324_IG73: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, nogc ; byrRegs +[r4] @@ -1794,7 +1794,7 @@ G_M33324_IG97: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, ; gcr arg pop 0 ldr r9, [sp+0x2C] // [V165 tmp146] cmp r8, r9
- bhi SHORT G_M33324_IG100
+ bhi SHORT G_M33324_IG99
ldr r0, [sp+0x10] // [V164 tmp145] ; byrRegs +[r0] mov r1, r6 @@ -1807,7 +1807,7 @@ G_M33324_IG97: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, blx r3 // <unknown method> ; byrRegs -[r0-r1 r6] ; gcr arg pop 0
- b SHORT G_M33324_IG102
+ b SHORT G_M33324_IG101
;; size=40 bbWeight=1 PerfScore 15.00 G_M33324_IG98: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref movw r3, 0xd1ff @@ -1817,12 +1817,7 @@ G_M33324_IG98: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ; gcr arg pop 0 bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-G_M33324_IG99: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz - cmp r3, 0 - bne SHORT G_M33324_IG98 - b SHORT G_M33324_IG98 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M33324_IG100: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M33324_IG99: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -1830,7 +1825,7 @@ G_M33324_IG100: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b ; gcr arg pop 0 bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-G_M33324_IG101: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M33324_IG100: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
movs r0, 33 movw r3, 0xd1ff movt r3, 0xd1ff @@ -1839,7 +1834,7 @@ G_M33324_IG101: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b ; gcr arg pop 0 bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-G_M33324_IG102: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M33324_IG101: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
ldr r0, [r5+0x1C] adds r0, r0, r7 str r0, [r5+0x1C] @@ -1847,10 +1842,10 @@ G_M33324_IG102: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b adds r0, r0, r7 str r0, [sp+0x78] // [V03 loc2] ;; size=12 bbWeight=1 PerfScore 6.00
-G_M33324_IG103: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
+G_M33324_IG102: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
ldr r0, [sp+0x7C] // [V01 loc0] cmp r0, 0
- bge SHORT G_M33324_IG114
+ bge SHORT G_M33324_IG113
ldr r0, [r5+0x04] ; gcrRegs +[r0] ldrsb r1, [r0] @@ -1862,44 +1857,44 @@ G_M33324_IG103: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b blx r3 // <unknown method> ; gcrRegs -[r0 r5] ; gcr arg pop 0
- b SHORT G_M33324_IG114
+ b SHORT G_M33324_IG113
;; size=28 bbWeight=1 PerfScore 11.00
-G_M33324_IG104: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, gcvars, byref
+G_M33324_IG103: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, gcvars, byref
; gcrRegs +[r5] ; GC ptr vars +{V01 V02}
- bl G_M33324_IG117
+ bl G_M33324_IG116
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG105: ; bbWeight=1, nogc, isz, extend - b SHORT G_M33324_IG114
+G_M33324_IG104: ; bbWeight=1, nogc, isz, extend + b SHORT G_M33324_IG113
;; size=2 bbWeight=1 PerfScore 1.00
-G_M33324_IG106: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M33324_IG105: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
; byrRegs -[r4]
- bl G_M33324_IG117
+ bl G_M33324_IG116
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG107: ; bbWeight=1, nogc, isz, extend - b SHORT G_M33324_IG116
+G_M33324_IG106: ; bbWeight=1, nogc, isz, extend + b SHORT G_M33324_IG115
;; size=2 bbWeight=1 PerfScore 1.00
-G_M33324_IG108: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref - bl G_M33324_IG117
+G_M33324_IG107: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref + bl G_M33324_IG116
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG109: ; bbWeight=1, nogc, isz, extend
...

+0 (0.00%) : 63191.dasm - System.ArgumentOutOfRangeException:ThrowIfLessThanOrEqualfloat (Tier1)

No diffs found?

coreclr_tests.run.linux.arm.checked.mch

-40 (-71.43%) : 413004.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)

@@ -2,65 +2,48 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp 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 -> f0 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 cse0 [V02,T01] ( 3, 2.50) float -> f8 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M53663_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // 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
- movw r3, 0xd1ff - movt r3, 0xd1ff - vmov.i2f s8, r3 - vcmp s0, s8 - vmrs APSR, FPSCR - bhs SHORT G_M53663_IG04 - ;; size=34 bbWeight=1 PerfScore 10.00 -G_M53663_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M53663_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - vcmp s0, s8 - vmrs APSR, FPSCR - bne SHORT G_M53663_IG03 - b SHORT G_M53663_IG03 - ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ; gcr arg pop 0 + ;; size=12 bbWeight=1 PerfScore 4.00 +G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 56, prolog size 6, PerfScore 15.00, instruction count 17, allocated bytes for code 56 (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 2, PerfScore 6.00, 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: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038) - ---- Epilog scopes ---- - ---- Scope 0 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
+ Function Length : 8 (0x00008) Actual length = 16 (0x000010) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-30 (-28.30%) : 409037.dasm - Test10w250d.testout1:Func01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_1():float (FullOpts)

@@ -8,62 +8,47 @@ ; 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 -> f16 single-def
+; V00 loc0 [V00,T00] ( 3, 3 ) float -> [sp+0x04] spill-single-def
;* V01 loc1 [V01 ] ( 0, 0 ) float -> zero-ref ;* V02 loc2 [V02 ] ( 0, 0 ) float -> zero-ref ;* V03 loc3 [V03 ] ( 0, 0 ) float -> zero-ref ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T01] ( 4, 3 ) float -> f8 "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 2, 2 ) float -> f8 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M28447_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - vpush {d8-d8}
+ push {r2,r3,r11,lr}
add r11, sp, 8
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
G_M28447_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // 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():float
- vmov s16, s0
+ vstr s0, [sp+0x04]
movw r0, 0xd1ff movt r0, 0xd1ff vmov.i2f s8, r0
- vcmp s16, s8
+ vcmp s0, s8
vmrs APSR, FPSCR
- bhi SHORT G_M28447_IG07
+ bhi SHORT G_M28447_IG04
;; size=38 bbWeight=1 PerfScore 11.00
-G_M28447_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - vcmp s16, s8 - vmrs APSR, FPSCR - blt SHORT G_M28447_IG06 - ;; size=10 bbWeight=0.50 PerfScore 1.50 -G_M28447_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - vmov s0, s16
+G_M28447_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r2,r3,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M28447_IG05: ; bbWeight=1, epilog, nogc, extend - vpop {d8-d8} - pop {r11,pc} - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M28447_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - vcmp s16, s8 - vmrs APSR, FPSCR - ble SHORT G_M28447_IG04 - b SHORT G_M28447_IG04 - ;; size=12 bbWeight=0.50 PerfScore 2.00 -G_M28447_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M28447_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- b SHORT G_M28447_IG04 - ;; size=22 bbWeight=0.50 PerfScore 3.50
+ vldr s0, [sp+0x04] // [V00 loc0] + b SHORT G_M28447_IG03 + ;; size=26 bbWeight=0.50 PerfScore 4.00
-; Total bytes of code 106, prolog size 12, PerfScore 24.00, instruction count 31, allocated bytes for code 106 (MethodHash=2d4290e0) 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():float (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 18.00, instruction count 22, allocated bytes for code 76 (MethodHash=2d4290e0) 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():float (FullOpts)
; ============================================================ Unwind Info: @@ -75,7 +60,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 53 (0x00035) Actual length = 106 (0x00006a)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -83,7 +68,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- E0 vpop {d8} ; opsize 32 - A8 00 pop {r11,lr} ; opsize 32
+ A8 0C pop {r2,r3,r11,lr} ; opsize 32 + FF end
FF end

-38 (-27.54%) : 211377.dasm - Test.AA:Method1(byref,int,byref,double[]):float (Tier0-FullOpts)

@@ -9,16 +9,16 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) byref -> zero-ref single-def
-; V01 arg1 [V01,T05] ( 3, 3 ) int -> r1 single-def
+; V01 arg1 [V01,T03] ( 3, 3 ) int -> r1 single-def
;* V02 arg2 [V02 ] ( 0, 0 ) byref -> zero-ref single-def
-; V03 arg3 [V03,T03] ( 4, 4 ) ref -> r3 class-hnd single-def <double[]>
+; V03 arg3 [V03,T01] ( 4, 4 ) ref -> r3 class-hnd single-def <double[]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T01] ( 2, 16 ) ref -> r0 class-hnd exact "NewObj constructor temp" <Test.AA> -; V06 cse0 [V06,T00] ( 4, 16 ) float -> f0 "CSE - aggressive" -; V07 cse1 [V07,T04] ( 3, 6 ) double -> f16:f17 "CSE - aggressive" -; V08 cse2 [V08,T02] ( 3, 9 ) float -> f18 hoist "CSE - aggressive" -; V09 cse3 [V09,T06] ( 2, 5 ) float -> f19 hoist "CSE - aggressive" -; V10 cse4 [V10,T07] ( 2, 5 ) int -> r4 hoist "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 2, 16 ) ref -> r0 class-hnd exact "NewObj constructor temp" <Test.AA> +;* V06 cse0 [V06,T06] ( 0, 0 ) float -> zero-ref "CSE - aggressive" +; V07 cse1 [V07,T02] ( 2, 2 ) double -> f16:f17 "CSE - aggressive" +; V08 cse2 [V08,T04] ( 2, 5 ) float -> f18 hoist "CSE - aggressive" +;* V09 cse3 [V09,T07] ( 0, 0 ) float -> zero-ref hoist "CSE - aggressive" +; V10 cse4 [V10,T05] ( 2, 5 ) int -> r4 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -43,10 +43,7 @@ G_M18129_IG02: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byre movw r0, 0xd1ff movt r0, 0xd1ff vmov.i2f s18, r0
- movw r0, 0xd1ff - movt r0, 0xd1ff - vmov.i2f s19, r0 - ;; size=56 bbWeight=1 PerfScore 17.00
+ ;; size=44 bbWeight=1 PerfScore 14.00
G_M18129_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r3] mov r0, r4 @@ -56,15 +53,8 @@ G_M18129_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[r0] ; gcr arg pop 0 vstr s18, [r0+0x04]
- vcvt.d2f s0, d8 - vsub s8, s18, s0 - vadd s0, s0, s0 - vadd s0, s8, s0 - vcmp s0, s19 - vmrs APSR, FPSCR - beq SHORT G_M18129_IG03
b SHORT G_M18129_IG03
- ;; size=44 bbWeight=4 PerfScore 52.00
+ ;; size=18 bbWeight=4 PerfScore 24.00
G_M18129_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r0] movs r3, 0 @@ -82,7 +72,7 @@ G_M18129_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 138, prolog size 12, PerfScore 76.00, instruction count 41, allocated bytes for code 138 (MethodHash=704ab92e) for method Test.AA:Method1(byref,int,byref,double[]):float (Tier0-FullOpts)
+; Total bytes of code 100, prolog size 12, PerfScore 45.00, instruction count 31, allocated bytes for code 100 (MethodHash=704ab92e) for method Test.AA:Method1(byref,int,byref,double[]):float (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -94,7 +84,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 69 (0x00045) Actual length = 138 (0x00008a)
+ Function Length : 50 (0x00032) Actual length = 100 (0x000064)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+6 (+4.05%) : 325818.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 -> r3 single-def
+; V10 tmp6 [V10,T11] ( 2, 2 ) int -> r2 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 -> r3 single-def
+; V13 tmp9 [V13,T12] ( 2, 2 ) int -> r2 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 -> r3 single-def
+; V16 tmp12 [V16,T13] ( 2, 2 ) int -> r2 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 -> r0 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 -> r0 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 -> r2 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 -> r3 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 -> r3 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 -> r3 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 -> r0 single-def
+; V43 tmp39 [V43,T20] ( 2, 2 ) int -> r0 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 -> r0 single-def
+; V46 tmp42 [V46,T21] ( 2, 2 ) int -> r0 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,T07] ( 2, 2 ) int -> r0 "CSE - aggressive" -; V68 cse1 [V68,T04] ( 2, 2 ) int -> r0 "CSE - aggressive"
+; V67 cse0 [V67,T06] ( 2, 2 ) int -> r2 "CSE - aggressive" +; V68 cse1 [V68,T07] ( 2, 2 ) int -> r0 "CSE - aggressive"
; V69 cse2 [V69,T08] ( 2, 2 ) int -> r0 "CSE - aggressive"
-; V70 cse3 [V70,T05] ( 2, 2 ) int -> r2 "CSE - aggressive" -; V71 cse4 [V71,T06] ( 2, 2 ) int -> r3 "CSE - aggressive" -; V72 cse5 [V72,T03] ( 4, 4 ) int -> r3 "CSE - aggressive" -; V73 cse6 [V73,T09] ( 2, 2 ) int -> r0 "CSE - aggressive"
+; V70 cse3 [V70,T04] ( 3, 3 ) int -> r1 "CSE - aggressive" +; V71 cse4 [V71,T05] ( 3, 3 ) int -> r3 "CSE - aggressive" +; V72 cse5 [V72,T09] ( 3, 3 ) int -> r0 "CSE - aggressive" +; V73 cse6 [V73,T03] ( 4, 4 ) int -> r3 "CSE - aggressive" +; V74 cse7 [V74,T10] ( 2, 2 ) int -> r0 "CSE - aggressive"
; ; Lcl frame size = 4 @@ -138,22 +139,25 @@ G_M39164_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref strb r3, [r4+0x08] strb r2, [r4+0x09] ldr r3, [r4+0x04]
- adds r3, 17 - ldr r2, [r0+0x0C] - adds r3, r3, r2
+ mov r2, r3 + adds r2, 17 + ldr r1, [r0+0x0C] + adds r2, r2, r1
ldr r0, [r0+0x08] ; gcrRegs -[r0]
+ adds r2, r2, r0 + adds r3, r2, r3 + adds r3, 17 + adds r3, r3, r1
adds r0, r3, r0 adds r0, r0, 3 subs r0, r0, 5
- adds r0, r0, 3 - subs r0, r0, 5 - ;; size=136 bbWeight=1 PerfScore 51.00
+ ;; size=142 bbWeight=1 PerfScore 54.00
G_M39164_IG03: ; bbWeight=1, epilog, nogc, extend pop {r3,r4,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 148, prolog size 8, PerfScore 54.00, instruction count 54, allocated bytes for code 148 (MethodHash=17766703) for method testout1:Sub_Funclet_183():int (FullOpts)
+; Total bytes of code 154, prolog size 8, PerfScore 57.00, instruction count 57, allocated bytes for code 154 (MethodHash=17766703) for method testout1:Sub_Funclet_183():int (FullOpts)
; ============================================================ Unwind Info: @@ -165,7 +169,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 74 (0x0004a) Actual length = 148 (0x000094)
+ Function Length : 77 (0x0004d) Actual length = 154 (0x00009a)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+6 (+4.17%) : 325325.dasm - testout1:SubFunclet106():int (FullOpts)

@@ -22,7 +22,7 @@ ;* 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,59 +31,59 @@ ;* 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 -> r3 single-def
+; V26 tmp17 [V26,T09] ( 2, 2 ) int -> r2 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 -> r3 single-def
+; V29 tmp20 [V29,T10] ( 2, 2 ) int -> r2 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 -> r3 single-def
+; V32 tmp23 [V32,T11] ( 2, 2 ) int -> r2 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 -> r0 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 -> r0 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 -> r2 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 -> r3 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 -> r3 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 -> r3 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 -> r0 "CSE - aggressive" -;* V72 cse1 [V72,T20] ( 0, 0 ) int -> zero-ref "CSE - aggressive" -; V73 cse2 [V73,T04] ( 2, 2 ) int -> r0 "CSE - aggressive" -; V74 cse3 [V74,T06] ( 2, 2 ) int -> r3 "CSE - aggressive" -; V75 cse4 [V75,T07] ( 2, 2 ) int -> r2 "CSE - aggressive"
+; V71 cse0 [V71,T04] ( 2, 2 ) int -> r2 "CSE - aggressive" +; V72 cse1 [V72,T05] ( 2, 2 ) int -> r0 "CSE - aggressive" +; V73 cse2 [V73,T06] ( 3, 3 ) int -> r3 "CSE - aggressive" +; V74 cse3 [V74,T07] ( 3, 3 ) int -> r1 "CSE - aggressive" +; V75 cse4 [V75,T08] ( 3, 3 ) int -> r0 "CSE - aggressive"
; V76 cse5 [V76,T02] ( 4, 4 ) int -> r3 "CSE - aggressive" ; ; Lcl frame size = 4 @@ -141,20 +141,23 @@ G_M50161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref strb r3, [r4+0x08] strb r2, [r4+0x09] ldr r3, [r4+0x04]
- adds r3, 17 - ldr r2, [r0+0x0C] - adds r3, r3, r2
+ mov r2, r3 + adds r2, 17 + ldr r1, [r0+0x0C] + adds r2, r2, r1
ldr r0, [r0+0x08] ; gcrRegs -[r0]
+ adds r2, r2, r0 + adds r3, r2, r3 + adds r3, 17 + adds r3, r3, r1
adds r0, r3, r0
- adds r0, r0, 3 - subs r0, r0, 5 - ;; size=132 bbWeight=1 PerfScore 49.00
+ ;; size=138 bbWeight=1 PerfScore 52.00
G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend pop {r3,r4,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 144, prolog size 8, PerfScore 52.00, instruction count 52, allocated bytes for code 144 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
+; Total bytes of code 150, prolog size 8, PerfScore 55.00, instruction count 55, allocated bytes for code 150 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
; ============================================================ Unwind Info: @@ -166,7 +169,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 72 (0x00048) Actual length = 144 (0x000090)
+ Function Length : 75 (0x0004b) Actual length = 150 (0x000096)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+6 (+4.17%) : 325742.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 -> r3 single-def
+; V23 tmp18 [V23,T10] ( 2, 2 ) int -> r2 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 -> r3 single-def
+; V26 tmp21 [V26,T11] ( 2, 2 ) int -> r2 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 -> r3 single-def
+; V29 tmp24 [V29,T12] ( 2, 2 ) int -> r2 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 -> r0 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 -> r0 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 -> r2 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 -> r3 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 -> r3 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 -> r3 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 -> r0 "CSE - aggressive" -;* V69 cse1 [V69,T21] ( 0, 0 ) int -> zero-ref "CSE - aggressive" -; V70 cse2 [V70,T04] ( 2, 2 ) int -> r0 "CSE - aggressive" -; V71 cse3 [V71,T06] ( 2, 2 ) int -> r3 "CSE - aggressive" -; V72 cse4 [V72,T07] ( 2, 2 ) int -> r2 "CSE - aggressive"
+; V68 cse0 [V68,T04] ( 2, 2 ) int -> r2 "CSE - aggressive" +; V69 cse1 [V69,T05] ( 2, 2 ) int -> r0 "CSE - aggressive" +; V70 cse2 [V70,T06] ( 3, 3 ) int -> r3 "CSE - aggressive" +; V71 cse3 [V71,T07] ( 3, 3 ) int -> r1 "CSE - aggressive" +; V72 cse4 [V72,T08] ( 3, 3 ) int -> r0 "CSE - aggressive"
; V73 cse5 [V73,T03] ( 4, 4 ) int -> r3 "CSE - aggressive"
-; V74 cse6 [V74,T08] ( 2, 2 ) int -> r0 "CSE - aggressive"
+; V74 cse6 [V74,T09] ( 2, 2 ) int -> r0 "CSE - aggressive"
; ; Lcl frame size = 4 @@ -139,20 +139,23 @@ G_M50161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref strb r3, [r4+0x08] strb r2, [r4+0x09] ldr r3, [r4+0x04]
- adds r3, 17 - ldr r2, [r0+0x0C] - adds r3, r3, r2
+ mov r2, r3 + adds r2, 17 + ldr r1, [r0+0x0C] + adds r2, r2, r1
ldr r0, [r0+0x08] ; gcrRegs -[r0]
+ adds r2, r2, r0 + adds r3, r2, r3 + adds r3, 17 + adds r3, r3, r1
adds r0, r3, r0
- adds r0, r0, 3 - subs r0, r0, 5 - ;; size=132 bbWeight=1 PerfScore 49.00
+ ;; size=138 bbWeight=1 PerfScore 52.00
G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend pop {r3,r4,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 144, prolog size 8, PerfScore 52.00, instruction count 52, allocated bytes for code 144 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
+; Total bytes of code 150, prolog size 8, PerfScore 55.00, instruction count 55, allocated bytes for code 150 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
; ============================================================ Unwind Info: @@ -164,7 +167,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 72 (0x00048) Actual length = 144 (0x000090)
+ Function Length : 75 (0x0004b) Actual length = 150 (0x000096)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

libraries.crossgen2.linux.arm.checked.mch

-24 (-13.33%) : 161763.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)

@@ -8,7 +8,7 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 9, 4 ) int -> r5 single-def
+; V00 arg0 [V00,T00] ( 6, 4 ) int -> r5 single-def
; V01 arg1 [V01,T01] ( 4, 2 ) ref -> r6 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 -> r7 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> @@ -26,9 +26,9 @@ G_M20631_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=12 bbWeight=1 PerfScore 4.00 G_M20631_IG02: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz cmp r5, 452
- bgt SHORT G_M20631_IG07
+ bgt SHORT G_M20631_IG04
cmp r5, 250
- bne SHORT G_M20631_IG06
+ bne SHORT G_M20631_IG04
;; size=10 bbWeight=1 PerfScore 4.00 G_M20631_IG03: ; bbWeight=1, epilog, nogc, extend pop {r4,r5,r6,r7,r11,pc} @@ -98,24 +98,10 @@ G_M20631_IG05: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre ldr r3, [r3] blx r3 // CORINFO_HELP_THROW ; gcrRegs -[r0 r7]
- ;; size=56 bbWeight=0 PerfScore 0.00 -G_M20631_IG06: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r6] - subw r3, r5, 451 - cmp r3, 1 - bls SHORT G_M20631_IG04 - b SHORT G_M20631_IG04 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M20631_IG07: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz - cmp r5, 552 - beq SHORT G_M20631_IG04 - movw r3, 0xd1ff - cmp r5, r3 - beq SHORT G_M20631_IG04 - b SHORT G_M20631_IG04 - ;; size=16 bbWeight=0 PerfScore 0.00
+ bkpt + ;; size=58 bbWeight=0 PerfScore 0.00
-; Total bytes of code 180, prolog size 8, PerfScore 9.00, instruction count 67, allocated bytes for code 180 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
+; Total bytes of code 156, prolog size 8, PerfScore 9.00, instruction count 58, allocated bytes for code 156 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
; ============================================================ Unwind Info: @@ -127,7 +113,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 90 (0x0005a) Actual length = 180 (0x0000b4)
+ Function Length : 78 (0x0004e) Actual length = 156 (0x00009c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-22 (-12.94%) : 63801.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:g_makeReplacement|171(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode (FullOpts)

@@ -9,7 +9,7 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode>
+; V00 arg0 [V00,T00] ( 4, 3.50) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode>
; V01 arg1 [V01,T01] ( 4, 3 ) ref -> r6 class-hnd single-def <System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]> ; V02 loc0 [V02,T03] ( 4, 2 ) ref -> r0 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundDagFieldEvaluation> ; V03 loc1 [V03,T05] ( 3, 1.50) ref -> r8 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol> @@ -40,23 +40,10 @@ G_M26195_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b mov r7, r0 ; gcrRegs +[r7] cmp r7, 0
- bne SHORT G_M26195_IG04
+ beq SHORT G_M26195_IG05
;; size=22 bbWeight=1 PerfScore 9.00
-G_M26195_IG03: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0 r7] - mov r0, r5 - ; gcrRegs +[r0] - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - ldr r3, [r4] - blx r3 // CORINFO_HELP_READYTORUN_ISINSTANCEOF - cmp r0, 0 - bne SHORT G_M26195_IG06 - b SHORT G_M26195_IG06 - ;; size=22 bbWeight=0.50 PerfScore 4.50 -G_M26195_IG04: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0] +[r7]
+G_M26195_IG03: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0]
ldr r0, [r7+0x0C] ; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E @@ -65,12 +52,12 @@ G_M26195_IG04: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 ldr r3, [r4] blx r3 // CORINFO_HELP_READYTORUN_ISINSTANCEOF cmp r0, 0
- beq SHORT G_M26195_IG06
+ beq SHORT G_M26195_IG05
ldr r3, [r0+0x0C] ; gcrRegs +[r3] ldr r3, [r3+0x10] cmp r3, 0
- bne SHORT G_M26195_IG06
+ bne SHORT G_M26195_IG05
ldr r8, [r0+0x10] ; gcrRegs +[r8] mov r0, r8 @@ -82,7 +69,7 @@ G_M26195_IG04: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 ; gcrRegs -[r3] blx r3 // <unknown method> cmp r0, 0
- beq SHORT G_M26195_IG06
+ beq SHORT G_M26195_IG05
mov r0, r8 movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E @@ -101,10 +88,10 @@ G_M26195_IG04: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 blx r3 // <unknown method> ; gcrRegs -[r1 r6-r7] ;; size=88 bbWeight=0.50 PerfScore 17.50
-G_M26195_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M26195_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r7,r8,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M26195_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref
+G_M26195_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0] +[r5-r6] mov r1, r6 ; gcrRegs +[r1] @@ -117,11 +104,11 @@ G_M26195_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6 blx r3 // <unknown method> ; gcrRegs -[r1 r5-r6] ;; size=18 bbWeight=0.50 PerfScore 3.50
-G_M26195_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M26195_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r7,r8,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 170, prolog size 8, PerfScore 39.50, instruction count 66, allocated bytes for code 170 (MethodHash=af9999ac) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:<RewriteTupleInput>g__makeReplacement|17_1(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode (FullOpts)
+; Total bytes of code 148, prolog size 8, PerfScore 35.00, instruction count 57, allocated bytes for code 148 (MethodHash=af9999ac) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:<RewriteTupleInput>g__makeReplacement|17_1(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode (FullOpts)
; ============================================================ Unwind Info: @@ -133,7 +120,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 85 (0x00055) Actual length = 170 (0x0000aa)
+ Function Length : 74 (0x0004a) Actual length = 148 (0x000094)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-9.52%) : 161689.dasm - System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)

@@ -8,7 +8,7 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 7, 3 ) int -> r5 single-def
+; V00 arg0 [V00,T00] ( 5, 3 ) int -> r5 single-def
; V01 arg1 [V01,T01] ( 4, 2 ) ref -> r6 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 -> r7 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> @@ -26,7 +26,7 @@ G_M40495_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=12 bbWeight=1 PerfScore 4.00 G_M40495_IG02: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz cmp r5, 354
- bne SHORT G_M40495_IG06
+ bne SHORT G_M40495_IG04
;; size=6 bbWeight=1 PerfScore 2.00 G_M40495_IG03: ; bbWeight=1, epilog, nogc, extend pop {r4,r5,r6,r7,r11,pc} @@ -96,19 +96,10 @@ G_M40495_IG05: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre ldr r3, [r3] blx r3 // CORINFO_HELP_THROW ; gcrRegs -[r0 r7]
- ;; size=56 bbWeight=0 PerfScore 0.00 -G_M40495_IG06: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r6] - movw r3, 0xd1ff - cmp r5, r3 - beq SHORT G_M40495_IG04 - movw r3, 0xd1ff - cmp r5, r3 - beq SHORT G_M40495_IG04 - b SHORT G_M40495_IG04 - ;; size=18 bbWeight=0 PerfScore 0.00
+ bkpt + ;; size=58 bbWeight=0 PerfScore 0.00
-; Total bytes of code 168, prolog size 8, PerfScore 7.00, instruction count 62, allocated bytes for code 168 (MethodHash=165c61d0) for method System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
+; Total bytes of code 152, prolog size 8, PerfScore 7.00, instruction count 56, allocated bytes for code 152 (MethodHash=165c61d0) for method System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
; ============================================================ Unwind Info: @@ -120,7 +111,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 84 (0x00054) Actual length = 168 (0x0000a8)
+ Function Length : 76 (0x0004c) Actual length = 152 (0x000098)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-6 (-0.19%) : 11920.dasm - System.IO.Strategies.BufferedFileStreamStrategy+d__37:MoveNext():this (FullOpts)

@@ -64,12 +64,12 @@ ; V52 tmp33 [V52,T36] ( 3, 6 ) int -> r7 "Inlining Arg" ; V53 tmp34 [V53,T37] ( 3, 6 ) int -> r6 "Inlining Arg" ; V54 tmp35 [V54,T06] ( 5, 10 ) ref -> r0 class-hnd single-def "Inlining Arg" <ubyte[]>
-; V55 tmp36 [V55,T16] ( 5, 8 ) int -> r3 "Inlining Arg"
+; V55 tmp36 [V55,T19] ( 4, 8 ) int -> r3 "Inlining Arg"
;* V56 tmp37 [V56 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V57 tmp38 [V57 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V58 tmp39 [V58,T29] ( 6, 6 ) byref -> [sp+0x18] "Inline stloc first use temp" ; V59 tmp40 [V59,T14] ( 8, 8 ) int -> [sp+0x38] "Inline stloc first use temp"
-; V60 tmp41 [V60,T17] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
+; V60 tmp41 [V60,T16] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
; V61 tmp42 [V61,T12] ( 8, 8 ) ref -> [sp+0x14] class-hnd spill-single-def "Inline stloc first use temp" <System.Object> ;* V62 tmp43 [V62 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V63 tmp44 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -89,7 +89,7 @@ ;* V77 tmp58 [V77 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V78 tmp59 [V78 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V79 tmp60 [V79 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V80 tmp61 [V80,T18] ( 4, 8 ) byref -> r0 single-def "Inlining Arg"
+; V80 tmp61 [V80,T17] ( 4, 8 ) byref -> r0 single-def "Inlining Arg"
;* V81 tmp62 [V81 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]> ; V82 tmp63 [V82,T07] ( 5, 10 ) ref -> r7 class-hnd single-def "Inlining Arg" <System.Object> ; V83 tmp64 [V83,T75] ( 2, 2 ) int -> r1 @@ -184,7 +184,7 @@ ;* V172 tmp153 [V172 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V173 tmp154 [V173,T30] ( 6, 6 ) byref -> [sp+0x10] "Inline stloc first use temp" ; V174 tmp155 [V174,T15] ( 8, 8 ) int -> [sp+0x2C] "Inline stloc first use temp"
-; V175 tmp156 [V175,T19] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
+; V175 tmp156 [V175,T18] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
; V176 tmp157 [V176,T13] ( 8, 8 ) ref -> [sp+0x0C] class-hnd spill-single-def "Inline stloc first use temp" <System.Object> ;* V177 tmp158 [V177 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V178 tmp159 [V178 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -453,7 +453,7 @@ G_M33324_IG08: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00 blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b G_M33324_IG110
+ b G_M33324_IG109
;; size=74 bbWeight=1 PerfScore 27.00 G_M33324_IG09: ; bbWeight=1, gcVars=00000000000000000000000000000005 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, nogc ; gcrRegs +[r5] @@ -526,7 +526,7 @@ G_M33324_IG15: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ldr r0, [r5+0x10] ; gcrRegs +[r0] cmp r0, 0
- beq G_M33324_IG93
+ beq G_M33324_IG92
ldr r2, [r0+0x04] cmp r2, r3 blo G_M33324_IG92 @@ -697,7 +697,7 @@ G_M33324_IG21: ; bbWeight=1, gcVars=00000000000000000000000000000005 {V00 ; GC ptr vars -{V58} ldr r2, [sp+0x38] // [V59 tmp40] cmp r8, r2
- bhi G_M33324_IG94
+ bhi G_M33324_IG93
mov r2, r8 mov r0, r3 ; byrRegs +[r0] @@ -722,7 +722,7 @@ G_M33324_IG22: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by cmp r6, r0 bne SHORT G_M33324_IG23 str r6, [sp+0x80] // [V03 loc2]
- b G_M33324_IG98
+ b G_M33324_IG97
;; size=12 bbWeight=1 PerfScore 5.00 G_M33324_IG23: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz cmp r6, 0 @@ -731,7 +731,7 @@ G_M33324_IG23: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ; byrRegs +[r0] ldr r3, [r0+0x08] cmp r6, r3
- bhi G_M33324_IG95
+ bhi G_M33324_IG94
ldr r7, [r0] ; gcrRegs +[r7] ldr r0, [r0+0x04] @@ -991,7 +991,7 @@ G_M33324_IG33: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M33324_IG100
+ b SHORT G_M33324_IG99
;; size=78 bbWeight=1 PerfScore 28.00 G_M33324_IG34: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r6] @@ -1298,7 +1298,7 @@ G_M33324_IG51: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M33324_IG102
+ b SHORT G_M33324_IG101
;; size=86 bbWeight=1 PerfScore 30.00 G_M33324_IG52: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, nogc ldr r4, [sp+0x20] // [V00 this] @@ -1441,7 +1441,7 @@ G_M33324_IG61: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ldr r0, [r4+0x0C] adds r0, r7, r0 str r0, [sp+0x80] // [V03 loc2]
- b SHORT G_M33324_IG104
+ b SHORT G_M33324_IG103
;; size=10 bbWeight=1 PerfScore 5.00 G_M33324_IG62: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz ldr r0, [r5+0x10] @@ -1637,7 +1637,7 @@ G_M33324_IG71: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M33324_IG106
+ b SHORT G_M33324_IG105
;; size=86 bbWeight=1 PerfScore 30.00 G_M33324_IG72: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, nogc ldr r4, [sp+0x20] // [V00 this] @@ -1967,7 +1967,7 @@ G_M33324_IG91: ; bbWeight=1, gcVars=00000000000000000000000000000005 {V00 ; GC ptr vars -{V173} ldr r2, [sp+0x2C] // [V174 tmp155] cmp r8, r2
- bhi SHORT G_M33324_IG94
+ bhi SHORT G_M33324_IG93
mov r2, r8 mov r0, r3 ; byrRegs +[r0] @@ -1981,7 +1981,7 @@ G_M33324_IG91: ; bbWeight=1, gcVars=00000000000000000000000000000005 {V00 blx r3 // <unknown method> ; byrRegs -[r0-r1 r6] ; gcr arg pop 0
- b SHORT G_M33324_IG96
+ b SHORT G_M33324_IG95
;; size=28 bbWeight=1 PerfScore 12.00 G_M33324_IG92: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref movw r4, LOW RELOC 0xD1FFAB1E @@ -1992,14 +1992,7 @@ G_M33324_IG92: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ; gcr arg pop 0 bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-G_M33324_IG93: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz - ; byrRegs +[r4] - cmp r3, 0 - bne SHORT G_M33324_IG92 - b SHORT G_M33324_IG92 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M33324_IG94: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref - ; byrRegs -[r4]
+G_M33324_IG93: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc @@ -2008,7 +2001,7 @@ G_M33324_IG94: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ; gcr arg pop 0 bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-G_M33324_IG95: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M33324_IG94: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc @@ -2018,7 +2011,7 @@ G_M33324_IG95: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ; gcr arg pop 0 bkpt ;; size=18 bbWeight=0 PerfScore 0.00
-G_M33324_IG96: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M33324_IG95: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
ldr r0, [r5+0x1C] adds r0, r0, r7 str r0, [r5+0x1C] @@ -2028,11 +2021,11 @@ G_M33324_IG96: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre adds r0, r0, r7 str r0, [sp+0x80] // [V03 loc2] ;; size=14 bbWeight=1 PerfScore 7.00
-G_M33324_IG97: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M33324_IG96: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r4] ldr r0, [sp+0x84] // [V01 loc0] cmp r0, 0
- bge SHORT G_M33324_IG108
+ bge SHORT G_M33324_IG107
ldr r0, [r5+0x04] ; gcrRegs +[r0] ldrsb r1, [r0] @@ -2045,43 +2038,43 @@ G_M33324_IG97: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r0 r5] ; gcr arg pop 0
- b SHORT G_M33324_IG108
+ b SHORT G_M33324_IG107
;; size=30 bbWeight=1 PerfScore 12.00
-G_M33324_IG98: ; bbWeight=1, gcVars=00000000000000000000000000000005 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, gcvars, byref
+G_M33324_IG97: ; bbWeight=1, gcVars=00000000000000000000000000000005 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, gcvars, byref
; gcrRegs +[r5] ; byrRegs +[r4] ; GC ptr vars +{V02}
- bl G_M33324_IG111
+ bl G_M33324_IG110
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG99: ; bbWeight=1, nogc, isz, extend - b SHORT G_M33324_IG108
+G_M33324_IG98: ; bbWeight=1, nogc, isz, extend + b SHORT G_M33324_IG107
;; size=2 bbWeight=1 PerfScore 1.00
-G_M33324_IG100: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M33324_IG99: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
; byrRegs -[r4]
- bl G_M33324_IG111
+ bl G_M33324_IG110
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG101: ; bbWeight=1, nogc, isz, extend - b SHORT G_M33324_IG110
+G_M33324_IG100: ; bbWeight=1, nogc, isz, extend + b SHORT G_M33324_IG109
;; size=2 bbWeight=1 PerfScore 1.00
-G_M33324_IG102: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref - bl G_M33324_IG111
+G_M33324_IG101: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref + bl G_M33324_IG110
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG103: ; bbWeight=1, nogc, isz, extend - b SHORT G_M33324_IG110
+G_M33324_IG102: ; bbWeight=1, nogc, isz, extend + b SHORT G_M33324_IG109
;; size=2 bbWeight=1 PerfScore 1.00
-G_M33324_IG104: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref - bl G_M33324_IG111
+G_M33324_IG103: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref + bl G_M33324_IG110
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG105: ; bbWeight=1, nogc, isz, extend - b SHORT G_M33324_IG108
+G_M33324_IG104: ; bbWeight=1, nogc, isz, extend + b SHORT G_M33324_IG107
;; size=2 bbWeight=1 PerfScore 1.00
-G_M33324_IG106: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref - bl G_M33324_IG111
+G_M33324_IG105: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref + bl G_M33324_IG110
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG107: ; bbWeight=1, nogc, isz, extend - b SHORT G_M33324_IG110
+G_M33324_IG106: ; bbWeight=1, nogc, isz, extend + b SHORT G_M33324_IG109
;; size=2 bbWeight=1 PerfScore 1.00
-G_M33324_IG108: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M33324_IG107: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r5] ; GC ptr vars -{V02} mvn r3, 1 @@ -2093,7 +2086,7 @@ G_M33324_IG108: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V0 ldr r3, [r5] ; gcrRegs +[r3] cmp r3, 0 ...

-4 (-0.11%) : 99204.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:InferTypeArgumentsFromLambdaArgument(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol):ubyte:this (FullOpts)

@@ -777,10 +777,8 @@ G_M41225_IG23: ; bbWeight=0.02, gcVars=000000000000000028006040 {V12 V13 ldr r3, [r4] blx r3 // <unknown method> ; gcrRegs -[r0-r1]
- cmp r0, 0 - beq SHORT G_M41225_IG25
b SHORT G_M41225_IG25
- ;; size=42 bbWeight=0.02 PerfScore 0.34
+ ;; size=38 bbWeight=0.02 PerfScore 0.30
G_M41225_IG24: ; bbWeight=0.02, gcVars=000000000000000028006050 {V12 V13 V20 V21 V84 V85}, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, gcvars, byref ; GC ptr vars +{V04 V06 V20 V21} ldr r7, [r6+0x04] @@ -2148,7 +2146,7 @@ G_M41225_IG65: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre bkpt ;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3580, prolog size 26, PerfScore 783.53, instruction count 1376, allocated bytes for code 3580 (MethodHash=73d05ef6) for method Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:InferTypeArgumentsFromLambdaArgument(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol):ubyte:this (FullOpts)
+; Total bytes of code 3576, prolog size 26, PerfScore 783.49, instruction count 1374, allocated bytes for code 3576 (MethodHash=73d05ef6) for method Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:InferTypeArgumentsFromLambdaArgument(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -2160,7 +2158,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 1790 (0x006fe) Actual length = 3580 (0x000dfc)
+ Function Length : 1788 (0x006fc) Actual length = 3576 (0x000df8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 34564.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNativeIntegerOverflowingUnaryOperator(int,Microsoft.CodeAnalysis.ConstantValue):System.Object (FullOpts)

@@ -24,18 +24,9 @@ G_M35943_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35943_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz movw r3, 0xd1ff cmp r0, r3
- beq SHORT G_M35943_IG05
+ bne SHORT G_M35943_IG05
;; size=8 bbWeight=1 PerfScore 3.00
-G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r5] - movs r0, 0 - ; gcrRegs +[r0] - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend - pop {r3,r4,r5,r6,r11,pc} - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M35943_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0] +[r5]
+G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc @@ -59,11 +50,19 @@ G_M35943_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, mov r0, r6 ; gcrRegs +[r0] ;; size=44 bbWeight=0.50 PerfScore 9.00
+G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r5,r6,r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M35943_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r0 r6] + movs r0, 0 + ; gcrRegs +[r0] + ;; size=2 bbWeight=0.50 PerfScore 0.50
G_M35943_IG06: ; bbWeight=0.50, epilog, nogc, extend pop {r3,r4,r5,r6,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M35943_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0 r6]
+ ; gcrRegs -[r0]
movw r3, LOW RELOC 0xD1FFAB1E movt r3, HIGH RELOC 0xD1FFAB1E add r3, pc

libraries.pmi.linux.arm.checked.mch

-10 (-41.67%) : 223493.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)

@@ -2,7 +2,7 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp 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) [sp+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 = 4
G_M40773_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00
G_M40773_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0] uxtb r3, r1 @@ -27,18 +26,15 @@ G_M40773_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre ;; size=6 bbWeight=1 PerfScore 3.00 G_M40773_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r0]
- pop {r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00
+ pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
G_M40773_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[r0] ldr r3, [r0+0x08]
- ; gcrRegs +[r3] - cmp r3, 0 - beq SHORT G_M40773_IG03
b SHORT G_M40773_IG03
- ;; size=8 bbWeight=0.50 PerfScore 2.00
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 24, prolog size 6, PerfScore 8.00, instruction count 10, allocated bytes for code 24 (MethodHash=8a3760ba) for method System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
+; Total bytes of code 14, prolog size 2, PerfScore 6.00, instruction count 7, allocated bytes for code 14 (MethodHash=8a3760ba) for method System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
; ============================================================ Unwind Info: @@ -50,7 +46,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 12 (0x0000c) Actual length = 24 (0x000018)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -58,7 +54,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-16 (-17.39%) : 181664.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (FullOpts)

@@ -8,10 +8,10 @@ ; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 7, 5.00) ref -> r4 class-hnd single-def <System.Type>
+; V00 arg0 [V00,T00] ( 6, 4.50) ref -> r4 class-hnd single-def <System.Type>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V03 tmp2 [V03,T02] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; ; Lcl frame size = 4 @@ -46,40 +46,26 @@ G_M8853_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, b movw r0, 0xd1ff movt r0, 0xd1ff cmp r4, r0
- beq SHORT G_M8853_IG08 - ;; size=12 bbWeight=0.50 PerfScore 2.00 -G_M8853_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ldr r0, [r4] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r0, r3 - beq SHORT G_M8853_IG10 - ;; size=14 bbWeight=0.50 PerfScore 2.48 -G_M8853_IG07: ; bbWeight=0.49, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - b SHORT G_M8853_IG10 - ;; size=2 bbWeight=0.49 PerfScore 0.49 -G_M8853_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4]
+ bne SHORT G_M8853_IG07
movs r0, 0
- ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M8853_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=14 bbWeight=0.50 PerfScore 2.50 +G_M8853_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M8853_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[r4]
+G_M8853_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
mov r0, r4 ; gcrRegs +[r0] ldr r3, [r4] ldr r3, [r3+0x58] ldr r3, [r3+0x10] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M8853_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M8853_IG08: ; bbWeight=0.50, epilog, nogc, extend
add sp, 4 pop {r4,r11,lr} bx r3 // <unknown method> ;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 92, prolog size 8, PerfScore 21.97, instruction count 33, allocated bytes for code 92 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 19.00, instruction count 27, allocated bytes for code 76 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (FullOpts)
; ============================================================ Unwind Info: @@ -91,7 +77,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 46 (0x0002e) Actual length = 92 (0x00005c)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-16.22%) : 269604.dasm - System.IO.FileSystemWatcher+NormalizedFilterCollection+ImmutableStringList:get_Item(int):System.String:this (FullOpts)

@@ -2,29 +2,28 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data ; 2 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.IO.FileSystemWatcher+NormalizedFilterCollection+ImmutableStringList>
-; V01 arg1 [V01,T00] ( 6, 4.11) int -> r4 single-def
+; V01 arg1 [V01,T00] ( 5, 4 ) int -> r4 single-def
; V02 loc0 [V02,T03] ( 3, 3 ) ref -> r0 class-hnd exact single-def <<unknown class>> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-; V05 tmp2 [V05,T02] ( 4, 4.22) int -> r5 "Inlining Arg"
+; V05 tmp2 [V05,T02] ( 3, 4 ) int -> r5 "Inlining Arg"
;* V06 tmp3 [V06,T05] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V07 tmp4 [V07,T06] ( 2, 0 ) ref -> r2 single-def "argument with side effect" ; V08 cse0 [V08,T04] ( 2, 2 ) int -> r5 "CSE - aggressive" ;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M30474_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - add r11, sp, 8
+ push {r3,r4,r5,lr}
mov r4, r1
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M30474_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0] ldr r0, [r0+0x04] @@ -40,14 +39,10 @@ G_M30474_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre ; byrRegs -[r0] ;; size=14 bbWeight=1 PerfScore 7.00 G_M30474_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r4,r5,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M30474_IG04: ; bbWeight=0.11, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ pop {r3,r4,r5,pc} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M30474_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
- cmp r4, r5 - bls SHORT G_M30474_IG05 - ;; size=4 bbWeight=0.11 PerfScore 0.22 -G_M30474_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movw r1, 0xd1ff movt r1, 0xd1ff @@ -55,6 +50,7 @@ G_M30474_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movt r3, 0xd1ff blx r3 // CORINFO_HELP_STRCNS ; gcrRegs +[r0]
+ ; gcr arg pop 0
mov r2, r0 ; gcrRegs +[r2] mov r1, r5 @@ -65,10 +61,11 @@ G_M30474_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr r3, [r3] blx r3 // System.ArgumentOutOfRangeException:ThrowGreaterEqual[uint](uint,uint,System.String) ; gcrRegs -[r2]
+ ; gcr arg pop 0
bkpt ;; size=42 bbWeight=0 PerfScore 0.00
-; Total bytes of code 74, prolog size 8, PerfScore 11.22, instruction count 27, allocated bytes for code 74 (MethodHash=9dbb88f5) for method System.IO.FileSystemWatcher+NormalizedFilterCollection+ImmutableStringList:get_Item(int):System.String:this (FullOpts)
+; Total bytes of code 62, prolog size 2, PerfScore 10.00, instruction count 24, allocated bytes for code 62 (MethodHash=9dbb88f5) for method System.IO.FileSystemWatcher+NormalizedFilterCollection+ImmutableStringList:get_Item(int):System.String:this (FullOpts)
; ============================================================ Unwind Info: @@ -80,7 +77,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -88,7 +85,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ ED 38 pop {r3,r4,r5,lr} ; opsize 16
FF end FF end

+4 (+0.21%) : 192924.dasm - System.DirectoryServices.Protocols.BerConverter:TryDecode(System.String,ubyte[],byref):System.Object

@@ -8,34 +8,34 @@ ; 21 inlinees with PGO data; 27 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T16] ( 6, 12 ) ref -> [sp+0x30] class-hnd single-def <System.String>
+; V00 arg0 [V00,T20] ( 5, 8 ) ref -> [sp+0x2C] class-hnd single-def <System.String>
; V01 arg1 [V01,T21] ( 9, 6 ) ref -> r5 class-hnd single-def <ubyte[]> ; V02 arg2 [V02,T36] ( 4, 3.50) byref -> r6 single-def
-; V03 loc0 [V03,T20] ( 4, 11 ) ref -> r7 class-hnd exact single-def <System.Text.UTF8Encoding> -; V04 loc1 [V04,T46] ( 6, 2.50) ref -> [sp+0x2C] class-hnd exact EH-live spill-single-def <System.DirectoryServices.Protocols.BerVal>
+; V03 loc0 [V03,T19] ( 4, 11 ) ref -> r7 class-hnd exact single-def <System.Text.UTF8Encoding> +; V04 loc1 [V04,T46] ( 6, 2.50) ref -> [sp+0x28] class-hnd exact EH-live spill-single-def <System.DirectoryServices.Protocols.BerVal>
; V05 loc2 [V05,T00] ( 66,114.02) ref -> r9 class-hnd exact single-def <System.Collections.ArrayList> ; V06 loc3 [V06,T15] ( 8, 15 ) ref -> r5 class-hnd single-def <System.DirectoryServices.Protocols.SafeBerHandle>
-; V07 loc4 [V07,T31] ( 3, 5 ) ref -> r5 class-hnd <System.Object[]> -; V08 loc5 [V08 ] ( 14, 30 ) int -> [sp+0x4C] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V07 loc4 [V07,T30] ( 3, 5 ) ref -> r5 class-hnd <System.Object[]> +; V08 loc5 [V08 ] ( 13, 28 ) int -> [sp+0x4C] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V09 loc6 [V09,T11] ( 5, 17 ) int -> r8 ; V10 loc7 [V10,T04] ( 20, 44 ) ushort -> [sp+0x48] spill-single-def ; V11 loc8 [V11 ] ( 4, 8 ) int -> [sp+0x44] do-not-enreg[X] must-init addr-exposed ld-addr-op
-; V12 loc9 [V12,T35] ( 3, 6 ) ubyte -> [sp+0x40]
+; V12 loc9 [V12,T34] ( 3, 6 ) ubyte -> [sp+0x40]
; V13 loc10 [V13,T22] ( 4, 8 ) ref -> r1 class-hnd <ubyte[]>
-; V14 loc11 [V14,T32] ( 3, 6 ) ref -> [sp+0x28] class-hnd <System.String> -; V15 loc12 [V15,T37] ( 2, 4 ) ref -> [sp+0x24] class-hnd spill-single-def <ubyte[]> -; V16 loc13 [V16,T09] ( 5, 22 ) ref -> [sp+0x20] class-hnd <<unknown class>> -; V17 loc14 [V17,T07] ( 10, 24.16) ref -> [sp+0x1C] class-hnd <<unknown class>>
+; V14 loc11 [V14,T31] ( 3, 6 ) ref -> [sp+0x24] class-hnd <System.String> +; V15 loc12 [V15,T37] ( 2, 4 ) ref -> [sp+0x20] class-hnd spill-single-def <ubyte[]> +; V16 loc13 [V16,T09] ( 5, 22 ) ref -> [sp+0x1C] class-hnd <<unknown class>> +; V17 loc14 [V17,T07] ( 10, 24.16) ref -> [sp+0x18] class-hnd <<unknown class>>
; V18 loc15 [V18,T01] ( 13, 66.32) int -> [sp+0x3C]
-; V19 loc16 [V19,T38] ( 2, 4 ) ref -> [sp+0x18] class-hnd spill-single-def <<unknown class>>
+; V19 loc16 [V19,T38] ( 2, 4 ) ref -> [sp+0x14] class-hnd spill-single-def <<unknown class>>
; V20 loc17 [V20,T10] ( 6, 20.50) int -> r7 ;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V22 tmp1 [V22,T12] ( 8, 16 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Text.UTF8Encoding>
-; V23 tmp2 [V23,T19] ( 8, 11 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.BerVal> -; V24 tmp3 [V24,T33] ( 3, 6 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ArrayList> -; V25 tmp4 [V25,T34] ( 3, 6 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.SafeBerHandle> -; V26 tmp5 [V26,T17] ( 3, 12 ) ref -> [sp+0x14] class-hnd exact spill-single-def "Single-def Box Helper" <System.Int32> -; V27 tmp6 [V27,T18] ( 3, 12 ) ref -> [sp+0x10] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>>
+; V23 tmp2 [V23,T18] ( 8, 11 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.BerVal> +; V24 tmp3 [V24,T32] ( 3, 6 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ArrayList> +; V25 tmp4 [V25,T33] ( 3, 6 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.SafeBerHandle> +; V26 tmp5 [V26,T16] ( 3, 12 ) ref -> [sp+0x10] class-hnd exact spill-single-def "Single-def Box Helper" <System.Int32> +; V27 tmp6 [V27,T17] ( 3, 12 ) ref -> [sp+0x0C] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>>
; V28 tmp7 [V28,T54] ( 3, 0 ) ref -> r4 class-hnd exact "NewObj constructor temp" <<unknown class>> ; V29 tmp8 [V29,T06] ( 4, 32 ) ref -> r1 class-hnd exact "Strict ordering of exceptions for Array store" <System.String> ;* V30 tmp9 [V30 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -50,21 +50,21 @@ ;* V39 tmp18 [V39 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V40 tmp19 [V40,T47] ( 4, 2 ) int -> r0 "Inlining Arg" ;* V41 tmp20 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V42 tmp21 [V42,T25] ( 2, 8 ) int -> r0 "Inlining Arg"
+;* V42 tmp21 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V43 tmp22 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V44 tmp23 [V44,T26] ( 2, 8 ) int -> r0 "Inlining Arg"
+; V44 tmp23 [V44,T25] ( 2, 8 ) int -> r0 "Inlining Arg"
;* V45 tmp24 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ; V46 tmp25 [V46,T39] ( 2, 4 ) int -> r0 "Inline stloc first use temp" ;* V47 tmp26 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Int32> ; V48 tmp27 [V48,T40] ( 2, 4 ) int -> r2 "Inline stloc first use temp"
-; V49 tmp28 [V49,T27] ( 2, 8 ) int -> r3 "Inlining Arg"
+; V49 tmp28 [V49,T26] ( 2, 8 ) int -> r3 "Inlining Arg"
; V50 tmp29 [V50,T41] ( 2, 4 ) int -> r2 "Inline stloc first use temp"
-; V51 tmp30 [V51,T28] ( 2, 8 ) int -> r1 "Inlining Arg"
+; V51 tmp30 [V51,T27] ( 2, 8 ) int -> r1 "Inlining Arg"
; V52 tmp31 [V52,T42] ( 2, 4 ) int -> r0 "Inline stloc first use temp"
-; V53 tmp32 [V53,T29] ( 2, 8 ) int -> r1 "Inlining Arg" -; V54 tmp33 [V54,T02] ( 6, 48 ) ref -> [sp+0x0C] class-hnd "Inlining Arg" <ubyte[]>
+; V53 tmp32 [V53,T28] ( 2, 8 ) int -> r1 "Inlining Arg" +; V54 tmp33 [V54,T02] ( 6, 48 ) ref -> [sp+0x08] class-hnd "Inlining Arg" <ubyte[]>
; V55 tmp34 [V55,T43] ( 2, 4 ) int -> r0 "Inline stloc first use temp"
-; V56 tmp35 [V56,T30] ( 2, 8 ) int -> r1 "Inlining Arg"
+; V56 tmp35 [V56,T29] ( 2, 8 ) int -> r1 "Inlining Arg"
; V57 tmp36 [V57,T44] ( 2, 4 ) int -> r1 "Inline stloc first use temp" ; V58 tmp37 [V58,T14] ( 2, 16 ) int -> r1 "Inlining Arg" ; V59 tmp38 [V59,T49] ( 2, 1 ) byref -> r1 single-def "field V33._reference (fldOffset=0x0)" P-INDEP @@ -84,8 +84,9 @@ ; V73 cse1 [V73,T05] ( 3, 39.60) ref -> r3 "CSE - aggressive" ; V74 cse2 [V74,T03] ( 4, 47.52) int -> [sp+0x38] spill-single-def "CSE - aggressive" ; V75 cse3 [V75,T08] ( 6, 24 ) int -> [sp+0x34] spill-single-def "CSE - aggressive"
-; TEMP_02 ref -> [r11-0x68] -; TEMP_01 int -> [r11-0x6C]
+; V76 cse4 [V76,T35] ( 3, 6 ) int -> [sp+0x30] spill-single-def "CSE - moderate" +; TEMP_02 ref -> [r11-0x6C] +; TEMP_01 int -> [r11-0x70]
; ; Lcl frame size = 84 @@ -96,7 +97,7 @@ G_M40673_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movs r3, 0 str r3, [sp+0x4C] // [V08 loc5] str r3, [sp+0x44] // [V11 loc8]
- str r3, [sp+0x08] // [TEMP_02]
+ str r3, [sp+0x04] // [TEMP_02]
add r3, sp, 120 str r3, [sp+0x50] // [V71 PSPSym] mov r4, r0 @@ -155,7 +156,7 @@ G_M40673_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0040 {r6}, movs r0, 0 ; gcrRegs -[r0] str r0, [r8+0x08]
- str r8, [sp+0x2C] // [V04 loc1]
+ str r8, [sp+0x28] // [V04 loc1]
; GC ptr vars +{V04} movw r0, 0xd1ff movt r0, 0xd1ff @@ -237,7 +238,7 @@ G_M40673_IG06: ; bbWeight=1, gcrefRegs=0290 {r4 r7 r9}, byrefRegs=0040 {r mov r5, r0 ; gcrRegs +[r5] mov r0, r5
- ldr r1, [sp+0x2C] // [V04 loc1]
+ ldr r1, [sp+0x28] // [V04 loc1]
; gcrRegs +[r1] movw r3, 0xd1ff movt r3, 0xd1ff @@ -247,7 +248,7 @@ G_M40673_IG06: ; bbWeight=1, gcrefRegs=0290 {r4 r7 r9}, byrefRegs=0040 {r ; gcr arg pop 0 ;; size=36 bbWeight=1 PerfScore 12.00 G_M40673_IG07: ; bbWeight=1, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
- ldr r1, [sp+0x2C] // [V04 loc1]
+ ldr r1, [sp+0x28] // [V04 loc1]
; gcrRegs +[r1] ldr r0, [r1+0x08] cmp r0, 0 @@ -264,38 +265,39 @@ G_M40673_IG08: ; bbWeight=0.50, gcrefRegs=02B2 {r1 r4 r5 r7 r9}, byrefReg ;; size=12 bbWeight=0.50 PerfScore 2.00 G_M40673_IG09: ; bbWeight=1, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz mov r8, 0
- ldr r0, [r4+0x04] - cmp r0, 0
+ ldr r3, [r4+0x04] + str r3, [sp+0x30] // [V76 cse4] + cmp r3, 0
ble G_M40673_IG49
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=14 bbWeight=1 PerfScore 5.00
G_M40673_IG10: ; bbWeight=4, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz add r0, r4, 8 ; byrRegs +[r0] lsl r1, r8, 1
- ldrh r3, [r0+r1] - str r3, [sp+0x48] // [V10 loc7] - cmp r3, 123
+ ldrh r2, [r0+r1] + str r2, [sp+0x48] // [V10 loc7] + cmp r2, 123
beq SHORT G_M40673_IG12 ;; size=16 bbWeight=4 PerfScore 24.00 G_M40673_IG11: ; bbWeight=2, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz ; byrRegs -[r0]
- cmp r3, 125
+ cmp r2, 125
beq SHORT G_M40673_IG12
- cmp r3, 91
+ cmp r2, 91
beq SHORT G_M40673_IG12
- cmp r3, 93
+ cmp r2, 93
beq SHORT G_M40673_IG12
- cmp r3, 110
+ cmp r2, 110
beq SHORT G_M40673_IG12
- cmp r3, 120
+ cmp r2, 120
bne SHORT G_M40673_IG13 ;; size=20 bbWeight=2 PerfScore 20.00 G_M40673_IG12: ; bbWeight=2, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
- mov r0, r3
+ mov r0, r2
movs r1, 1
- movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method>
+ movw r2, 0xd1ff + movt r2, 0xd1ff + blx r2 // <unknown method>
; gcrRegs +[r0] ; gcr arg pop 0 mov r1, r0 @@ -308,27 +310,24 @@ G_M40673_IG12: ; bbWeight=2, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 ; gcrRegs -[r0-r1] ; gcr arg pop 0 str r0, [sp+0x4C] // [V08 loc5]
- ldr r0, [sp+0x4C] // [V08 loc5] - cmp r0, -1 - bne G_M40673_IG48
b SHORT G_M40673_IG48
- ;; size=44 bbWeight=2 PerfScore 32.00
+ ;; size=34 bbWeight=2 PerfScore 26.00
G_M40673_IG13: ; bbWeight=2, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
- cmp r3, 105
+ cmp r2, 105
beq SHORT G_M40673_IG14
- cmp r3, 101
+ cmp r2, 101
beq SHORT G_M40673_IG14
- cmp r3, 98
+ cmp r2, 98
bne G_M40673_IG25 ;; size=14 bbWeight=2 PerfScore 12.00 G_M40673_IG14: ; bbWeight=2, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz movs r0, 0 str r0, [sp+0x44] // [V11 loc8]
- mov r0, r3
+ mov r0, r2
movs r1, 1
- movw r2, 0xd1ff - movt r2, 0xd1ff - blx r2 // <unknown method>
+ movw lr, 0xd1ff + movt lr, 0xd1ff + blx lr // <unknown method>
; gcrRegs +[r0] ; gcr arg pop 0 mov r1, r0 @@ -369,7 +368,7 @@ G_M40673_IG16: ; bbWeight=2, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 ; gcr arg pop 0 mov r3, r0 ; gcrRegs +[r3]
- str r3, [sp+0x10] // [V27 tmp6]
+ str r3, [sp+0x0C] // [V27 tmp6]
; GC ptr vars +{V27} ldr r1, [sp+0x40] // [V12 loc9] strb r1, [r3+0x04] @@ -380,9 +379,9 @@ G_M40673_IG16: ; bbWeight=2, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 cmp r1, r0 beq SHORT G_M40673_IG19 ;; size=40 bbWeight=2 PerfScore 28.00
-G_M40673_IG17: ; bbWeight=1, gcVars=0000000000040000 {V27}, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, gcvars, byref
+G_M40673_IG17: ; bbWeight=1, gcVars=0000000000020000 {V27}, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, gcvars, byref
; gcrRegs -[r3]
- ldr r3, [sp+0x10] // [V27 tmp6]
+ ldr r3, [sp+0x0C] // [V27 tmp6]
; gcrRegs +[r3] ;; size=2 bbWeight=1 PerfScore 1.00 G_M40673_IG18: ; bbWeight=2, gcrefRegs=02B8 {r3 r4 r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz @@ -406,8 +405,8 @@ G_M40673_IG18: ; bbWeight=2, gcrefRegs=02B8 {r3 r4 r5 r7 r9}, byrefRegs=0 str r0, [r9+0x08] b SHORT G_M40673_IG48 ;; size=42 bbWeight=2 PerfScore 26.00
-G_M40673_IG19: ; bbWeight=0.50, gcVars=0000000000040000 {V27}, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, gcvars, byref, isz - ; GC ptr vars +{V18 V27}
+G_M40673_IG19: ; bbWeight=0.50, gcVars=0000000000020000 {V27}, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, gcvars, byref, isz + ; GC ptr vars +{V17 V27}
ldr r1, [r9+0x08] adds r1, r1, 1 ...

+20 (+0.38%) : 184394.dasm - ILCompiler.PettisHansenSort.PettisHansen:Sort(System.Collections.Generic.List1[ILCompiler.PettisHansenSort.CallGraphNode]):System.Collections.Generic.List1[System.Collections.Generic.List`1[int]] (FullOpts)

@@ -10,7 +10,7 @@ ; ; V00 arg0 [V00,T193] ( 3, 3 ) ref -> r4 class-hnd single-def <System.Collections.Generic.List`1[ILCompiler.PettisHansenSort.CallGraphNode]> ; V01 loc0 [V01,T38] ( 19,100 ) ref -> r5 class-hnd exact single-def <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0>
-; V02 loc1 [V02,T55] ( 39, 81 ) ref -> [sp+0x2C] class-hnd exact spill-single-def <<unknown class>>
+; V02 loc1 [V02,T55] ( 39, 81 ) ref -> r6 class-hnd exact single-def <<unknown class>>
; V03 loc2 [V03,T39] ( 14, 98 ) ref -> r7 class-hnd exact single-def <System.Collections.Generic.PriorityQueue`2[System.ValueTuple`2[int,int],long]> ; V04 loc3 [V04,T187] ( 6, 5.50) ref -> r6 class-hnd single-def <System.Collections.Generic.List`1[System.Collections.Generic.List`1[int]]> ; V05 loc4 [V05,T159] ( 3, 9 ) int -> r5 @@ -42,7 +42,7 @@ ; V31 loc30 [V31,T04] ( 12,402 ) int -> r8 ; V32 loc31 [V32 ] ( 8,224 ) struct (32) [sp+0x198] do-not-enreg[XS] must-init addr-exposed ld-addr-op double-align <System.Collections.Generic.Dictionary`2+Enumerator[int,long]> ;* V33 loc32 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op double-align <System.Collections.Generic.KeyValuePair`2[int,long]>
-; V34 loc33 [V34,T157] ( 7, 10 ) ref -> [sp+0x28] class-hnd EH-live single-def <<unknown class>>
+; V34 loc33 [V34,T157] ( 7, 10 ) ref -> [sp+0x24] class-hnd EH-live single-def <<unknown class>>
; V35 loc34 [V35,T109] ( 5, 20 ) ref -> r4 class-hnd <System.Collections.Generic.List`1[int]> ; V36 OutArgs [V36 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V37 tmp1 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0> @@ -63,14 +63,14 @@ ; V52 tmp16 [V52,T184] ( 3, 6 ) int -> r8 ; V53 tmp17 [V53,T162] ( 2, 8 ) ref -> r9 class-hnd exact "impAppendStmt" <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0> ;* V54 tmp18 [V54 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V55 tmp19 [V55,T163] ( 2, 8 ) ref -> [sp+0x24] class-hnd exact spill-single-def "impAppendStmt" <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0>
+; V55 tmp19 [V55,T163] ( 2, 8 ) ref -> [sp+0x20] class-hnd exact spill-single-def "impAppendStmt" <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0>
;* V56 tmp20 [V56 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V57 tmp21 [V57,T164] ( 2, 8 ) ref -> [sp+0x20] class-hnd exact spill-single-def "impAppendStmt" <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0>
+; V57 tmp21 [V57,T164] ( 2, 8 ) ref -> [sp+0x1C] class-hnd exact spill-single-def "impAppendStmt" <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0>
;* V58 tmp22 [V58 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V59 tmp23 [V59,T165] ( 2, 8 ) ref -> [sp+0x1C] class-hnd exact spill-single-def "impAppendStmt" <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0>
+; V59 tmp23 [V59,T165] ( 2, 8 ) ref -> [sp+0x18] class-hnd exact spill-single-def "impAppendStmt" <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0>
;* V60 tmp24 [V60 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V61 tmp25 [V61,T185] ( 3, 6 ) int -> r0
-; V62 tmp26 [V62,T111] ( 4, 16 ) ref -> [sp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V62 tmp26 [V62,T111] ( 4, 16 ) ref -> [sp+0x14] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
; V63 tmp27 [V63,T166] ( 2, 8 ) ref -> r2 class-hnd "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,long]> ;* V64 tmp28 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> ;* V65 tmp29 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0> @@ -151,8 +151,8 @@ ;* V140 tmp104 [V140 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V141 tmp105 [V141 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V142 tmp106 [V142,T69] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V143 tmp107 [V143,T60] ( 2, 72 ) ref -> [sp+0x14] class-hnd spill-single-def "Inline stloc first use temp" <System.Collections.Generic.IComparer`1[long]> -; V144 tmp108 [V144,T23] ( 6,216 ) ref -> [sp+0x10] class-hnd exact spill-single-def "Inline stloc first use temp" <System.ValueTuple`2[System.ValueTuple`2[int,int],long][]>
+; V143 tmp107 [V143,T60] ( 2, 72 ) ref -> [sp+0x10] class-hnd spill-single-def "Inline stloc first use temp" <System.Collections.Generic.IComparer`1[long]> +; V144 tmp108 [V144,T23] ( 6,216 ) ref -> [sp+0x0C] class-hnd exact spill-single-def "Inline stloc first use temp" <System.ValueTuple`2[System.ValueTuple`2[int,int],long][]>
; V145 tmp109 [V145,T01] ( 9,704 ) int -> [sp+0x114] "Inlining Arg" ; V146 tmp110 [V146,T21] ( 4,256 ) int -> [sp+0x110] spill-single-def "Inline stloc first use temp" ; V147 tmp111 [V147,T32] ( 2,128 ) struct (16) [sp+0x100] do-not-enreg[SF] double-align "Inline stloc first use temp" <System.ValueTuple`2[System.ValueTuple`2[int,int],long]> @@ -365,19 +365,19 @@ ; V354 rat28 [V354,T35] ( 2,128 ) int -> r3 "field V198.lo (fldOffset=0x0)" P-INDEP ; V355 rat29 [V355,T36] ( 2,128 ) int -> r0 "field V198.hi (fldOffset=0x4)" P-INDEP ; V356 rat30 [V356,T24] ( 4,204.08) int -> r8 "field V259.lo (fldOffset=0x0)" P-INDEP
-; V357 rat31 [V357,T25] ( 4,204.08) int -> r1 "field V259.hi (fldOffset=0x4)" P-INDEP
+; V357 rat31 [V357,T25] ( 3,192 ) int -> r1 "field V259.hi (fldOffset=0x4)" P-INDEP
; V358 rat32 [V358,T53] ( 4, 92.08) int -> r9 "field V260.lo (fldOffset=0x0)" P-INDEP
-; V359 rat33 [V359,T54] ( 4, 92.08) int -> r3 "field V260.hi (fldOffset=0x4)" P-INDEP -; V360 rat34 [V360,T28] ( 3,192 ) int -> r8 "field V263.lo (fldOffset=0x0)" P-INDEP -; V361 rat35 [V361,T29] ( 3,192 ) int -> r6 "field V263.hi (fldOffset=0x4)" P-INDEP
+; V359 rat33 [V359,T54] ( 3, 80 ) int -> [sp+0x30] spill-single-def "field V260.hi (fldOffset=0x4)" P-INDEP +; V360 rat34 [V360,T28] ( 3,192 ) int -> [sp+0x2C] spill-single-def "field V263.lo (fldOffset=0x0)" P-INDEP +; V361 rat35 [V361,T29] ( 3,192 ) int -> r8 "field V263.hi (fldOffset=0x4)" P-INDEP
; V362 rat36 [V362,T58] ( 3, 80 ) int -> r9 "field V264.lo (fldOffset=0x0)" P-INDEP
-; V363 rat37 [V363,T59] ( 3, 80 ) int -> [sp+0x30] spill-single-def "field V264.hi (fldOffset=0x4)" P-INDEP
+; V363 rat37 [V363,T59] ( 3, 80 ) int -> [sp+0x28] spill-single-def "field V264.hi (fldOffset=0x4)" P-INDEP
; V364 rat38 [V364,T49] ( 3, 96 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable" ; V365 rat39 [V365,T50] ( 3, 96 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable" ; V366 rat40 [V366,T13] ( 3,384 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" ; V367 rat41 [V367,T14] ( 3,384 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable" ; V368 rat42 [V368,T79] ( 3, 48 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
-; V369 rat43 [V369,T15] ( 3,384 ) byref -> r6 "ReplaceWithLclVar is creating a new local variable"
+; V369 rat43 [V369,T15] ( 3,384 ) byref -> r8 "ReplaceWithLclVar is creating a new local variable"
; V370 rat44 [V370,T16] ( 3,384 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable" ; V371 rat45 [V371,T80] ( 3, 48 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable" ; V372 rat46 [V372,T144] ( 3, 12 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable" @@ -385,7 +385,7 @@ ; V374 rat48 [V374,T51] ( 3, 96 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable" ; V375 rat49 [V375,T17] ( 3,384 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable" ; V376 rat50 [V376,T18] ( 3,384 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; TEMP_01 ref -> [r11-0x274]
+; TEMP_01 ref -> [r11-0x278]
; ; Lcl frame size = 612 @@ -393,19 +393,18 @@ G_M55398_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push {r4,r5,r6,r7,r8,r9,r10,r11,lr} sub sp, sp, 612 add r11, sp, 640
- sub r3, r11, 628 - movs r4, 74
+ sub r3, r11, 632 + movs r4, 75
movs r1, 0 movs r2, 0 stm r3!, {r1,r2} subs r4, 1 bhi SHORT pc-6 (-3 instructions)
- str r1, [r3]
add r1, sp, 648 str r1, [sp+0x260] // [V319 PSPSym] mov r4, r0 ; gcrRegs +[r4]
- ;; size=36 bbWeight=1 PerfScore 14.00
+ ;; size=34 bbWeight=1 PerfScore 13.00
G_M55398_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz movw r0, 0xd1ff movt r0, 0xd1ff @@ -468,8 +467,6 @@ G_M55398_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ; gcr arg pop 0 mov r6, r0 ; gcrRegs +[r6]
- str r6, [sp+0x2C] - ; GC ptr vars +{V02}
mov r1, r4 movw r0, 0xd1ff ; gcrRegs -[r0] @@ -479,11 +476,11 @@ G_M55398_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre blx r3 // CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[r0] ; gcr arg pop 0
- str r0, [sp+0x0C]
+ str r0, [sp+0x08]
adds r0, r5, 4 ; gcrRegs -[r0] ; byrRegs +[r0]
- ldr r1, [sp+0x0C]
+ ldr r1, [sp+0x08]
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff @@ -494,17 +491,17 @@ G_M55398_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ldr r0, [r6+0x04] cmp r0, 0 ble SHORT G_M55398_IG07
- ;; size=162 bbWeight=1 PerfScore 55.00
+ ;; size=160 bbWeight=1 PerfScore 54.00
G_M55398_IG03: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz ldr r0, [r5+0x08] ; gcrRegs +[r0] ldr r3, [r0+0x08] cmp r4, r3
- bhs G_M55398_IG99
+ bhs G_M55398_IG94
ldr r0, [r0+0x04] ldr r3, [r0+0x04] cmp r4, r3
- bhs G_M55398_IG97
+ bhs G_M55398_IG92
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -530,11 +527,11 @@ G_M55398_IG03: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b blx r3 // CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[r0] ; gcr arg pop 0
- str r0, [sp+0x0C]
+ str r0, [sp+0x08]
add r0, r8, 4 ; gcrRegs -[r0] ; byrRegs +[r0]
- ldr r1, [sp+0x0C]
+ ldr r1, [sp+0x08]
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff @@ -636,11 +633,11 @@ G_M55398_IG08: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b ; gcrRegs +[r0] ldr r3, [r0+0x08] cmp r4, r3
- bhs G_M55398_IG99
+ bhs G_M55398_IG94
ldr r0, [r0+0x04] ldr r3, [r0+0x04] cmp r4, r3
- bhs G_M55398_IG97
+ bhs G_M55398_IG92
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -757,14 +754,14 @@ G_M55398_IG11: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b movs r7, 0 ldr r0, [r6+0x04] cmp r0, 0
- ble G_M55398_IG27
+ ble G_M55398_IG17
;; size=10 bbWeight=1 PerfScore 4.00 G_M55398_IG12: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz ldr r0, [r5+0x04] ; gcrRegs +[r0] ldr r3, [r0+0x04] cmp r7, r3
- bhs G_M55398_IG97
+ bhs G_M55398_IG92
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -824,7 +821,7 @@ G_M55398_IG13: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, ; gcrRegs +[r0] ldr r1, [r0+0x04] cmp r8, r1
- bhs G_M55398_IG97
+ bhs G_M55398_IG92
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -842,7 +839,7 @@ G_M55398_IG13: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, ; byrRegs +[r0] ; gcr arg pop 0 cmp r0, 0
- beq G_M55398_IG100
+ beq G_M55398_IG95
ldr r4, [r0] ldr r9, [r0+0x04] ldr r0, [r5+0x04] @@ -850,7 +847,7 @@ G_M55398_IG13: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, ; byrRegs -[r0] ldr r1, [r0+0x04] cmp r7, r1
- bhs G_M55398_IG97
+ bhs G_M55398_IG92
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -868,7 +865,7 @@ G_M55398_IG13: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, ; byrRegs +[r0] ; gcr arg pop 0 cmp r0, 0
- beq G_M55398_IG101
+ beq G_M55398_IG96
ldr r3, [r0] ldr r0, [r0+0x04] ; byrRegs -[r0] @@ -901,10 +898,9 @@ G_M55398_IG16: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b adds r7, r7, 1 ldr r0, [r6+0x04] cmp r0, r7
- bgt G_M55398_IG26
+ bgt G_M55398_IG12
;; size=10 bbWeight=4 PerfScore 16.00
-G_M55398_IG17: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref - ; gcrRegs -[r6]
+G_M55398_IG17: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -943,21 +939,21 @@ G_M55398_IG17: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre movs r0, 0 str r0, [r7+0x08] ;; size=86 bbWeight=1 PerfScore 27.00
-G_M55398_IG18: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M55398_IG18: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
...

+10 (+0.45%) : 135472.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)

@@ -94,7 +94,7 @@ ; V83 tmp66 [V83,T56] ( 5, 2.50) ref -> r3 ; V84 tmp67 [V84,T32] ( 5, 5 ) ref -> [sp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> ; V85 tmp68 [V85,T49] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V86 tmp69 [V86,T115] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V86 tmp69 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V87 tmp70 [V87,T85] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp" ;* V88 tmp71 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.DiagnosticInfo> ;* V89 tmp72 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>> @@ -170,7 +170,7 @@ ; V159 tmp142 [V159,T62] ( 3, 2 ) int -> r2 ;* V160 tmp143 [V160 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V161 tmp144 [V161,T75] ( 2, 2 ) ubyte -> r0 "Inline return value spill temp"
-;* V162 tmp145 [V162,T116] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V162 tmp145 [V162,T115] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
; V163 tmp146 [V163,T98] ( 2, 1 ) ubyte -> r2 "Inline return value spill temp" ;* V164 tmp147 [V164 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V165 tmp148 [V165 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -198,7 +198,7 @@ ;* V187 tmp170 [V187 ] ( 0, 0 ) ref -> zero-ref "field V20.array (fldOffset=0x0)" P-INDEP ;* V188 tmp171 [V188 ] ( 0, 0 ) ref -> zero-ref single-def "field V24.array (fldOffset=0x0)" P-INDEP ; V189 tmp172 [V189,T93] ( 2, 1 ) ref -> r10 single-def "field V25._array (fldOffset=0x0)" P-INDEP
-;* V190 tmp173 [V190,T117] ( 0, 0 ) int -> zero-ref single-def "field V25._index (fldOffset=0x4)" P-INDEP
+;* V190 tmp173 [V190,T116] ( 0, 0 ) int -> zero-ref single-def "field V25._index (fldOffset=0x4)" P-INDEP
;* V191 tmp174 [V191 ] ( 0, 0 ) ref -> zero-ref single-def "field V54._nodeOrParent (fldOffset=0x0)" P-INDEP ;* V192 tmp175 [V192 ] ( 0, 0 ) ref -> zero-ref single-def "field V54._token (fldOffset=0x4)" P-INDEP ;* V193 tmp176 [V193 ] ( 0, 0 ) int -> zero-ref single-def "field V54._position (fldOffset=0x8)" P-INDEP @@ -242,8 +242,8 @@ ; V231 tmp214 [V231,T87] ( 3, 1.50) int -> [sp+0x4C] "V52.[012..016)" ;* V232 tmp215 [V232,T113] ( 0, 0 ) ref -> zero-ref single-def "V67.[000..004)" ;* V233 tmp216 [V233,T114] ( 0, 0 ) ref -> zero-ref single-def "V67.[004..008)"
-;* V234 tmp217 [V234,T118] ( 0, 0 ) int -> zero-ref single-def "V67.[008..012)" -;* V235 tmp218 [V235,T119] ( 0, 0 ) int -> zero-ref single-def "V67.[012..016)"
+;* V234 tmp217 [V234,T117] ( 0, 0 ) int -> zero-ref single-def "V67.[008..012)" +;* V235 tmp218 [V235,T118] ( 0, 0 ) int -> zero-ref single-def "V67.[012..016)"
;* V236 tmp219 [V236 ] ( 0, 0 ) ref -> zero-ref single-def "V55.[000..004)" ;* V237 tmp220 [V237 ] ( 0, 0 ) ref -> zero-ref single-def "V55.[004..008)" ;* V238 tmp221 [V238 ] ( 0, 0 ) int -> zero-ref single-def "V55.[008..012)" @@ -259,7 +259,7 @@ ; V248 tmp231 [V248,T72] ( 2, 2 ) ref -> r0 single-def "argument with side effect" ; V249 tmp232 [V249,T53] ( 3, 3 ) ref -> r0 single-def "argument with side effect" ; V250 tmp233 [V250,T73] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-;* V251 cse0 [V251,T120] ( 0, 0 ) int -> zero-ref "CSE - conservative"
+;* V251 cse0 [V251,T119] ( 0, 0 ) int -> zero-ref "CSE - conservative"
; V252 cse1 [V252,T54] ( 3, 3 ) int -> r6 "CSE - conservative" ; V253 cse2 [V253,T20] ( 5, 7.50) int -> r8 "CSE - moderate" ; V254 cse3 [V254,T26] ( 3, 6 ) ref -> r1 "CSE - moderate" @@ -319,7 +319,7 @@ G_M20504_IG03: ; bbWeight=0.50, gcrefRegs=00E2 {r1 r5 r6 r7}, byrefRegs=0 ; gcrRegs -[r1] mov r4, r0 ; gcrRegs +[r4]
- b SHORT G_M20504_IG31
+ b SHORT G_M20504_IG32
;; size=36 bbWeight=0.50 PerfScore 7.00 G_M20504_IG04: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0 r4] @@ -574,11 +574,11 @@ G_M20504_IG18: ; bbWeight=0.50, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefReg ldr r0, [r4+0x20] ; gcrRegs +[r0] cmp r0, 0
- beq G_M20504_IG55
+ beq G_M20504_IG56
ldr r1, [r0+0x04] ; gcrRegs +[r1] cmp r1, 0
- bne G_M20504_IG54
+ bne G_M20504_IG55
adds r0, r0, 4 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -588,7 +588,7 @@ G_M20504_IG18: ; bbWeight=0.50, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefReg blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1 r4] ; byrRegs -[r0]
- b SHORT G_M20504_IG55
+ b SHORT G_M20504_IG56
;; size=50 bbWeight=0.50 PerfScore 9.00 G_M20504_IG19: ; bbWeight=1.00, gcVars=00000000000000000000000200040004 {V03 V28 V29}, gcrefRegs=0678 {r3 r4 r5 r6 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r7] +[r3-r4 r10] @@ -613,22 +613,20 @@ G_M20504_IG22: ; bbWeight=0.50, gcVars=00000000400240000000000002000000 { ; gcrRegs -[r10] ; byrRegs -[r0 r3] ; GC ptr vars -{V03 V05 V28 V29 V33 V34} +{V57 V59 V78 V94 V213 V214}
- ldr r12, [sp+0x30] - ; gcrRegs +[r12] - ldr r0, [r12+0x08] - ; gcrRegs +[r0]
cmp r0, 0
- beq SHORT G_M20504_IG29 - mov r3, r12 - ; gcrRegs +[r3]
+ bne SHORT G_M20504_IG30
ldr r2, [sp+0x10] // [V214 tmp197] ; gcrRegs +[r2]
+ ldr r3, [sp+0x30] // [V57 tmp40] + ; gcrRegs +[r3]
ldr r10, [sp+0x14] // [V213 tmp196] ; gcrRegs +[r10]
+ str r10, [sp+0x14] // [V213 tmp196] + str r2, [sp+0x10] // [V214 tmp197]
b SHORT G_M20504_IG24
- ;; size=22 bbWeight=0.50 PerfScore 4.00
+ ;; size=20 bbWeight=0.50 PerfScore 4.00
G_M20504_IG23: ; bbWeight=0.00, gcVars=00000000000000000000000000040024 {V28 V29 V34}, gcrefRegs=06F8 {r3 r4 r5 r6 r7 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0 r2 r12]
+ ; gcrRegs -[r2]
; GC ptr vars -{V57 V59 V78 V94 V213 V214} +{V02 V05 V28 V29 V34} str r7, [sp+0x48] // [V03 arg3] ; GC ptr vars +{V03} @@ -665,16 +663,26 @@ G_M20504_IG23: ; bbWeight=0.00, gcVars=00000000000000000000000000040024 { ; gcrRegs +[r7] b SHORT G_M20504_IG16 ;; size=54 bbWeight=0.00 PerfScore 0.02
-G_M20504_IG24: ; bbWeight=0.50, gcVars=00000000000040000000000002000000 {V57 V59}, gcrefRegs=06FD {r0 r2 r3 r4 r5 r6 r7 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M20504_IG24: ; bbWeight=0.50, gcVars=00000000400240000000000002000000 {V57 V59 V213 V214}, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r2-r3 r10] + ; GC ptr vars -{V03 V28 V29} +{V57 V59 V78 V94 V213 V214} + ldr r12, [sp+0x30] + ; gcrRegs +[r12] + ldr r0, [r12+0x08]
; gcrRegs +[r0]
- ; GC ptr vars -{V03 V28 V29} +{V57 V59 V78} - cmp r10, 0 - beq SHORT G_M20504_IG28
+ cmp r0, 0 + beq SHORT G_M20504_IG30 + mov r3, r12 + ; gcrRegs +[r3] + ldr r2, [sp+0x10] // [V214 tmp197] + ; gcrRegs +[r2] + ldr r10, [sp+0x14] // [V213 tmp196] + ; gcrRegs +[r10]
b SHORT G_M20504_IG26
- ;; size=8 bbWeight=0.50 PerfScore 1.50
+ ;; size=22 bbWeight=0.50 PerfScore 4.00
G_M20504_IG25: ; bbWeight=0.39, gcVars=00000000000000000000000000040004 {V28 V29}, gcrefRegs=06FC {r2 r3 r4 r5 r6 r7 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0] - ; GC ptr vars -{V57 V59 V78} +{V02 V28 V29}
+ ; gcrRegs -[r0 r12] + ; GC ptr vars -{V57 V59 V78 V94 V213 V214} +{V02 V28 V29}
mov r0, lr ldr lr, [sp+0x80] // [V30 tmp13] b SHORT G_M20504_IG08 @@ -682,6 +690,27 @@ G_M20504_IG25: ; bbWeight=0.39, gcVars=00000000000000000000000000040004 { G_M20504_IG26: ; bbWeight=0.50, gcVars=00000000000040000000000002000000 {V57 V59}, gcrefRegs=06FD {r0 r2 r3 r4 r5 r6 r7 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[r0] ; GC ptr vars -{V02 V28 V29} +{V57 V59 V78}
+ cmp r10, 0 + beq SHORT G_M20504_IG29 + b SHORT G_M20504_IG28 + ;; size=8 bbWeight=0.50 PerfScore 1.50 +G_M20504_IG27: ; bbWeight=0.00, gcVars=00000000000000000000000200040024 {V03 V28 V29 V34}, gcrefRegs=06F0 {r4 r5 r6 r7 r9 r10}, byrefRegs=0009 {r0 r3}, gcvars, byref, isz + ; gcrRegs -[r0 r2-r3] + ; byrRegs +[r0 r3] + ; GC ptr vars -{V57 V59 V78} +{V02 V03 V05 V28 V29 V33 V34} + mov r1, r3 + ; byrRegs +[r1] + movw r3, 0xd1ff + ; byrRegs -[r3] + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; byrRegs -[r0-r1] + b SHORT G_M20504_IG14 + ;; size=16 bbWeight=0.00 PerfScore 0.00 +G_M20504_IG28: ; bbWeight=0.50, gcVars=00000000000040000000000002000000 {V57 V59}, gcrefRegs=06FD {r0 r2 r3 r4 r5 r6 r7 r9 r10}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[r0 r2-r3] + ; GC ptr vars -{V02 V03 V05 V28 V29 V33 V34} +{V57 V59 V78}
str r2, [sp+0x10] // [V214 tmp197] ; GC ptr vars +{V214} mov r1, r10 @@ -699,25 +728,9 @@ G_M20504_IG26: ; bbWeight=0.50, gcVars=00000000000040000000000002000000 { ; gcrRegs +[r3] ldr r4, [sp+0x2C] // [V59 tmp42] ; gcrRegs +[r4]
- b SHORT G_M20504_IG28 - ;; size=26 bbWeight=0.50 PerfScore 5.00 -G_M20504_IG27: ; bbWeight=0.00, gcVars=00000000000000000000000200040024 {V03 V28 V29 V34}, gcrefRegs=06F0 {r4 r5 r6 r7 r9 r10}, byrefRegs=0009 {r0 r3}, gcvars, byref, isz - ; gcrRegs -[r2-r3] +[r10] - ; byrRegs +[r0 r3] - ; GC ptr vars -{V57 V59 V214} +{V02 V03 V05 V28 V29 V33 V34} - mov r1, r3 - ; byrRegs +[r1] - movw r3, 0xd1ff - ; byrRegs -[r3] - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; byrRegs -[r0-r1] - b SHORT G_M20504_IG14 - ;; size=16 bbWeight=0.00 PerfScore 0.00 -G_M20504_IG28: ; bbWeight=0.50, gcVars=00000000000040000000000002000000 {V57 V59}, gcrefRegs=02FC {r2 r3 r4 r5 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r10] +[r2-r3] - ; GC ptr vars -{V02 V03 V05 V28 V29 V33 V34} +{V57 V59 V78}
+ ;; size=24 bbWeight=0.50 PerfScore 4.50 +G_M20504_IG29: ; bbWeight=0.50, gcVars=00000000000040000000000002000000 {V57 V59}, gcrefRegs=02FC {r2 r3 r4 r5 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars -{V214}
mov r0, r3 ; gcrRegs +[r0] mov r1, r2 @@ -726,11 +739,11 @@ G_M20504_IG28: ; bbWeight=0.50, gcVars=00000000000040000000000002000000 { ; gcrRegs -[r3] movt r3, 0xd1ff ldr r3, [r3]
- ; GC ptr vars -{V57 V78}
+ ; GC ptr vars -{V57}
blx r3 // <unknown method> ; gcrRegs -[r0-r2] ;; size=16 bbWeight=0.50 PerfScore 3.00
-G_M20504_IG29: ; bbWeight=0.50, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefRegs=0000 {}, byref
+G_M20504_IG30: ; bbWeight=0.50, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefRegs=0000 {}, byref
ldr r0, [r9+0x04] ; gcrRegs +[r0] ldrsb r3, [r0] @@ -752,7 +765,7 @@ G_M20504_IG29: ; bbWeight=0.50, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefReg mov r4, r0 ; gcrRegs +[r4] ;; size=40 bbWeight=0.50 PerfScore 7.00
-G_M20504_IG30: ; bbWeight=0.50, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefRegs=0000 {}, byref
+G_M20504_IG31: ; bbWeight=0.50, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] mov r0, r9 ; gcrRegs +[r0] @@ -762,7 +775,7 @@ G_M20504_IG30: ; bbWeight=0.50, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefReg blx r3 // Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon]:Free():this ; gcrRegs -[r0 r9] ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M20504_IG31: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M20504_IG32: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r9, [r5+0x08] ; gcrRegs +[r9] movw r0, 0xd1ff @@ -938,15 +951,15 @@ G_M20504_IG31: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 ; byrRegs -[r0] uxtb r1, r2 cmp r1, 0
- beq SHORT G_M20504_IG33
+ beq SHORT G_M20504_IG34
;; size=344 bbWeight=1 PerfScore 117.00
-G_M20504_IG32: ; bbWeight=0.50, gcrefRegs=06B0 {r4 r5 r7 r9 r10}, byrefRegs=0000 {}, byref
+G_M20504_IG33: ; bbWeight=0.50, gcrefRegs=06B0 {r4 r5 r7 r9 r10}, byrefRegs=0000 {}, byref
movs r1, 1 ldr r8, [sp+0x20] ; gcrRegs +[r8] strb r1, [r8+0x09] ;; size=10 bbWeight=0.50 PerfScore 1.50
-G_M20504_IG33: ; bbWeight=1, gcrefRegs=06B0 {r4 r5 r7 r9 r10}, byrefRegs=0000 {}, byref
+G_M20504_IG34: ; bbWeight=1, gcrefRegs=06B0 {r4 r5 r7 r9 r10}, byrefRegs=0000 {}, byref
; gcrRegs -[r8] ldr r8, [sp+0x20] ...

libraries_tests.run.linux.arm.Release.mch

-12 (-35.29%) : 322301.dasm - System.ArgumentOutOfRangeException:ThrowIfLessThanint (Tier1)

@@ -3,49 +3,42 @@ ; Tier1 code ; optimized code ; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; partially interruptible ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 117 ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 3 ) int -> r0 ld-addr-op single-def -; V01 arg1 [V01,T01] ( 5, 3 ) int -> r1 single-def
+; V00 arg0 [V00,T00] ( 4, 3 ) int -> r0 ld-addr-op single-def +; V01 arg1 [V01,T01] ( 4, 3 ) int -> r1 single-def
; V02 arg2 [V02,T02] ( 3, 2 ) ref -> r2 class-hnd single-def <System.String> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04,T03] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M40926_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00
G_M40926_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r2] cmp r0, r1
- blt SHORT G_M40926_IG04
+ bge SHORT G_M40926_IG04
;; size=4 bbWeight=1 PerfScore 2.00
-G_M40926_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r2] - cmp r0, r1 - ble SHORT G_M40926_IG05 - b SHORT G_M40926_IG05 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M40926_IG04: ; bbWeight=0, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref - ; gcrRegs +[r2]
+G_M40926_IG03: ; bbWeight=0, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String) ; gcrRegs -[r2]
+ ; gcr arg pop 0
bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-G_M40926_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r11,pc} - ;; size=4 bbWeight=0 PerfScore 0.00
+G_M40926_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r3,pc} + ;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 34, prolog size 6, PerfScore 4.00, instruction count 13, allocated bytes for code 34 (MethodHash=63ec6021) for method System.ArgumentOutOfRangeException:ThrowIfLessThan[int](int,int,System.String) (Tier1)
+; Total bytes of code 22, prolog size 2, PerfScore 3.00, instruction count 9, allocated bytes for code 22 (MethodHash=63ec6021) for method System.ArgumentOutOfRangeException:ThrowIfLessThan[int](int,int,System.String) (Tier1)
; ============================================================ Unwind Info: @@ -57,11 +50,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 34 (0x000022)
+ Function Length : 11 (0x0000b) Actual length = 22 (0x000016)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-12 (-35.29%) : 264664.dasm - System.ArgumentOutOfRangeException:ThrowIfGreaterThanOrEqualint (Tier1)

@@ -3,51 +3,42 @@ ; Tier1 code ; optimized code ; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; partially interruptible ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 299 ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 3.88) int -> r0 ld-addr-op single-def -; V01 arg1 [V01,T01] ( 5, 3.88) int -> r1 single-def
+; V00 arg0 [V00,T00] ( 4, 3 ) int -> r0 ld-addr-op single-def +; V01 arg1 [V01,T01] ( 4, 3 ) int -> r1 single-def
; V02 arg2 [V02,T02] ( 3, 2 ) ref -> r2 class-hnd single-def <System.String> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04,T03] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M34388_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00
G_M34388_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r2] cmp r0, r1
- blt SHORT G_M34388_IG05
+ bge SHORT G_M34388_IG04
;; size=4 bbWeight=1 PerfScore 2.00
-G_M34388_IG03: ; bbWeight=0.88, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz - cmp r0, r1 - bgt SHORT G_M34388_IG06 - ;; size=4 bbWeight=0.88 PerfScore 1.76 -G_M34388_IG04: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz - b SHORT G_M34388_IG06
+G_M34388_IG03: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M34388_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[r2] - pop {r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M34388_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[r2]
+G_M34388_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.ArgumentOutOfRangeException:ThrowGreaterEqual[int](int,int,System.String) ; gcrRegs -[r2]
+ ; gcr arg pop 0
bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 34, prolog size 6, PerfScore 7.76, instruction count 13, allocated bytes for code 34 (MethodHash=fe1b79ab) for method System.ArgumentOutOfRangeException:ThrowIfGreaterThanOrEqual[int](int,int,System.String) (Tier1)
+; Total bytes of code 22, prolog size 2, PerfScore 4.00, instruction count 9, allocated bytes for code 22 (MethodHash=fe1b79ab) for method System.ArgumentOutOfRangeException:ThrowIfGreaterThanOrEqual[int](int,int,System.String) (Tier1)
; ============================================================ Unwind Info: @@ -59,7 +50,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 34 (0x000022)
+ Function Length : 11 (0x0000b) Actual length = 22 (0x000016)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -67,7 +58,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-12 (-35.29%) : 556220.dasm - System.ArgumentOutOfRangeException:ThrowIfLessThanint (Tier1)

@@ -3,49 +3,42 @@ ; Tier1 code ; optimized code ; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; partially interruptible ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 4 ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 3 ) int -> r0 ld-addr-op single-def -; V01 arg1 [V01,T01] ( 5, 3 ) int -> r1 single-def
+; V00 arg0 [V00,T00] ( 4, 3 ) int -> r0 ld-addr-op single-def +; V01 arg1 [V01,T01] ( 4, 3 ) int -> r1 single-def
; V02 arg2 [V02,T02] ( 3, 2 ) ref -> r2 class-hnd single-def <System.String> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04,T03] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M40926_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00
G_M40926_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r2] cmp r0, r1
- blt SHORT G_M40926_IG04
+ bge SHORT G_M40926_IG04
;; size=4 bbWeight=1 PerfScore 2.00
-G_M40926_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r2] - cmp r0, r1 - ble SHORT G_M40926_IG05 - b SHORT G_M40926_IG05 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M40926_IG04: ; bbWeight=0, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref - ; gcrRegs +[r2]
+G_M40926_IG03: ; bbWeight=0, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String) ; gcrRegs -[r2]
+ ; gcr arg pop 0
bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-G_M40926_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r11,pc} - ;; size=4 bbWeight=0 PerfScore 0.00
+G_M40926_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r3,pc} + ;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 34, prolog size 6, PerfScore 4.00, instruction count 13, allocated bytes for code 34 (MethodHash=63ec6021) for method System.ArgumentOutOfRangeException:ThrowIfLessThan[int](int,int,System.String) (Tier1)
+; Total bytes of code 22, prolog size 2, PerfScore 3.00, instruction count 9, allocated bytes for code 22 (MethodHash=63ec6021) for method System.ArgumentOutOfRangeException:ThrowIfLessThan[int](int,int,System.String) (Tier1)
; ============================================================ Unwind Info: @@ -57,11 +50,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 34 (0x000022)
+ Function Length : 11 (0x0000b) Actual length = 22 (0x000016)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

+10 (+1.37%) : 567282.dasm - System.IO.BinaryReader:InternalRead(System.Span1[ubyte]):System.ReadOnlySpan1[ubyte]:this (Tier1)

@@ -13,11 +13,11 @@ ; V01 RetBuf [V01,T10] ( 6, 4 ) byref -> r5 single-def ; V02 arg1 [V02,T12] ( 4, 4 ) struct ( 8) [sp+0x30] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T31] ( 8, 0 ) ref -> r6 class-hnd single-def "updating class info" <System.IO.MemoryStream>
+; V04 tmp1 [V04,T31] ( 8, 0 ) ref -> r9 class-hnd single-def "updating class info" <System.IO.MemoryStream>
;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V06 tmp3 [V06,T32] ( 6, 0 ) int -> r8 "Inline stloc first use temp" ;* V07 tmp4 [V07 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V08 tmp5 [V08,T35] ( 3, 0 ) int -> r9 "Inline stloc first use temp"
+; V08 tmp5 [V08,T35] ( 3, 0 ) int -> r6 "Inline stloc first use temp"
;* V09 tmp6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ubyte]> ; V10 tmp7 [V10,T33] ( 5, 0 ) ref -> r3 class-hnd single-def "Inlining Arg" <ubyte[]> ; V11 tmp8 [V11,T02] ( 18, 17.02) ref -> r8 class-hnd single-def "Inlining Arg" <System.IO.Stream> @@ -41,7 +41,7 @@ ; V29 tmp26 [V29,T14] ( 6, 5.48) int -> r4 "Inlining Arg" ;* V30 tmp27 [V30 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V31 tmp28 [V31,T01] ( 9, 20.08) ref -> r12 class-hnd "Inlining Arg" <ubyte[]>
-; V32 tmp29 [V32,T00] ( 9, 26.00) int -> lr "Inlining Arg"
+; V32 tmp29 [V32,T00] ( 8, 26.00) int -> lr "Inlining Arg"
;* V33 tmp30 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V34 tmp31 [V34 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V35 tmp32 [V35 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -108,10 +108,10 @@ G_M7485_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byr G_M7485_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0060 {r5 r6}, byref, isz ldrb r0, [r4+0x19] cmp r0, 0
- bne G_M7485_IG33
+ bne G_M7485_IG35
ldrb r0, [r4+0x1B] cmp r0, 0
- bne G_M7485_IG40
+ bne G_M7485_IG42
ldr r8, [r4+0x04] ; gcrRegs +[r8] ldrsb r0, [r8] @@ -132,11 +132,11 @@ G_M7485_IG04: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0060 {r5 r6 movw r3, 0xd1ff movt r3, 0xd1ff cmp r0, r3
- bne SHORT G_M7485_IG17
+ bne SHORT G_M7485_IG20
;; size=16 bbWeight=0.50 PerfScore 2.50 G_M7485_IG05: ; bbWeight=0.99, gcrefRegs=0100 {r8}, byrefRegs=0060 {r5 r6}, byref, isz cmp r10, r9
- bhi G_M7485_IG32
+ bhi G_M7485_IG33
add r4, r6, r10 ; byrRegs +[r4] sub r3, r9, r10 @@ -164,36 +164,36 @@ G_M7485_IG07: ; bbWeight=0.99, gcrefRegs=0100 {r8}, byrefRegs=0070 {r4 r5 ; gcrRegs +[r3] ldrb r1, [r3+0x1F] cmp r1, 0
- beq SHORT G_M7485_IG22
+ beq G_M7485_IG28
ldr r1, [r8+0x14] ldr lr, [r8+0x10] sub r4, r1, lr cmp r4, r2 bgt SHORT G_M7485_IG16
- ;; size=42 bbWeight=0.99 PerfScore 15.84
+ ;; size=44 bbWeight=0.99 PerfScore 15.84
G_M7485_IG08: ; bbWeight=0.99, gcrefRegs=0100 {r8}, byrefRegs=0061 {r0 r5 r6}, byref, isz ; gcrRegs -[r3] cmp r4, 0
- ble G_M7485_IG41
+ ble G_M7485_IG43
ldr r12, [r8+0x08] ; gcrRegs +[r12] cmp r12, 0
- beq G_M7485_IG42
+ beq G_M7485_IG33
;; size=18 bbWeight=0.99 PerfScore 4.95 G_M7485_IG09: ; bbWeight=3.96, gcrefRegs=1100 {r8 r12}, byrefRegs=0061 {r0 r5 r6}, byref, isz ldr r1, [r12+0x04] cmp r1, lr
- blo G_M7485_IG32
+ blo G_M7485_IG33
sub r1, r1, lr cmp r1, r4
- blo G_M7485_IG32
+ blo G_M7485_IG33
add r1, r12, 8 ; byrRegs +[r1] add r1, lr mov r3, r4 cmp r3, r2
- bhi SHORT G_M7485_IG26 - ;; size=32 bbWeight=3.96 PerfScore 43.56
+ bhi G_M7485_IG34 + ;; size=34 bbWeight=3.96 PerfScore 43.56
G_M7485_IG10: ; bbWeight=0.99, gcrefRegs=0100 {r8}, byrefRegs=0063 {r0 r1 r5 r6}, byref ; gcrRegs -[r12] mov r2, r3 @@ -208,7 +208,7 @@ G_M7485_IG10: ; bbWeight=0.99, gcrefRegs=0100 {r8}, byrefRegs=0063 {r0 r1 ;; size=24 bbWeight=0.99 PerfScore 7.92 G_M7485_IG11: ; bbWeight=0.99, gcrefRegs=0100 {r8}, byrefRegs=0060 {r5 r6}, byref, isz cmp r4, 0
- beq SHORT G_M7485_IG29
+ beq SHORT G_M7485_IG25
add r10, r4 cmp r10, r7 blt SHORT G_M7485_IG05 @@ -243,24 +243,49 @@ G_M7485_IG16: ; bbWeight=0.26, gcVars=0000000000000000 {}, gcrefRegs=0100 mov r4, r2 b SHORT G_M7485_IG08 ;; size=4 bbWeight=0.26 PerfScore 0.51
-G_M7485_IG17: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0060 {r5 r6}, byref, isz - ; byrRegs -[r0]
+G_M7485_IG17: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0061 {r0 r5 r6}, byref, isz + ldr r12, [r8+0x08] + ; gcrRegs +[r12] + cmp r12, 0 + beq SHORT G_M7485_IG33 + ;; size=10 bbWeight=0.01 PerfScore 0.03 +G_M7485_IG18: ; bbWeight=0.04, gcrefRegs=1100 {r8 r12}, byrefRegs=0061 {r0 r5 r6}, byref, isz + ldr r1, [r12+0x04] + cmp r1, lr + blo SHORT G_M7485_IG33 + ldr r1, [r12+0x04] + sub r1, r1, lr + cmp r1, r4 + blo SHORT G_M7485_IG33 + add r1, r12, 8 + ; byrRegs +[r1] + add r1, lr + mov r3, r4 + cmp r3, r2 + bhi SHORT G_M7485_IG34 + ;; size=32 bbWeight=0.04 PerfScore 0.48 +G_M7485_IG19: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0063 {r0 r1 r5 r6}, byref, isz + ; gcrRegs -[r12] + b SHORT G_M7485_IG32 + ;; size=2 bbWeight=0.01 PerfScore 0.01 +G_M7485_IG20: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0060 {r5 r6}, byref, isz + ; byrRegs -[r0-r1]
cmp r10, r7
- bhi SHORT G_M7485_IG32
+ bhi SHORT G_M7485_IG33
add r4, r6, r10 ; byrRegs +[r4] sub r0, r7, r10 mov r2, r0 str r2, [sp+0x04] // [V22 tmp19] cmp r2, 0
- bge SHORT G_M7485_IG18
+ bge SHORT G_M7485_IG21
movs r0, 0
- b SHORT G_M7485_IG19
+ b SHORT G_M7485_IG22
;; size=24 bbWeight=0.01 PerfScore 0.10
-G_M7485_IG18: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0070 {r4 r5 r6}, byref
+G_M7485_IG21: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0070 {r4 r5 r6}, byref
movs r0, 1 ;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M7485_IG19: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+G_M7485_IG22: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0070 {r4 r5 r6}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -270,13 +295,13 @@ G_M7485_IG19: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0070 {r4 r5 ldr r4, [sp+0x04] // [V22 tmp19] ; byrRegs -[r4] mov r2, r4
- ldr r1, [r8] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r1, r3 - beq SHORT G_M7485_IG21
+ ldr r3, [r8] + movw r1, 0xd1ff + movt r1, 0xd1ff + cmp r3, r1 + beq SHORT G_M7485_IG27
;; size=34 bbWeight=0.01 PerfScore 0.12
-G_M7485_IG20: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0061 {r0 r5 r6}, byref, isz
+G_M7485_IG23: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0061 {r0 r5 r6}, byref
mov r1, r0 ; byrRegs +[r1] mov r0, r8 @@ -289,85 +314,12 @@ G_M7485_IG20: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0061 {r0 r5 r6 ; gcrRegs -[r0] ; byrRegs -[r1] mov r4, r0
- b SHORT G_M7485_IG28 - ;; size=18 bbWeight=0 PerfScore 0.00 -G_M7485_IG21: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0061 {r0 r5 r6}, byref, isz - ; byrRegs +[r0] - mov r3, r8 - ; gcrRegs +[r3] - ldrb r1, [r3+0x1F] - cmp r1, 0 - bne SHORT G_M7485_IG23 - ;; size=8 bbWeight=0.01 PerfScore 0.04 -G_M7485_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r3 r8] - ; byrRegs -[r0 r5-r6] - movs r0, 0 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowObjectDisposedException_StreamClosed(System.String) - bkpt
;; size=16 bbWeight=0 PerfScore 0.00
-G_M7485_IG23: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0061 {r0 r5 r6}, byref, isz - ; gcrRegs +[r8] - ; byrRegs +[r0 r5-r6] - ldr r1, [r8+0x14] - ldr lr, [r8+0x10] - sub r4, r1, lr - cmp r4, r2 - bgt SHORT G_M7485_IG31 - ;; size=16 bbWeight=0.01 PerfScore 0.05 -G_M7485_IG24: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0061 {r0 r5 r6}, byref, isz
+G_M7485_IG24: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0060 {r5 r6}, byref, isz
cmp r4, 0
- ble G_M7485_IG43 - ldr r12, [r8+0x08] - ; gcrRegs +[r12] - cmp r12, 0 - beq SHORT G_M7485_IG32 - ;; size=16 bbWeight=0.01 PerfScore 0.05 -G_M7485_IG25: ; bbWeight=0.04, gcrefRegs=1100 {r8 r12}, byrefRegs=0061 {r0 r5 r6}, byref, isz - ldr r1, [r12+0x04] - cmp r1, lr - blo SHORT G_M7485_IG32 - ldr r1, [r12+0x04] - sub r1, r1, lr - cmp r1, r4 - blo SHORT G_M7485_IG32 - add r1, r12, 8 - ; byrRegs +[r1] - add r1, lr - mov r3, r4 - cmp r3, r2 - bls SHORT G_M7485_IG27 - ;; size=32 bbWeight=0.04 PerfScore 0.48 -G_M7485_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8 r12] - ; byrRegs -[r0-r1 r5-r6] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowArgumentException_DestinationTooShort() - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M7485_IG27: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0063 {r0 r1 r5 r6}, byref - ; gcrRegs +[r8] - ; byrRegs +[r0-r1 r5-r6]
...

+18 (+1.55%) : 507937.dasm - System.Xml.XmlBinaryReader:ReadArray(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,int[],int,int):int:this (Tier1)

@@ -51,9 +51,9 @@ ; V39 tmp33 [V39,T44] ( 4, 0.62) ubyte -> r3 "Inline return value spill temp" ;* V40 tmp34 [V40 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V41 tmp35 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V42 tmp36 [V42,T05] ( 12, 14 ) ref -> r9 class-hnd exact single-def "impAppendStmt" <System.Xml.XmlBufferReader>
+; V42 tmp36 [V42,T05] ( 14, 14 ) ref -> r9 class-hnd exact single-def "impAppendStmt" <System.Xml.XmlBufferReader>
;* V43 tmp37 [V43 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[int]>
-; V44 tmp38 [V44,T20] ( 7, 3.18) int -> r10 "Inline return value spill temp"
+; V44 tmp38 [V44,T21] ( 7, 3.18) int -> r10 "Inline return value spill temp"
; V45 tmp39 [V45,T27] ( 3, 2.55) int -> r10 "Inlining Arg" ;* V46 tmp40 [V46 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V47 tmp41 [V47 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> @@ -64,10 +64,10 @@ ;* V52 tmp46 [V52 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V53 tmp47 [V53 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V54 tmp48 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
-; V55 tmp49 [V55,T21] ( 5, 3.18) ref -> r0 class-hnd single-def "Inline return value spill temp" <ubyte[]> -; V56 tmp50 [V56,T16] ( 4, 5.09) byref -> r0 single-def "Inlining Arg"
+; V55 tmp49 [V55,T20] ( 7, 3.18) ref -> r3 class-hnd single-def "Inline return value spill temp" <ubyte[]> +; V56 tmp50 [V56,T17] ( 4, 5.09) byref -> r0 single-def "Inlining Arg"
;* V57 tmp51 [V57 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V58 tmp52 [V58,T17] ( 4, 5.09) int -> r1 "Inlining Arg"
+; V58 tmp52 [V58,T16] ( 5, 5.09) int -> lr "Inlining Arg"
;* V59 tmp53 [V59 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V60 tmp54 [V60 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V61 tmp55 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> @@ -152,7 +152,7 @@ G_M43301_IG02: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 ; gcrRegs -[r0] cmp r0, 1 ldr r9, [sp+0x44] // [V05 arg5]
- bne G_M43301_IG36
+ bne G_M43301_IG37
;; size=62 bbWeight=1 PerfScore 20.00 G_M43301_IG03: ; bbWeight=0.96, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x08] @@ -162,9 +162,9 @@ G_M43301_IG03: ; bbWeight=0.96, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0 ldr r0, [r10+0x08] ; gcrRegs -[r0] cmp r0, 0
- beq G_M43301_IG56
+ beq G_M43301_IG57
cmp r0, 1
- bne G_M43301_IG57
+ bne G_M43301_IG58
ldr r3, [r10+0x04] ; gcrRegs +[r3] str r3, [sp+0x0C] // [V15 tmp9] @@ -239,7 +239,7 @@ G_M43301_IG08: ; bbWeight=7.62, gcVars=0000000000000000 {}, gcrefRegs=40F ldr r2, [sp+0x14] // [V16 tmp10] add r12, r2, r0 cmp r12, r1
- bhs G_M43301_IG55
+ bhs G_M43301_IG56
ldrb r12, [r3+r12] add r9, lr, 8 ; byrRegs +[r9] @@ -250,7 +250,7 @@ G_M43301_IG08: ; bbWeight=7.62, gcVars=0000000000000000 {}, gcrefRegs=40F bne SHORT G_M43301_IG05 adds r0, r0, 1 cmp r0, r10
- blt G_M43301_IG26
+ blt G_M43301_IG27
;; size=40 bbWeight=7.62 PerfScore 99.06 G_M43301_IG09: ; bbWeight=0.96, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref ; gcrRegs -[lr] @@ -259,14 +259,14 @@ G_M43301_IG09: ; bbWeight=0.96, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0 ;; size=4 bbWeight=0.96 PerfScore 0.96 G_M43301_IG10: ; bbWeight=0.96, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz cmp r12, 0
- beq G_M43301_IG28
+ beq G_M43301_IG29
;; size=8 bbWeight=0.96 PerfScore 1.92 G_M43301_IG11: ; bbWeight=0.96, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x08] ; gcrRegs +[r0] ldr r1, [r0+0x24] cmp r1, 0
- bne G_M43301_IG39
+ bne G_M43301_IG40
;; size=10 bbWeight=0.96 PerfScore 3.85 G_M43301_IG12: ; bbWeight=0.65, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz ldr r10, [r0+0x10] @@ -278,7 +278,7 @@ G_M43301_IG12: ; bbWeight=0.65, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefReg ldr r1, [r10+0x10] ; gcrRegs +[r1] cmp r0, r1
- bne G_M43301_IG37
+ bne G_M43301_IG38
;; size=20 bbWeight=0.65 PerfScore 3.92 G_M43301_IG13: ; bbWeight=0.46, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref ; gcrRegs -[r0-r1 r10] @@ -286,18 +286,18 @@ G_M43301_IG13: ; bbWeight=0.46, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0 ;; size=2 bbWeight=0.46 PerfScore 0.46 G_M43301_IG14: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz cmp r3, 0
- beq G_M43301_IG28
+ beq G_M43301_IG29
;; size=6 bbWeight=1 PerfScore 2.00 G_M43301_IG15: ; bbWeight=0.50, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x80] cmp r0, 1
- bne G_M43301_IG28
+ bne G_M43301_IG29
ldr r0, [r4+0x8C] cmp r0, 141
- bne G_M43301_IG28
+ bne G_M43301_IG29
ldrb r0, [r4+0x7A] cmp r0, 0
- bne G_M43301_IG28
+ bne G_M43301_IG29
;; size=30 bbWeight=0.50 PerfScore 4.50 G_M43301_IG16: ; bbWeight=0.64, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r6-r7] @@ -313,7 +313,7 @@ G_M43301_IG16: ; bbWeight=0.64, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ; gcr arg pop 0 ldr r10, [r4+0x84] cmp r9, r10
- bgt G_M43301_IG27
+ bgt G_M43301_IG28
;; size=28 bbWeight=0.64 PerfScore 6.36 G_M43301_IG17: ; bbWeight=0.63, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref mov r10, r9 @@ -322,14 +322,14 @@ G_M43301_IG18: ; bbWeight=0.64, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ldr r9, [r4+0x04] ; gcrRegs +[r9] cmp r5, 0
- beq G_M43301_IG48
+ beq G_M43301_IG49
ldr r0, [r5+0x04] cmp r0, r8
- blo G_M43301_IG50
+ blo G_M43301_IG51
ldr r0, [r5+0x04] sub r0, r0, r8 cmp r0, r10
- blo G_M43301_IG50
+ blo G_M43301_IG51
add r0, r5, 8 ; byrRegs +[r0] lsl r3, r8, 2 @@ -344,7 +344,7 @@ G_M43301_IG19: ; bbWeight=0.64, gcrefRegs=0210 {r4 r9}, byrefRegs=0020 {r movs r0, 4 smull r8, r2, r3, r0 cmp r2, r8 ASR 31
- bne G_M43301_IG54
+ bne G_M43301_IG55
cmp r8, 0 bge SHORT G_M43301_IG20 movs r0, 0 @@ -360,7 +360,7 @@ G_M43301_IG21: ; bbWeight=0.64, gcrefRegs=0210 {r4 r9}, byrefRegs=0020 {r blx r3 // <unknown method> ; gcr arg pop 0 cmp r8, 0
- ble SHORT G_M43301_IG23
+ ble SHORT G_M43301_IG24
add r0, r9, 44 ; byrRegs +[r0] ldr r1, [r9+0x2C] @@ -383,31 +383,33 @@ G_M43301_IG21: ; bbWeight=0.64, gcrefRegs=0210 {r4 r9}, byrefRegs=0020 {r ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- beq G_M43301_IG49
+ beq G_M43301_IG50
;; size=70 bbWeight=0.64 PerfScore 15.27 G_M43301_IG22: ; bbWeight=0.64, gcrefRegs=0210 {r4 r9}, byrefRegs=0020 {r5}, byref, isz
- ldr r0, [r9+0x10] - ; gcrRegs +[r0] - ldr r1, [r9+0x2C] - cmp r0, 0 - beq G_M43301_IG50 - ldr r2, [r0+0x04] - cmp r2, r1 - blo G_M43301_IG50 - ldr r2, [r0+0x04] - subs r2, r2, r1 - cmp r2, r8 - blo G_M43301_IG50 - adds r0, 8 - ; gcrRegs -[r0]
+ ldr r3, [r9+0x10] + ; gcrRegs +[r3] + ldr lr, [r9+0x2C] + cmp r3, 0 + beq G_M43301_IG51 + ;; size=14 bbWeight=0.64 PerfScore 2.55 +G_M43301_IG23: ; bbWeight=0.64, gcrefRegs=0218 {r3 r4 r9}, byrefRegs=0020 {r5}, byref, isz + ldr r0, [r3+0x04] + cmp r0, lr + blo G_M43301_IG51 + ldr r0, [r3+0x04] + sub r0, r0, lr + cmp r0, r8 + blo G_M43301_IG51 + add r0, r3, 8
; byrRegs +[r0]
- adds r1, r0, r1
+ add r1, r0, lr
; byrRegs +[r1] mov r2, r8 cmp r2, r8
- bhi G_M43301_IG51
+ bhi G_M43301_IG52
mov r0, r5 movw r3, 0xd1ff
+ ; gcrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method> @@ -416,19 +418,19 @@ G_M43301_IG22: ; bbWeight=0.64, gcrefRegs=0210 {r4 r9}, byrefRegs=0020 {r ldr r0, [r9+0x2C] add r0, r8 str r0, [r9+0x2C]
- ;; size=68 bbWeight=0.64 PerfScore 15.27 -G_M43301_IG23: ; bbWeight=0.64, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=60 bbWeight=0.64 PerfScore 12.73 +G_M43301_IG24: ; bbWeight=0.64, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r9] ldr r0, [r4+0x84] sub r0, r0, r10 str r0, [r4+0x84] cmp r0, 0
- bne SHORT G_M43301_IG24
+ bne SHORT G_M43301_IG25
movs r0, 0 str r0, [r4+0x80] ldr r0, [r4+0x60] cmp r0, 0
- beq G_M43301_IG52
+ beq G_M43301_IG53
subs r0, r0, 1 str r0, [r4+0x60] ldr r0, [r4+0x0C] @@ -449,52 +451,52 @@ G_M43301_IG23: ; bbWeight=0.64, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0 r4] ; gcr arg pop 0 ;; size=64 bbWeight=0.64 PerfScore 14.64
-G_M43301_IG24: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43301_IG25: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r0, r10 ;; size=2 bbWeight=0.64 PerfScore 0.64
-G_M43301_IG25: ; bbWeight=0.64, epilog, nogc, extend
+G_M43301_IG26: ; bbWeight=0.64, epilog, nogc, extend
add sp, 28 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0.64 PerfScore 1.27
-G_M43301_IG26: ; bbWeight=3.81, gcVars=0000000000000000 {}, gcrefRegs=40F0 {r4 r5 r6 r7 lr}, byrefRegs=0008 {r3}, gcvars, byref, isz
+G_M43301_IG27: ; bbWeight=3.81, gcVars=0000000000000000 {}, gcrefRegs=40F0 {r4 r5 r6 r7 lr}, byrefRegs=0008 {r3}, gcvars, byref, isz
; gcrRegs +[r4-r7 lr] ...

+14 (+2.56%) : 214549.dasm - System.Collections.Generic.Dictionary`2[System.Canon,System.Canon]:Remove(System.__Canon):ubyte:this (Tier1)

@@ -13,19 +13,19 @@ ; V01 arg1 [V01,T03] ( 5, 5 ) ref -> r6 ld-addr-op class-hnd single-def <System.__Canon> ; V02 loc0 [V02,T20] ( 4, 3.50) int -> r7 ; V03 loc1 [V03,T17] ( 4, 4 ) ref -> r8 class-hnd single-def <<unknown class>>
-; V04 loc2 [V04,T19] ( 3, 3.83) int -> r10 -; V05 loc3 [V05,T23] ( 3, 2.41) byref -> [sp+0x0C] spill-single-def -; V06 loc4 [V06,T11] ( 4, 5.26) ref -> [sp+0x08] class-hnd exact spill-single-def <<unknown class>> -; V07 loc5 [V07,T16] ( 5, 4.02) int -> [sp+0x20] -; V08 loc6 [V08,T01] ( 8, 10.17) int -> [sp+0x1C] -; V09 loc7 [V09,T02] ( 9, 9.50) byref -> [sp+0x04] spill-single-def
+; V04 loc2 [V04,T19] ( 3, 3.83) int -> r9 +; V05 loc3 [V05,T23] ( 3, 2.41) byref -> [sp+0x14] spill-single-def +; V06 loc4 [V06,T11] ( 4, 5.26) ref -> [sp+0x10] class-hnd exact spill-single-def <<unknown class>> +; V07 loc5 [V07,T16] ( 5, 4.02) int -> [sp+0x30] +; V08 loc6 [V08,T01] ( 8, 10.17) int -> [sp+0x2C] +; V09 loc7 [V09,T02] ( 9, 9.50) byref -> [sp+0x0C] spill-single-def
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V11 tmp1 [V11 ] ( 0, 0 ) int -> zero-ref ;* V12 tmp2 [V12 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V13 tmp3 [V13,T04] ( 4, 6 ) int -> r4 "VirtualCall with runtime lookup" ;* V14 tmp4 [V14 ] ( 0, 0 ) int -> zero-ref ;* V15 tmp5 [V15 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V16 tmp6 [V16,T05] ( 4, 6 ) int -> r4 "VirtualCall with runtime lookup"
+; V16 tmp6 [V16,T05] ( 4, 6 ) int -> [sp+0x28] "VirtualCall with runtime lookup"
;* V17 tmp7 [V17 ] ( 0, 0 ) int -> zero-ref ;* V18 tmp8 [V18 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V19 tmp9 [V19 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" @@ -34,26 +34,28 @@ ; V22 tmp12 [V22,T18] ( 4, 4 ) ref -> r4 class-hnd single-def "Inline stloc first use temp" <<unknown class>> ;* V23 tmp13 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V24 tmp14 [V24,T06] ( 3, 6 ) int -> r0 "index expr"
-; V25 cse0 [V25,T13] ( 3, 3 ) int -> r9 "CSE - moderate" -; V26 cse1 [V26,T12] ( 4, 5.09) int -> [sp+0x18] spill-single-def "CSE - aggressive"
+; V25 cse0 [V25,T13] ( 2, 2 ) int -> r0 "CSE - moderate" +; V26 cse1 [V26,T12] ( 4, 5.09) int -> [sp+0x24] spill-single-def "CSE - aggressive"
; V27 rat0 [V27,T14] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" ; V28 rat1 [V28,T07] ( 3, 5.60) int -> r4 "fgMakeTemp is creating a new local variable" ; V29 rat2 [V29,T15] ( 3, 4.40) int -> r0 "Spilling to split statement for tree"
-; V30 rat3 [V30,T08] ( 3, 5.60) int -> r4 "fgMakeTemp is creating a new local variable"
+; V30 rat3 [V30,T08] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
;* V31 rat4 [V31,T24] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V32 rat5 [V32,T09] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V32 rat5 [V32,T09] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
;* V33 rat6 [V33,T25] ( 0, 0 ) int -> zero-ref "runtime lookup" ;* V34 rat7 [V34,T10] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V35 rat8 [V35 ] ( 1, 2 ) long -> [sp+0x10] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V35 rat8 [V35 ] ( 1, 2 ) long -> [sp+0x18] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V36 rat9 [V36,T21] ( 2, 3 ) int -> r0 "field V35.lo (fldOffset=0x0)" P-INDEP ; V37 rat10 [V37,T22] ( 2, 3 ) int -> r1 "field V35.hi (fldOffset=0x4)" P-INDEP
+; TEMP_02 int -> [r11-0x50] +; TEMP_01 int -> [r11-0x54]
;
-; Lcl frame size = 44
+; Lcl frame size = 60
G_M47719_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 44 - add r11, sp, 72
+ sub sp, 60 + add r11, sp, 88
str r0, [r11-0x24] mov r5, r0 ; gcrRegs +[r5] @@ -62,11 +64,11 @@ G_M47719_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=18 bbWeight=1 PerfScore 6.00 G_M47719_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz cmp r6, 0
- beq G_M47719_IG30
+ beq G_M47719_IG29
ldr r0, [r5+0x04] ; gcrRegs +[r0] cmp r0, 0
- beq G_M47719_IG31
+ beq G_M47719_IG30
ldr r0, [r5+0x08] cmp r0, 0 bne SHORT G_M47719_IG03 @@ -99,14 +101,13 @@ G_M47719_IG05: ; bbWeight=1, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {} ldr r3, [r3] blx r3 // <unknown method> ; gcr arg pop 0
- ldr r9, [r5] - mov r0, r9
+ ldr r0, [r5]
ldr r1, [r0+0x24] ldr r1, [r1] ldr r4, [r1+0x1C] cmp r4, 0 beq SHORT G_M47719_IG07
- ;; size=28 bbWeight=1 PerfScore 11.00
+ ;; size=24 bbWeight=1 PerfScore 10.00
G_M47719_IG06: ; bbWeight=0.80, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz b SHORT G_M47719_IG08 ;; size=2 bbWeight=0.80 PerfScore 0.80 @@ -128,12 +129,12 @@ G_M47719_IG08: ; bbWeight=1, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {} blx r3 ; gcrRegs -[r0-r1] ; gcr arg pop 0
- mov r10, r0
+ mov r9, r0
ldr r4, [r5+0x04] ; gcrRegs +[r4] ldr r2, [r4+0x04] movs r3, 0
- mov r0, r10
+ mov r0, r9
movs r1, 0 movw lr, 0xd1ff movt lr, 0xd1ff @@ -142,115 +143,119 @@ G_M47719_IG08: ; bbWeight=1, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {} tst r0, r0 bmi SHORT G_M47719_IG09 tst r1, r1
- bne G_M47719_IG28
+ bne G_M47719_IG27
b SHORT G_M47719_IG10 ;; size=42 bbWeight=1 PerfScore 18.00 G_M47719_IG09: ; bbWeight=1, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz cmp r1, -1
- bne G_M47719_IG28
+ bne G_M47719_IG27
;; size=8 bbWeight=1 PerfScore 2.00 G_M47719_IG10: ; bbWeight=1, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz ldr r1, [r4+0x04] cmp r0, r1
- bhs G_M47719_IG29
+ bhs G_M47719_IG28
add r1, r4, 8 ; byrRegs +[r1] lsls r0, r0, 2
- adds r4, r1, r0 - ; gcrRegs -[r4] - ; byrRegs +[r4] - str r4, [sp+0x0C]
+ add r10, r1, r0 + ; byrRegs +[r10] + str r10, [sp+0x14]
; GC ptr vars +{V05}
- ldr r3, [r5+0x08] - ; gcrRegs +[r3] - str r3, [sp+0x08]
+ ldr r4, [r5+0x08] + str r4, [sp+0x10]
; GC ptr vars +{V06}
- mov r2, -1 - str r2, [sp+0x20] // [V07 loc5] - ldr r0, [r4] - add lr, r0, -1 - cmp lr, 0 - blt G_M47719_IG31 - ;; size=42 bbWeight=1 PerfScore 15.00 -G_M47719_IG11: ; bbWeight=1.83, gcVars=00800800 {V05 V06}, gcrefRegs=0168 {r3 r5 r6 r8}, byrefRegs=0000 {}, gcvars, byref, isz - ; byrRegs -[r1 r4] - ldr r12, [r3+0x04] - str r12, [sp+0x18] // [V26 cse1] - cmp lr, r12 - bhs G_M47719_IG29 - str lr, [sp+0x1C] // [V08 loc6] - lsl r0, lr, 4
+ mov r3, -1 + str r3, [sp+0x30] // [V07 loc5] + ldr r0, [r10] + subs r2, r0, 1 + cmp r2, 0 + blt G_M47719_IG30 + ;; size=44 bbWeight=1 PerfScore 15.00 +G_M47719_IG11: ; bbWeight=1.83, gcVars=00800800 {V05 V06}, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, gcvars, byref, isz + ; byrRegs -[r1 r10] + ldr lr, [r4+0x04] + str lr, [sp+0x24] // [V26 cse1] + cmp r2, lr + bhs G_M47719_IG28 + str r2, [sp+0x2C] // [V08 loc6] + lsls r0, r2, 4
adds r0, 8
- adds r1, r3, r0 - ; byrRegs +[r1] - str r1, [sp+0x04] // [V09 loc7]
+ add r12, r4, r0 + ; byrRegs +[r12] + str r12, [sp+0x0C] // [V09 loc7]
; GC ptr vars +{V09}
- ldr r0, [r1+0x08] - cmp r0, r10 - bne SHORT G_M47719_IG21 - ;; size=34 bbWeight=1.83 PerfScore 22.00
+ ldr r0, [r12+0x08] + cmp r0, r9 + bne SHORT G_M47719_IG20 + ;; size=36 bbWeight=1.83 PerfScore 22.00
G_M47719_IG12: ; bbWeight=1, gcVars=00800804 {V05 V06 V09}, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r3] - ; byrRegs -[r1]
+ ; gcrRegs -[r4] + ; byrRegs -[r12]
ldr r0, [r5]
- ldr r4, [r0+0x24] - ldr r4, [r4] - ldr r4, [r4+0x20] - cmp r4, 0
+ ldr r1, [r0+0x24] + ldr r1, [r1] + ldr r1, [r1+0x20] + cmp r1, 0
beq SHORT G_M47719_IG14 ;; size=12 bbWeight=1 PerfScore 6.00 G_M47719_IG13: ; bbWeight=0.80, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
+ str r1, [sp+0x28] // [V16 tmp6]
b SHORT G_M47719_IG15
- ;; size=2 bbWeight=0.80 PerfScore 0.80
+ ;; size=4 bbWeight=0.80 PerfScore 1.60
G_M47719_IG14: ; bbWeight=0.20, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref
+ str r0, [sp+0x08] // [TEMP_02]
movw r1, 0xd1ff movt r1, 0xd1ff
- movw r4, 0xd1ff - movt r4, 0xd1ff - blx r4 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ movw r0, 0xd1ff + movt r0, 0xd1ff + str r0, [sp+0x04] // [TEMP_01] + ldr r0, [sp+0x08] // [TEMP_02] + ldr r10, [sp+0x04] // [TEMP_01] + blx r10 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
- mov r4, r0 - ;; size=20 bbWeight=0.20 PerfScore 1.20
+ str r0, [sp+0x28] // [V16 tmp6] + ;; size=30 bbWeight=0.20 PerfScore 2.00
G_M47719_IG15: ; bbWeight=1, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
- ldr r1, [sp+0x04] // [V09 loc7] - ; byrRegs +[r1] - ldr r1, [r1]
+ ldr r12, [sp+0x0C] // [V09 loc7] + ; byrRegs +[r12] + ldr r1, [r12]
; gcrRegs +[r1]
- ; byrRegs -[r1]
mov r0, r8 ; gcrRegs +[r0]
+ ldr r4, [sp+0x28] // [V16 tmp6]
mov r2, r6 ; gcrRegs +[r2]
- ldr r12, [r4] - blx r12
+ ldr r10, [r4] + blx r10
; gcrRegs -[r0-r2]
+ ; byrRegs -[r12]
...

librariestestsnotieredcompilation.run.linux.arm.Release.mch

-24 (-24.49%) : 5280.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 -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference> ; V02 loc0 [V02,T06] ( 3, 1.50) int -> r3 ld-addr-op ;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> @@ -20,20 +20,18 @@ ; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> r0 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 -> r2 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) int -> r0 "Spilling to split statement for tree"
+;* V12 rat0 [V12,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 12
+; Lcl frame size = 4
G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr} - sub sp, 12 - add r11, sp, 16 - str r0, [r11-0x0C]
+ push {r3,r4,r11,lr} + add r11, sp, 8
mov r4, r0 ; gcrRegs +[r4]
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r1] ldr r0, [r4+0x10] @@ -46,36 +44,27 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0-r1] ; byrRegs +[r0] cmp r0, 0
- beq SHORT G_M43979_IG05
+ beq SHORT G_M43979_IG04
;; size=22 bbWeight=1 PerfScore 8.00 G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz ldr r3, [r0] ldr r2, [r4+0x44] ; gcrRegs +[r2]
- ldr r0, [r4] - ; byrRegs -[r0] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x84] - cmp r0, 0 - bne SHORT G_M43979_IG07 - ;; size=18 bbWeight=0.50 PerfScore 4.00 -G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, byref, isz - b SHORT G_M43979_IG07 - ;; size=2 bbWeight=0.10 PerfScore 0.10 -G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ b SHORT G_M43979_IG06 + ;; size=6 bbWeight=0.50 PerfScore 1.50 +G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r2]
+ ; byrRegs -[r0]
movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend - add sp, 12 - pop {r4,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M43979_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M43979_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r2] ldr r0, [r2+0x04] cmp r3, r0
- bhs SHORT G_M43979_IG09
+ bhs SHORT G_M43979_IG08
add r0, r2, 8 ; byrRegs +[r0] lsls r3, r3, 2 @@ -83,11 +72,10 @@ G_M43979_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4 ; gcrRegs +[r0] ; byrRegs -[r0] ;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend - add sp, 12 - pop {r4,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M43979_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M43979_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0 r2] movw r3, 0xd1ff movt r3, 0xd1ff @@ -95,7 +83,7 @@ G_M43979_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 98, prolog size 14, PerfScore 22.60, instruction count 37, allocated bytes for code 98 (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 17.00, instruction count 27, 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: @@ -107,7 +95,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 49 (0x00031) Actual length = 98 (0x000062)
+ Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -119,7 +107,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16 - A8 10 pop {r4,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32 + FF end
FF end

-22 (-22.92%) : 49238.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 -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference> ; V02 loc0 [V02,T06] ( 3, 1.50) int -> r3 ld-addr-op ;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> @@ -20,20 +20,18 @@ ; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> r0 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 -> r2 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) int -> r0 "Spilling to split statement for tree"
+;* V12 rat0 [V12,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 12
+; Lcl frame size = 4
G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr} - sub sp, 12 - add r11, sp, 16 - str r0, [r11-0x0C]
+ push {r3,r4,r11,lr} + add r11, sp, 8
mov r4, r0 ; gcrRegs +[r4]
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r1] ldr r0, [r4+0x10] @@ -46,36 +44,27 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0-r1] ; byrRegs +[r0] cmp r0, 0
- beq SHORT G_M43979_IG05
+ beq SHORT G_M43979_IG04
;; size=22 bbWeight=1 PerfScore 8.00 G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz ldr r3, [r0] ldr r2, [r4+0x44] ; gcrRegs +[r2]
- ldr r0, [r4] - ; byrRegs -[r0] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x60] - cmp r0, 0 - bne SHORT G_M43979_IG07 - ;; size=16 bbWeight=0.50 PerfScore 4.00 -G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, byref, isz - b SHORT G_M43979_IG07 - ;; size=2 bbWeight=0.10 PerfScore 0.10 -G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ b SHORT G_M43979_IG06 + ;; size=6 bbWeight=0.50 PerfScore 1.50 +G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r2]
+ ; byrRegs -[r0]
movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend - add sp, 12 - pop {r4,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M43979_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M43979_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r2] ldr r0, [r2+0x04] cmp r3, r0
- bhs SHORT G_M43979_IG09
+ bhs SHORT G_M43979_IG08
add r0, r2, 8 ; byrRegs +[r0] lsls r3, r3, 2 @@ -83,11 +72,10 @@ G_M43979_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4 ; gcrRegs +[r0] ; byrRegs -[r0] ;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend - add sp, 12 - pop {r4,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M43979_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M43979_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0 r2] movw r3, 0xd1ff movt r3, 0xd1ff @@ -95,7 +83,7 @@ G_M43979_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 96, prolog size 14, PerfScore 22.60, instruction count 37, allocated bytes for code 96 (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 17.00, instruction count 27, 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: @@ -107,7 +95,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 48 (0x00030) Actual length = 96 (0x000060)
+ Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -119,7 +107,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16 - A8 10 pop {r4,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32 + FF end
FF end

-22 (-22.92%) : 43544.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 -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference> ; V02 loc0 [V02,T06] ( 3, 1.50) int -> r3 ld-addr-op ;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> @@ -20,20 +20,18 @@ ; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> r0 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 -> r2 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) int -> r0 "Spilling to split statement for tree"
+;* V12 rat0 [V12,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 12
+; Lcl frame size = 4
G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr} - sub sp, 12 - add r11, sp, 16 - str r0, [r11-0x0C]
+ push {r3,r4,r11,lr} + add r11, sp, 8
mov r4, r0 ; gcrRegs +[r4]
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r1] ldr r0, [r4+0x10] @@ -46,36 +44,27 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0-r1] ; byrRegs +[r0] cmp r0, 0
- beq SHORT G_M43979_IG05
+ beq SHORT G_M43979_IG04
;; size=22 bbWeight=1 PerfScore 8.00 G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz ldr r3, [r0] ldr r2, [r4+0x44] ; gcrRegs +[r2]
- ldr r0, [r4] - ; byrRegs -[r0] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x60] - cmp r0, 0 - bne SHORT G_M43979_IG07 - ;; size=16 bbWeight=0.50 PerfScore 4.00 -G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, byref, isz - b SHORT G_M43979_IG07 - ;; size=2 bbWeight=0.10 PerfScore 0.10 -G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ b SHORT G_M43979_IG06 + ;; size=6 bbWeight=0.50 PerfScore 1.50 +G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r2]
+ ; byrRegs -[r0]
movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend - add sp, 12 - pop {r4,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M43979_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M43979_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r2] ldr r0, [r2+0x04] cmp r3, r0
- bhs SHORT G_M43979_IG09
+ bhs SHORT G_M43979_IG08
add r0, r2, 8 ; byrRegs +[r0] lsls r3, r3, 2 @@ -83,11 +72,10 @@ G_M43979_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4 ; gcrRegs +[r0] ; byrRegs -[r0] ;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend - add sp, 12 - pop {r4,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M43979_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M43979_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0 r2] movw r3, 0xd1ff movt r3, 0xd1ff @@ -95,7 +83,7 @@ G_M43979_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 96, prolog size 14, PerfScore 22.60, instruction count 37, allocated bytes for code 96 (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 17.00, instruction count 27, 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: @@ -107,7 +95,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 48 (0x00030) Actual length = 96 (0x000060)
+ Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -119,7 +107,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16 - A8 10 pop {r4,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32 + FF end
FF end

+2 (+0.20%) : 279389.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3682_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -71,11 +71,11 @@ ;* V60 tmp48 [V60 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ; V61 tmp49 [V61,T44] ( 4, 2 ) int -> r0 single-def "Inline stloc first use temp" ; V62 tmp50 [V62,T40] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V63 tmp51 [V63,T33] ( 3, 6 ) int -> r0 "Inline stloc first use temp" -; V64 tmp52 [V64,T27] ( 4, 8 ) int -> r3 "Inline stloc first use temp" -; V65 tmp53 [V65,T16] ( 3, 12 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
+; V63 tmp51 [V63,T33] ( 3, 6 ) int -> r3 "Inline stloc first use temp" +; V64 tmp52 [V64,T27] ( 4, 8 ) int -> r2 "Inline stloc first use temp" +; V65 tmp53 [V65,T16] ( 3, 12 ) ref -> r3 class-hnd "impAppendStmt" <<unknown class>>
;* V66 tmp54 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V67 tmp55 [V67,T17] ( 3, 12 ) byref -> r0 "dup spill"
+; V67 tmp55 [V67,T17] ( 3, 12 ) byref -> r3 "dup spill"
; V68 tmp56 [V68,T31] ( 3, 6 ) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP ; V69 tmp57 [V69,T24] ( 10, 10.00) int -> r6 single-def "field V02._length (fldOffset=0x4)" P-INDEP ;* V70 tmp58 [V70 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP @@ -98,9 +98,9 @@ ; V87 tmp75 [V87,T41] ( 3, 3.00) ref -> r0 single-def "arr expr" ; V88 tmp76 [V88,T42] ( 3, 3.00) ref -> r0 single-def "arr expr" ; V89 tmp77 [V89,T10] ( 3, 24 ) ref -> lr "arr expr"
-; V90 tmp78 [V90,T18] ( 3, 12 ) ref -> r3 "arr expr"
+; V90 tmp78 [V90,T18] ( 3, 12 ) ref -> r2 "arr expr"
; V91 cse0 [V91,T26] ( 4, 9 ) ref -> r1 "CSE - moderate"
-; V92 cse1 [V92,T29] ( 3, 7 ) ref -> r5 hoist "CSE - moderate"
+; V92 cse1 [V92,T29] ( 3, 7 ) ref -> r0 hoist "CSE - moderate"
; V93 cse2 [V93,T19] ( 2, 8 ) ref -> r0 "CSE - moderate" ; V94 cse3 [V94,T22] ( 3, 12 ) int -> [sp+0x04] spill-single-def "CSE - moderate" ; V95 cse4 [V95,T23] ( 3, 12 ) int -> r1 "CSE - moderate" @@ -146,7 +146,7 @@ G_M12568_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r ;; size=28 bbWeight=0.50 PerfScore 4.00 G_M12568_IG05: ; bbWeight=1.00, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref, isz cmp r10, 2
- bls G_M12568_IG27
+ bls G_M12568_IG33
;; size=8 bbWeight=1.00 PerfScore 2.00 G_M12568_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref, isz ldrh r0, [r9] @@ -156,7 +156,7 @@ G_M12568_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r blx r3 // System.Text.RegularExpressions.RegexCharClass:IsWordChar(ushort):ubyte ; gcr arg pop 0 cmp r0, 0
- beq G_M12568_IG27
+ beq G_M12568_IG33
ldrh r0, [r9+0x02] movw r3, 0xd1ff movt r3, 0xd1ff @@ -164,7 +164,7 @@ G_M12568_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r blx r3 // System.Text.RegularExpressions.RegexCharClass:IsWordChar(ushort):ubyte ; gcr arg pop 0 cmp r0, 0
- beq G_M12568_IG27
+ beq G_M12568_IG33
ldrh r0, [r9+0x04] movw r3, 0xd1ff movt r3, 0xd1ff @@ -173,7 +173,7 @@ G_M12568_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r ; byrRegs -[r9] ; gcr arg pop 0 cmp r0, 0
- beq G_M12568_IG27
+ beq G_M12568_IG33
;; size=66 bbWeight=0.50 PerfScore 10.50 G_M12568_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz adds r0, r7, 3 @@ -370,7 +370,7 @@ G_M12568_IG20: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, by ; gcr arg pop 0 ldr r9, [sp+0x10] // [V09 loc7] cmp r9, 8
- bge SHORT G_M12568_IG31
+ bge SHORT G_M12568_IG27
str r9, [sp+0x10] // [V09 loc7] ldr r9, [sp+0x14] // [V04 loc2] b SHORT G_M12568_IG11 @@ -381,8 +381,8 @@ G_M12568_IG21: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b subs r3, r3, 1 str r3, [sp+0x10] // [V09 loc7] cmp r3, 0
- blt SHORT G_M12568_IG27 - ;; size=10 bbWeight=0.50 PerfScore 2.50
+ blt G_M12568_IG33 + ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M12568_IG22: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz add r8, r8, -1 ldr r0, [r4+0x18] @@ -478,34 +478,12 @@ G_M12568_IG26: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ; gcrRegs -[r1] ldr r3, [sp+0x10] // [V09 loc7] cmp r3, 6
- bge SHORT G_M12568_IG31
+ blt SHORT G_M12568_IG33
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M12568_IG27: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - ldr r5, [r4+0x1C] - ; gcrRegs +[r5] - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M12568_IG28: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz - ldr r0, [r5+0x04] - ldr r3, [r4+0x40] - subs r0, r0, r3 - cmp r0, 0 - bne SHORT G_M12568_IG37 - ;; size=10 bbWeight=4 PerfScore 20.00 -G_M12568_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4-r5] - movs r0, 0 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M12568_IG30: ; bbWeight=0.50, epilog, nogc, extend - add sp, 28 - pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} - add sp, 8 - bx lr - ;; size=10 bbWeight=0.50 PerfScore 2.00 -G_M12568_IG31: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4]
+G_M12568_IG27: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
subs r0, r6, r10 cmp r0, 0
- bge SHORT G_M12568_IG32
+ bge SHORT G_M12568_IG28
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff @@ -516,21 +494,21 @@ G_M12568_IG31: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=001 blx r3 // <unknown method> ; gcr arg pop 0 ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M12568_IG32: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M12568_IG28: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
str r10, [r4+0x34] mov r5, r7 mov r6, r10 cmp r6, r5
- bge SHORT G_M12568_IG34
+ bge SHORT G_M12568_IG30
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M12568_IG33: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M12568_IG29: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov r6, r7 mov r5, r10 ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M12568_IG34: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M12568_IG30: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x40] cmp r0, 0
- bne SHORT G_M12568_IG35
+ bne SHORT G_M12568_IG31
mov r0, r4 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -540,7 +518,7 @@ G_M12568_IG34: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0] ; gcr arg pop 0 ;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M12568_IG35: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M12568_IG31: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r3, [r4+0x1C] ; gcrRegs +[r3] ldr r0, [r4+0x40] @@ -570,49 +548,69 @@ G_M12568_IG35: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ; gcr arg pop 0 movs r0, 1 ;; size=50 bbWeight=0.50 PerfScore 10.50
-G_M12568_IG36: ; bbWeight=0.50, epilog, nogc, extend
+G_M12568_IG32: ; bbWeight=0.50, epilog, nogc, extend
add sp, 28 pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} add sp, 8 bx lr ;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M12568_IG37: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4-r5] - mov r0, r5
+G_M12568_IG33: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r4] + ldr r0, [r4+0x1C]
; gcrRegs +[r0]
- ldr r3, [r4+0x40] - adds r2, r3, 1 - str r2, [r4+0x40] - ldr r2, [r0+0x04] - cmp r3, r2 - bhs SHORT G_M12568_IG38 - adds r0, 8 - ; gcrRegs -[r0] - ; byrRegs +[r0] - lsls r3, r3, 2 - ldr r0, [r0+r3] - ; byrRegs -[r0] - ldr r3, [r4+0x20]
+ b SHORT G_M12568_IG35 + ;; size=4 bbWeight=1 PerfScore 2.00 +G_M12568_IG34: ; bbWeight=2, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz + mov r3, r0
; gcrRegs +[r3]
- ldr r3, [r3+0x2C] - ldr r2, [r3+0x04] - cmp r0, r2
+ ldr r2, [r4+0x40] + adds r1, r2, 1 + str r1, [r4+0x40] + ldr r1, [r3+0x04] + cmp r2, r1
bhs SHORT G_M12568_IG38 adds r3, 8 ; gcrRegs -[r3] ; byrRegs +[r3]
- lsls r0, r0, 2 - adds r0, r3, r0 - ; byrRegs +[r0] - ldr r3, [r0]
+ lsls r2, r2, 2 + ldr r3, [r3+r2]
; byrRegs -[r3]
- subs r3, r3, 1 - str r3, [r0] - b SHORT G_M12568_IG28 - ;; size=44 bbWeight=2 PerfScore 44.00 -G_M12568_IG38: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4-r5] - ; byrRegs -[r0]
+ ldr r2, [r4+0x20] + ; gcrRegs +[r2] + ldr r2, [r2+0x2C] + ldr r1, [r2+0x04] + cmp r3, r1 + bhs SHORT G_M12568_IG38 + adds r2, 8 + ; gcrRegs -[r2] + ; byrRegs +[r2] + lsls r3, r3, 2 + adds r3, r2, r3 + ; byrRegs +[r3] + ldr r2, [r3] + ; byrRegs -[r2] + subs r2, r2, 1 + str r2, [r3] + ;; size=42 bbWeight=2 PerfScore 42.00 +G_M12568_IG35: ; bbWeight=4, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r3] + ldr r3, [r0+0x04] + ldr r2, [r4+0x40] + subs r3, r3, r2 + cmp r3, 0 + bne SHORT G_M12568_IG34 + ;; size=10 bbWeight=4 PerfScore 20.00 +G_M12568_IG36: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0 r4] + movs r0, 0 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M12568_IG37: ; bbWeight=0.50, epilog, nogc, extend
...

+2 (+0.23%) : 257759.dasm - System.Text.Json.Serialization.Tests.JsonSerializerWrapper+Utf8BomInsertingStream:Read(ubyte[],int,int):int:this (FullOpts)

@@ -234,7 +234,7 @@ G_M15050_IG10: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0102 {r ldr r3, [r3] blx r3 // <unknown method> ; byrRegs -[r0-r1 r8]
- b SHORT G_M15050_IG24
+ b SHORT G_M15050_IG21
;; size=22 bbWeight=0.50 PerfScore 4.00 G_M15050_IG11: ; bbWeight=0.05, gcrefRegs=0090 {r4 r7}, byrefRegs=0100 {r8}, byref, isz ; byrRegs +[r8] @@ -316,15 +316,15 @@ G_M15050_IG15: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs= G_M15050_IG16: ; bbWeight=1.00, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz ldr r9, [r4+0x14] cmp r9, r5
- bgt SHORT G_M15050_IG23
+ bgt SHORT G_M15050_IG20
;; size=8 bbWeight=1.00 PerfScore 3.00 G_M15050_IG17: ; bbWeight=0.37, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref mov r8, r9 ;; size=2 bbWeight=0.37 PerfScore 0.37 G_M15050_IG18: ; bbWeight=1, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz cmp r8, 0
- ble SHORT G_M15050_IG21 - ;; size=6 bbWeight=1 PerfScore 2.00
+ ble G_M15050_IG31 + ;; size=8 bbWeight=1 PerfScore 2.00
G_M15050_IG19: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x0C] ; gcrRegs +[r0] @@ -345,72 +345,37 @@ G_M15050_IG19: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {} ; byrRegs +[r1] mov r2, r8 cmp r7, 0
- bne G_M15050_IG32
+ bne SHORT G_M15050_IG29
orrs r0, r6, r5 ; byrRegs -[r0] cmp r0, 0 bne G_M15050_IG38 movs r0, 0 movs r3, 0
- ;; size=54 bbWeight=0.50 PerfScore 10.50 -G_M15050_IG20: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0003 {r0 r1}, byref, isz - ; byrRegs +[r0] - cmp r2, r3 - bhi G_M15050_IG39 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; byrRegs -[r0-r1] - ldr r0, [r4+0x10] - add r0, r8 - str r0, [r4+0x10] - ldr r0, [r4+0x14] - sub r0, r0, r8 - str r0, [r4+0x14] - add r6, r8 - sub r5, r5, r8 - ;; size=38 bbWeight=0.50 PerfScore 7.00 -G_M15050_IG21: ; bbWeight=1, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref - ldr r0, [r4+0x08] - ; gcrRegs +[r0] - mov r1, r7 - ; gcrRegs +[r1] - mov r2, r6 - mov r3, r5 - ldr lr, [r0] - ldr lr, [lr+0x3C] - ldr lr, [lr+0x0C] - blx lr // <unknown method> - ; gcrRegs -[r0-r1 r4 r7] - add r0, r8 - ;; size=24 bbWeight=1 PerfScore 9.00 -G_M15050_IG22: ; bbWeight=1, epilog, nogc, extend - add sp, 36 - pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M15050_IG23: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4 r7]
+ b SHORT G_M15050_IG30 + ;; size=54 bbWeight=0.50 PerfScore 11.00 +G_M15050_IG20: ; bbWeight=0.13, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r1]
mov r8, r5 b SHORT G_M15050_IG18 ;; size=4 bbWeight=0.13 PerfScore 0.26
-G_M15050_IG24: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
+G_M15050_IG21: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
cmp r0, 0
- beq SHORT G_M15050_IG25
+ beq SHORT G_M15050_IG22
movs r0, 3 str r0, [r4+0x10] str r0, [r4+0x14] b SHORT G_M15050_IG16 ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M15050_IG25: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
+G_M15050_IG22: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff ldr r0, [r0] and r0, r0, 1 cmp r0, 1
- bne SHORT G_M15050_IG36 - ;; size=18 bbWeight=0.50 PerfScore 3.00 -G_M15050_IG26: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
+ bne G_M15050_IG36 + ;; size=20 bbWeight=0.50 PerfScore 3.00 +G_M15050_IG23: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff ldr r8, [r0] @@ -419,16 +384,16 @@ G_M15050_IG26: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {} ; gcrRegs +[r10] ldrsb r0, [r8] cmp r10, 0
- beq SHORT G_M15050_IG30
+ beq SHORT G_M15050_IG27
ldr r3, [r10] str r3, [sp+0x18] // [V40 tmp33] ; GC ptr vars +{V40} ldr r0, [r3] ands r0, r0, 0x80000000 cmp r0, 0
- bne SHORT G_M15050_IG28
+ bne SHORT G_M15050_IG25
;; size=42 bbWeight=0.50 PerfScore 6.50
-G_M15050_IG27: ; bbWeight=0.50, gcVars=0000000000040000 {V40}, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, gcvars, byref
+G_M15050_IG24: ; bbWeight=0.50, gcVars=0000000000040000 {V40}, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, gcvars, byref
movw r1, 0xd1ff movt r1, 0xd1ff mov r0, r1 @@ -439,7 +404,7 @@ G_M15050_IG27: ; bbWeight=0.50, gcVars=0000000000040000 {V40}, gcrefRegs= blx r2 // <unknown method> ; gcrRegs -[r0] ;; size=22 bbWeight=0.50 PerfScore 3.50
-G_M15050_IG28: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
+G_M15050_IG25: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
ldr r3, [sp+0x18] // [V40 tmp33] ; byrRegs +[r3] ldr r0, [r3+0x04] @@ -451,20 +416,20 @@ G_M15050_IG28: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs= ; GC ptr vars -{V40} blx r3 // CORINFO_HELP_UDIV cmp r0, 0
- beq SHORT G_M15050_IG30
+ beq SHORT G_M15050_IG27
;; size=22 bbWeight=0.50 PerfScore 4.50
-G_M15050_IG29: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
+G_M15050_IG26: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
cmp r0, 1 bne SHORT G_M15050_IG37 ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M15050_IG30: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
+G_M15050_IG27: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
ldr r3, [r8] str r3, [sp+0x14] // [V45 tmp38] ; GC ptr vars +{V45} ldr r0, [r3] ands r0, r0, 0x80000000 cmp r0, 0
- bne SHORT G_M15050_IG31
+ bne SHORT G_M15050_IG28
movw r1, 0xd1ff movt r1, 0xd1ff mov r0, r1 @@ -475,7 +440,7 @@ G_M15050_IG30: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs= blx r2 // <unknown method> ; gcrRegs -[r0] ;; size=38 bbWeight=0.50 PerfScore 6.50
-G_M15050_IG31: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
+G_M15050_IG28: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
ldr r3, [sp+0x14] // [V45 tmp38] ; byrRegs +[r3] ldr r0, [r3+0x04] @@ -493,7 +458,7 @@ G_M15050_IG31: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs= movs r1, 0 b SHORT G_M15050_IG15 ;; size=32 bbWeight=0.50 PerfScore 6.50
-G_M15050_IG32: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0002 {r1}, byref, isz
+G_M15050_IG29: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0002 {r1}, byref, isz
; gcrRegs -[r8 r10] ; byrRegs +[r1] ldr r0, [r7+0x04] @@ -507,11 +472,43 @@ G_M15050_IG32: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0002 {r ; byrRegs +[r0] adds r0, r0, r6 mov r3, r5
- b SHORT G_M15050_IG20 - ;; size=24 bbWeight=0.50 PerfScore 5.50 -G_M15050_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4 r7]
+ ;; size=22 bbWeight=0.50 PerfScore 5.00 +G_M15050_IG30: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0003 {r0 r1}, byref, isz + cmp r2, r3 + bhi SHORT G_M15050_IG39 + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method>
; byrRegs -[r0-r1]
+ ldr r0, [r4+0x10] + add r0, r8 + str r0, [r4+0x10] + ldr r0, [r4+0x14] + sub r0, r0, r8 + str r0, [r4+0x14] + add r6, r8 + sub r5, r5, r8 + ;; size=36 bbWeight=0.50 PerfScore 7.00 +G_M15050_IG31: ; bbWeight=1, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref + ldr r0, [r4+0x08] + ; gcrRegs +[r0] + mov r1, r7 + ; gcrRegs +[r1] + mov r2, r6 + mov r3, r5 + ldr lr, [r0] + ldr lr, [lr+0x3C] + ldr lr, [lr+0x0C] + blx lr // <unknown method> + ; gcrRegs -[r0-r1 r4 r7] + add r0, r8 + ;; size=24 bbWeight=1 PerfScore 9.00 +G_M15050_IG32: ; bbWeight=1, epilog, nogc, extend + add sp, 36 + pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M15050_IG33: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_OVERFLOW @@ -534,8 +531,8 @@ G_M15050_IG35: ; bbWeight=0, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, b ldr r0, [r0] and r0, r0, 1 cmp r0, 1
- beq SHORT G_M15050_IG26 - ;; size=18 bbWeight=0 PerfScore 0.00
+ beq G_M15050_IG23 + ;; size=20 bbWeight=0 PerfScore 0.00
G_M15050_IG36: ; bbWeight=0, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz movw r0, 0xd1ff movt r0, 0xd1ff @@ -543,7 +540,7 @@ G_M15050_IG36: ; bbWeight=0, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, b movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- b SHORT G_M15050_IG26
+ b SHORT G_M15050_IG23
;; size=24 bbWeight=0 PerfScore 0.00 ...

+8 (+0.98%) : 101640.dasm - System.Drawing.ColorTranslator:ToHtml(System.Drawing.Color):System.String (FullOpts)

@@ -10,21 +10,21 @@ ; ; V00 arg0 [V00,T01] ( 7, 7 ) struct (16) [sp+0x38] do-not-enreg[SF] ld-addr-op single-def double-align <System.Drawing.Color> ; V01 loc0 [V01,T00] ( 29, 15.50) ref -> lr class-hnd <System.String>
-; V02 loc1 [V02,T20] ( 3, 1.50) int -> r1
+; V02 loc1 [V02,T19] ( 3, 1.50) int -> r1
; V03 loc2 [V03 ] ( 12, 5.50) struct (24) [sp+0x00] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref double-align "impAppendStmt" <System.Drawing.Color> ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref double-align "spilled call-like call argument" <System.Drawing.Color>
-;* V07 tmp3 [V07,T30] ( 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 ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ; V09 tmp5 [V09,T08] ( 3, 3 ) int -> r3 "Inlining Arg" ;* V10 tmp6 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V11 tmp7 [V11,T31] ( 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 (16) zero-ref ld-addr-op double-align "NewObj constructor temp" <System.Drawing.Color>
-; V13 tmp9 [V13,T21] ( 2, 1 ) ubyte -> r3 "Inline return value spill temp"
+; V13 tmp9 [V13,T20] ( 2, 1 ) ubyte -> r3 "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,T25] ( 3, 1 ) ubyte -> r3 "Inline return value spill temp"
+; V16 tmp12 [V16,T28] ( 3, 0.73) ubyte -> r3 "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,7 +36,7 @@ ; V25 tmp21 [V25,T12] ( 4, 2 ) ref -> lr 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,T26] ( 2, 1 ) ref -> lr class-hnd single-def "Inline return value spill temp" <System.String>
+; V28 tmp24 [V28,T24] ( 2, 1 ) ref -> lr 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> @@ -44,13 +44,13 @@ ; V33 tmp29 [V33,T03] ( 4, 4.00) int -> r0 "Inlining Arg" ;* V34 tmp30 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V35 tmp31 [V35,T09] ( 3, 3.00) int -> r8 "Inlining Arg"
-; V36 tmp32 [V36,T18] ( 2, 2.00) byref -> r7 single-def "Inlining Arg"
+; V36 tmp32 [V36,T17] ( 2, 2.00) byref -> r7 single-def "Inlining Arg"
;* V37 tmp33 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V38 tmp34 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V39 tmp35 [V39,T29] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V39 tmp35 [V39,T27] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V40 tmp36 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V41 tmp37 [V41 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V42 tmp38 [V42,T19] ( 2, 1.99) byref -> r1 single-def "Inlining Arg"
+; V42 tmp38 [V42,T18] ( 2, 1.99) byref -> r1 single-def "Inlining Arg"
;* V43 tmp39 [V43 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp" ;* V44 tmp40 [V44 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp" ;* V45 tmp41 [V45 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp" @@ -64,7 +64,7 @@ ;* V53 tmp49 [V53 ] ( 0, 0 ) short -> zero-ref "field V06.state (fldOffset=0xe)" P-INDEP ;* V54 tmp50 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP ;* V55 tmp51 [V55 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x4)" P-INDEP
-; V56 tmp52 [V56,T27] ( 2, 1 ) byref -> r12 single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+; V56 tmp52 [V56,T25] ( 2, 1 ) byref -> r12 single-def "field V10._reference (fldOffset=0x0)" P-INDEP
;* V57 tmp53 [V57 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP ;* V58 tmp54 [V58 ] ( 0, 0 ) long -> zero-ref "field V12.value (fldOffset=0x0)" P-INDEP ;* V59 tmp55 [V59 ] ( 0, 0 ) ref -> zero-ref single-def "field V12.name (fldOffset=0x8)" P-INDEP @@ -77,25 +77,24 @@ ;* V66 tmp62 [V66 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP ;* V67 tmp63 [V67 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x4)" P-INDEP ;* V68 tmp64 [V68 ] ( 0, 0 ) long -> zero-ref "V00.[000..008)"
-; V69 tmp65 [V69,T17] ( 3, 2 ) ref -> r0 single-def "V00.[008..012)"
+; V69 tmp65 [V69,T16] ( 3, 2 ) ref -> r0 single-def "V00.[008..012)"
; V70 tmp66 [V70,T04] ( 6, 3.50) short -> r1 "V00.[012..014)"
-; V71 tmp67 [V71,T02] ( 7, 4.50) short -> r6 "V00.[014..016)"
+; V71 tmp67 [V71,T02] ( 9, 5.50) short -> r6 "V00.[014..016)"
;* V72 tmp68 [V72 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V73 tmp69 [V73,T07] ( 3, 3 ) ref -> r0 single-def "arr expr" ; V74 cse0 [V74,T13] ( 4, 2 ) int -> r2 "CSE - moderate"
-; V75 cse1 [V75,T14] ( 4, 2 ) int -> r6 "CSE - moderate" -;* V76 rat0 [V76 ] ( 0, 0 ) int -> zero-ref "field V29.lo (fldOffset=0x0)" P-INDEP -;* V77 rat1 [V77 ] ( 0, 0 ) int -> zero-ref "field V29.hi (fldOffset=0x4)" P-INDEP -; V78 rat2 [V78,T22] ( 3, 1.50) int -> r1 "field V43.lo (fldOffset=0x0)" P-INDEP -; V79 rat3 [V79,T15] ( 3, 1.50) int -> r0 "field V43.hi (fldOffset=0x4)" P-INDEP -; V80 rat4 [V80,T23] ( 3, 1.50) int -> r1 "field V44.lo (fldOffset=0x0)" P-INDEP -; V81 rat5 [V81,T16] ( 3, 1.50) int -> r5 "field V44.hi (fldOffset=0x4)" P-INDEP -; V82 rat6 [V82,T24] ( 3, 1.50) int -> r4 "field V45.lo (fldOffset=0x0)" P-INDEP -;* V83 rat7 [V83,T28] ( 0, 0 ) int -> zero-ref "field V45.hi (fldOffset=0x4)" P-INDEP -; V84 rat8 [V84,T05] ( 6, 3.50) int -> r4 "field V68.lo (fldOffset=0x0)" P-INDEP -; V85 rat9 [V85,T06] ( 5, 3 ) int -> r5 "field V68.hi (fldOffset=0x4)" P-INDEP -; V86 rat10 [V86,T10] ( 3, 3 ) int -> r7 "ReplaceWithLclVar is creating a new local variable" -; V87 rat11 [V87,T11] ( 3, 3 ) int -> r8 "ReplaceWithLclVar is creating a new local variable"
+;* V75 rat0 [V75 ] ( 0, 0 ) int -> zero-ref "field V29.lo (fldOffset=0x0)" P-INDEP +;* V76 rat1 [V76 ] ( 0, 0 ) int -> zero-ref "field V29.hi (fldOffset=0x4)" P-INDEP +; V77 rat2 [V77,T21] ( 3, 1.50) int -> r1 "field V43.lo (fldOffset=0x0)" P-INDEP +; V78 rat3 [V78,T14] ( 3, 1.50) int -> r0 "field V43.hi (fldOffset=0x4)" P-INDEP +; V79 rat4 [V79,T22] ( 3, 1.50) int -> r1 "field V44.lo (fldOffset=0x0)" P-INDEP +; V80 rat5 [V80,T15] ( 3, 1.50) int -> r5 "field V44.hi (fldOffset=0x4)" P-INDEP +; V81 rat6 [V81,T23] ( 3, 1.50) int -> r4 "field V45.lo (fldOffset=0x0)" P-INDEP +;* V82 rat7 [V82,T26] ( 0, 0 ) int -> zero-ref "field V45.hi (fldOffset=0x4)" P-INDEP +; V83 rat8 [V83,T05] ( 6, 3.50) int -> r4 "field V68.lo (fldOffset=0x0)" P-INDEP +; V84 rat9 [V84,T06] ( 5, 3 ) int -> r5 "field V68.hi (fldOffset=0x4)" P-INDEP +; V85 rat10 [V85,T10] ( 3, 3 ) int -> r7 "ReplaceWithLclVar is creating a new local variable" +; V86 rat11 [V86,T11] ( 3, 3 ) int -> r8 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 28 @@ -381,8 +380,8 @@ G_M19421_IG35: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, b str r0, [sp+0x08] ;; size=30 bbWeight=0.50 PerfScore 5.48 G_M19421_IG36: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ands r6, r6, 2 - cmp r6, 0
+ ands r1, r6, 2 + cmp r1, 0
beq G_M19421_IG50 mov r1, r4 mov r0, r5 @@ -398,10 +397,11 @@ G_M19421_IG37: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- cmp r6, 0
+ ands r1, r6, 2 + cmp r1, 0
beq SHORT G_M19421_IG51 mov r1, r4
- ;; size=36 bbWeight=0.50 PerfScore 6.50
+ ;; size=40 bbWeight=0.50 PerfScore 7.00
G_M19421_IG38: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz lsrs r1, r1, 8 orr r1, r1, r5 LSL 24 @@ -413,9 +413,10 @@ G_M19421_IG38: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- cmp r6, 0
+ ands r1, r6, 2 + cmp r1, 0
beq SHORT G_M19421_IG52
- ;; size=34 bbWeight=0.50 PerfScore 6.00
+ ;; size=38 bbWeight=0.50 PerfScore 6.50
G_M19421_IG39: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz uxtb r1, r4 add r0, sp, 0 @@ -446,9 +447,9 @@ G_M19421_IG40: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b cmp r0, 0 beq SHORT G_M19421_IG43 ;; size=18 bbWeight=0.50 PerfScore 4.00
-G_M19421_IG41: ; bbWeight=0.43, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+G_M19421_IG41: ; bbWeight=0.16, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
movs r3, 0
- ;; size=2 bbWeight=0.43 PerfScore 0.43
+ ;; size=2 bbWeight=0.16 PerfScore 0.16
G_M19421_IG42: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz b SHORT G_M19421_IG44 ;; size=2 bbWeight=0.50 PerfScore 0.50 @@ -581,7 +582,7 @@ RWD104 dd G_M19421_IG08 dd G_M19421_IG17
-; Total bytes of code 818, prolog size 26, PerfScore 143.07, instruction count 280, allocated bytes for code 818 (MethodHash=f078b422) for method System.Drawing.ColorTranslator:ToHtml(System.Drawing.Color):System.String (FullOpts)
+; Total bytes of code 826, prolog size 26, PerfScore 143.80, instruction count 282, allocated bytes for code 826 (MethodHash=f078b422) for method System.Drawing.ColorTranslator:ToHtml(System.Drawing.Color):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -593,7 +594,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 409 (0x00199) Actual length = 818 (0x000332)
+ Function Length : 413 (0x0019d) Actual length = 826 (0x00033a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

realworld.run.linux.arm.checked.mch

-34 (-58.62%) : 758.dasm - BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<g_GetCurrentProcessInstructionSets|20>d:MoveNext():ubyte:this (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 27 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 6, 4.50) ref -> r0 this class-hnd single-def <BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d>
+; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d>
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
-; V02 loc1 [V02,T02] ( 3, 1.50) int -> r0 single-def
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 rat0 [V04,T01] ( 3, 6 ) int -> r3 "ReplaceWithLclVar is creating a new local variable"
+; V04 rat0 [V04,T01] ( 2, 4 ) int -> r3 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0 @@ -24,39 +24,19 @@ G_M6535_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref ; gcrRegs +[r0] ldr r3, [r0+0x08] cmp r3, 27
- bhi SHORT G_M6535_IG05 - movs r2, 1 - lsr r3, r2, r3 - and r3, r3, 1 - cmp r3, 0 - beq SHORT G_M6535_IG04 - ;; size=20 bbWeight=1 PerfScore 8.00 -G_M6535_IG03: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ bhi SHORT G_M6535_IG03
mov r3, -1 str r3, [r0+0x08]
- ldr r0, [r0+0x10] - ; gcrRegs -[r0] - subs r3, r0, 1 - cmp r3, 1 - bls SHORT G_M6535_IG05 - cmp r0, 4 - beq SHORT G_M6535_IG05 - b SHORT G_M6535_IG05 - ;; size=20 bbWeight=0.50 PerfScore 4.50 -G_M6535_IG04: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref - ; gcrRegs +[r0] - mov r3, -1 - str r3, [r0+0x08] - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M6535_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=1 PerfScore 5.00 +G_M6535_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movs r0, 0 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M6535_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M6535_IG04: ; bbWeight=1, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 58, prolog size 6, PerfScore 17.50, instruction count 23, allocated bytes for code 58 (MethodHash=ff50e678) for method BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 24, prolog size 6, PerfScore 9.00, instruction count 9, allocated bytes for code 24 (MethodHash=ff50e678) for method BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d:MoveNext():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -68,7 +48,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 58 (0x00003a)
+ Function Length : 12 (0x0000c) Actual length = 24 (0x000018)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-26 (-26.00%) : 11358.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 -> r4 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 -> r4 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 -> r0 class-hnd exact single-def <<unknown class>> ;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <FSharp.Compiler.TypedTree+ValRef> @@ -38,54 +38,39 @@ G_M3270_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref ; gcrRegs -[r1] +[r0] ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M3270_IG04
+ beq SHORT G_M3270_IG05
;; size=24 bbWeight=1 PerfScore 8.00 G_M3270_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
- mov r1, r4 - ; gcrRegs +[r1] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[r1 r4] +[r0] - ; gcr arg pop 0 - cmp r0, 0 - bne SHORT G_M3270_IG06 - b SHORT G_M3270_IG06 - ;; size=26 bbWeight=0.50 PerfScore 4.50 -G_M3270_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0] +[r4]
ldr r0, [r4+0x0C] ; gcrRegs +[r0] cmp r0, 0
- beq SHORT G_M3270_IG06
+ beq SHORT G_M3270_IG05
ldr r1, [r4+0x10] ; gcrRegs +[r1] cmp r1, 0
- bne SHORT G_M3270_IG06
+ bne SHORT G_M3270_IG05
ldr r0, [r0+0x04] ldr r1, [r4+0x04] movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] ;; size=26 bbWeight=0.50 PerfScore 5.50
-G_M3270_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M3270_IG04: ; bbWeight=0.50, epilog, nogc, extend
add sp, 4 pop {r4,r11,lr} bx r3 // FSharp.Compiler.Infos:ValRef.IsFSharpEventProperty(FSharp.Compiler.TypedTree+ValRef,FSharp.Compiler.TcGlobals+TcGlobals):ubyte ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M3270_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3270_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0-r1 r4] movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3270_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M3270_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 100, prolog size 10, PerfScore 23.50, instruction count 36, allocated bytes for code 100 (MethodHash=cb2ef339) for method FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
+; Total bytes of code 74, prolog size 10, PerfScore 19.00, instruction count 27, allocated bytes for code 74 (MethodHash=cb2ef339) for method FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -97,7 +82,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 50 (0x00032) Actual length = 100 (0x000064)
+ Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-22 (-14.47%) : 32919.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:g_makeReplacement|171(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode (FullOpts)

@@ -8,20 +8,21 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 6, 4.50) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode>
+; V00 arg0 [V00,T00] ( 5, 4 ) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode>
; V01 arg1 [V01,T01] ( 4, 3 ) ref -> r6 class-hnd single-def <System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]>
-; V02 loc0 [V02,T04] ( 5, 2.25) ref -> r0 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundDagFieldEvaluation> -; V03 loc1 [V03,T05] ( 4, 2 ) ref -> r7 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
+; V02 loc0 [V02,T03] ( 5, 2.25) ref -> r0 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundDagFieldEvaluation> +; V03 loc1 [V03,T04] ( 4, 2 ) ref -> r7 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
; V04 loc2 [V04,T02] ( 4, 2.75) ref -> r4 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundEvaluationDecisionDagNode> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundEvaluationDecisionDagNode>
-; V07 tmp2 [V07,T06] ( 2, 2 ) ref -> r0 single-def "CASTCLASS eval op1"
+; V07 tmp2 [V07,T05] ( 2, 2 ) ref -> r0 single-def "CASTCLASS eval op1"
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundDagFieldEvaluation>
-; V09 tmp4 [V09,T03] ( 3, 2.50) ref -> r0 class-hnd "spilling QMark2" <<unknown class>> -; V10 tmp5 [V10,T07] ( 2, 2 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundDagTemp>
+;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> +; V10 tmp5 [V10,T06] ( 2, 2 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundDagTemp>
;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
-; V13 cse0 [V13,T08] ( 3, 1.50) int -> r8 "CSE - moderate"
+; V13 cse0 [V13,T07] ( 3, 1.50) int -> r8 "CSE - moderate" +; V14 cse1 [V14,T08] ( 2, 0.50) int -> r0 "CSE - conservative"
; ; Lcl frame size = 4 @@ -37,53 +38,34 @@ G_M26195_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b mov r4, r5 ; gcrRegs +[r4] cmp r4, 0
- beq SHORT G_M26195_IG04
+ beq SHORT G_M26195_IG08
;; size=6 bbWeight=1 PerfScore 3.00 G_M26195_IG03: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz ldr r0, [r4] movw r3, 0xd1ff movt r3, 0xd1ff cmp r0, r3
- beq SHORT G_M26195_IG07
+ bne SHORT G_M26195_IG08
;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M26195_IG04: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r4] - mov r0, r5 - ; gcrRegs +[r0] - cmp r0, 0 - beq SHORT G_M26195_IG11 - ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M26195_IG05: ; bbWeight=0.25, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz - ldr r0, [r0] - ; gcrRegs -[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r0, r3 - beq SHORT G_M26195_IG11 - ;; size=14 bbWeight=0.25 PerfScore 1.25 -G_M26195_IG06: ; bbWeight=0.12, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz - b SHORT G_M26195_IG11 - ;; size=2 bbWeight=0.12 PerfScore 0.12 -G_M26195_IG07: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r4]
+G_M26195_IG04: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r0, [r5+0x0C] ; gcrRegs +[r0] cmp r0, 0
- beq SHORT G_M26195_IG11
+ beq SHORT G_M26195_IG08
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M26195_IG08: ; bbWeight=0.25, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M26195_IG05: ; bbWeight=0.25, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r3, [r0] movw r2, 0xd1ff movt r2, 0xd1ff cmp r3, r2
- bne SHORT G_M26195_IG11
+ bne SHORT G_M26195_IG08
;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M26195_IG09: ; bbWeight=0.50, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M26195_IG06: ; bbWeight=0.50, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r3, [r0+0x0C] ; gcrRegs +[r3] ldr r3, [r3+0x10] cmp r3, 0
- bne SHORT G_M26195_IG11
+ bne SHORT G_M26195_IG08
ldr r7, [r0+0x10] ; gcrRegs +[r7] mov r0, r7 @@ -94,7 +76,7 @@ G_M26195_IG09: ; bbWeight=0.50, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0 blx r3 // <unknown method> ; gcr arg pop 0 cmp r0, 0
- beq SHORT G_M26195_IG11
+ beq SHORT G_M26195_IG08
mov r0, r7 ldr r3, [r8+0x14] blx r3 // <unknown method> @@ -112,10 +94,10 @@ G_M26195_IG09: ; bbWeight=0.50, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0 ; gcrRegs -[r1 r6] ; gcr arg pop 0 ;; size=52 bbWeight=0.50 PerfScore 10.50
-G_M26195_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M26195_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r7,r8,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M26195_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref
+G_M26195_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0] +[r5-r6] mov r0, r5 ; gcrRegs +[r0] @@ -125,14 +107,14 @@ G_M26195_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6 movt r3, 0xd1ff ldr r3, [r3] ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M26195_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M26195_IG09: ; bbWeight=0.50, epilog, nogc, extend
add sp, 4 pop {r4,r5,r6,r7,r8,r11,lr} bx r3 // <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 152, prolog size 12, PerfScore 28.88, instruction count 59, allocated bytes for code 152 (MethodHash=af9999ac) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:<RewriteTupleInput>g__makeReplacement|17_1(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode (FullOpts)
+; Total bytes of code 130, prolog size 12, PerfScore 26.00, instruction count 50, allocated bytes for code 130 (MethodHash=af9999ac) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:<RewriteTupleInput>g__makeReplacement|17_1(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode (FullOpts)
; ============================================================ Unwind Info: @@ -144,7 +126,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 76 (0x0004c) Actual length = 152 (0x000098)
+ Function Length : 65 (0x00041) Actual length = 130 (0x000082)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.06%) : 24217.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,ubyte):this (FullOpts)

@@ -3401,10 +3401,8 @@ G_M12170_IG133: ; bbWeight=2, gcrefRegs=0280 {r7 r9}, byrefRegs=0040 {r6} blx r3 // <unknown method> ; gcrRegs -[r0] ; gcr arg pop 0
- cmp r0, 5 - bne SHORT G_M12170_IG137
b SHORT G_M12170_IG137
- ;; size=56 bbWeight=2 PerfScore 46.00
+ ;; size=52 bbWeight=2 PerfScore 42.00
G_M12170_IG134: ; bbWeight=2, gcrefRegs=0080 {r7}, byrefRegs=0040 {r6}, byref, isz ldr r5, [sp+0xA0] // [V266 tmp237] ; gcrRegs +[r5] @@ -4294,7 +4292,7 @@ G_M12170_IG174: ; bbWeight=0, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byr bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 6898, prolog size 32, PerfScore 1253.75, instruction count 2438, allocated bytes for code 6898 (MethodHash=068ad075) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,ubyte):this (FullOpts)
+; Total bytes of code 6894, prolog size 32, PerfScore 1249.75, instruction count 2436, allocated bytes for code 6894 (MethodHash=068ad075) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,ubyte):this (FullOpts)
; ============================================================ Unwind Info: @@ -4306,7 +4304,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 3449 (0x00d79) Actual length = 6898 (0x001af2)
+ Function Length : 3447 (0x00d77) Actual length = 6894 (0x001aee)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 26564.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNativeIntegerOverflowingUnaryOperator(int,Microsoft.CodeAnalysis.ConstantValue):System.Object (FullOpts)

@@ -23,17 +23,9 @@ G_M35943_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35943_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz movw r3, 0xd1ff cmp r0, r3
- beq SHORT G_M35943_IG05
+ bne SHORT G_M35943_IG05
;; size=8 bbWeight=1 PerfScore 3.00
-G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4] - movs r0, 0 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend - pop {r4,r5,r11,pc} - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M35943_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4]
+G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -55,11 +47,17 @@ G_M35943_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, mov r0, r5 ; gcrRegs +[r0] ;; size=40 bbWeight=0.50 PerfScore 8.00
+G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend + pop {r4,r5,r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M35943_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r0 r5] + movs r0, 0 + ;; size=2 bbWeight=0.50 PerfScore 0.50
G_M35943_IG06: ; bbWeight=0.50, epilog, nogc, extend pop {r4,r5,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M35943_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0 r5]
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_OVERFLOW

+2 (+0.85%) : 4131.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] ( 7, 12 ) ref -> r7 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,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
+;* V14 tmp8 [V14,T11] ( 0, 0 ) long -> zero-ref single-def "field V07.code1 (fldOffset=0x0)" P-INDEP +;* V15 tmp9 [V15,T12] ( 0, 0 ) long -> zero-ref single-def "field V07.code2 (fldOffset=0x8)" P-INDEP
;* V16 tmp10 [V16,T09] ( 0, 0 ) ref -> zero-ref single-def "BlockOp address local"
-; V17 rat0 [V17,T03] ( 3, 6 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" -; V18 rat1 [V18,T04] ( 3, 6 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V17 tmp11 [V17,T10] ( 2, 1 ) ref -> r2 single-def "Field obj" +; V18 rat0 [V18,T03] ( 3, 6 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" +; V19 rat1 [V19,T04] ( 3, 6 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 8 @@ -124,7 +125,7 @@ G_M10872_IG04: ; bbWeight=0.50, gcrefRegs=00A1 {r0 r5 r7}, byrefRegs=0000 ; gcrRegs -[r2] ldr r2, [r0+0x08] ; gcrRegs +[r2]
- ldr r2, [r2+0x08]
+ ldrsb r2, [r2]
; gcrRegs -[r2] ldr r2, [r0+0x04] ; gcrRegs +[r2] @@ -134,7 +135,7 @@ G_M10872_IG04: ; bbWeight=0.50, gcrefRegs=00A1 {r0 r5 r7}, byrefRegs=0000 movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3]
- ;; size=20 bbWeight=0.50 PerfScore 4.00
+ ;; size=22 bbWeight=0.50 PerfScore 4.00
G_M10872_IG05: ; bbWeight=0.50, epilog, nogc, extend add sp, 8 pop {r4,r5,r6,r7,r11,lr} @@ -169,7 +170,7 @@ G_M10872_IG07: ; bbWeight=0.50, epilog, nogc, extend pop {r2,r3,r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 236, prolog size 8, PerfScore 71.00, instruction count 84, allocated bytes for code 236 (MethodHash=bcfad587) for method FSharp.Compiler.CompilerConfig+TcConfig:computeKnownDllReference(System.String):System.Tuple`2[FSharp.Compiler.CompilerConfig+AssemblyReference,Microsoft.FSharp.Core.FSharpOption`1[System.String]]:this (FullOpts)
+; Total bytes of code 238, prolog size 8, PerfScore 71.00, instruction count 84, allocated bytes for code 238 (MethodHash=bcfad587) for method FSharp.Compiler.CompilerConfig+TcConfig:computeKnownDllReference(System.String):System.Tuple`2[FSharp.Compiler.CompilerConfig+AssemblyReference,Microsoft.FSharp.Core.FSharpOption`1[System.String]]:this (FullOpts)
; ============================================================ Unwind Info: @@ -181,7 +182,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 118 (0x00076) Actual length = 236 (0x0000ec)
+ Function Length : 119 (0x00077) Actual length = 238 (0x0000ee)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm.checked.mch 34 34 0 0 -366 +0
benchmarks.run_pgo.linux.arm.checked.mch 88 80 1 7 -1,018 +4
benchmarks.run_tiered.linux.arm.checked.mch 29 28 0 1 -266 +0
coreclr_tests.run.linux.arm.checked.mch 541 290 4 247 -4,944 +24
libraries.crossgen2.linux.arm.checked.mch 53 52 0 1 -590 +0
libraries.pmi.linux.arm.checked.mch 245 234 3 8 -2,934 +34
libraries_tests.run.linux.arm.Release.mch 851 811 14 26 -12,612 +100
librariestestsnotieredcompilation.run.linux.arm.Release.mch 311 295 4 12 -3,558 +16
realworld.run.linux.arm.checked.mch 68 66 1 1 -1,036 +2
2,220 1,890 27 303 -27,324 +180

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 45,964 5,344 40,620 1,203 (2.55%) 1,203 (2.55%)
benchmarks.run_pgo.linux.arm.checked.mch 159,513 56,729 102,784 3,201 (1.97%) 3,201 (1.97%)
benchmarks.run_tiered.linux.arm.checked.mch 80,099 43,607 36,492 1,086 (1.34%) 1,086 (1.34%)
coreclr_tests.run.linux.arm.checked.mch 471,993 259,195 212,798 7,170 (1.50%) 7,170 (1.50%)
libraries.crossgen2.linux.arm.checked.mch 188,191 14 188,177 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm.checked.mch 272,360 6 272,354 7,786 (2.78%) 7,786 (2.78%)
libraries_tests.run.linux.arm.Release.mch 710,231 442,672 267,559 16,195 (2.23%) 16,195 (2.23%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 274,633 21,604 253,029 33,224 (10.79%) 33,224 (10.79%)
realworld.run.linux.arm.checked.mch 36,407 157 36,250 1,408 (3.72%) 1,408 (3.72%)
2,239,391 829,328 1,410,063 71,273 (3.08%) 71,273 (3.08%)

jit-analyze output

benchmarks.run.linux.arm.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15292190 (overridden on cmd)
Total bytes of diff: 15291824 (overridden on cmd)
Total bytes of delta: -366 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -34 : 761.dasm (-58.62 % of base)
         -26 : 26062.dasm (-0.55 % of base)
         -24 : 11191.dasm (-0.24 % of base)
         -20 : 14489.dasm (-1.61 % of base)
         -20 : 31657.dasm (-10.99 % of base)
         -14 : 5175.dasm (-3.12 % of base)
         -12 : 25319.dasm (-3.09 % of base)
         -12 : 37137.dasm (-4.92 % of base)
         -12 : 11535.dasm (-2.08 % of base)
         -12 : 11769.dasm (-1.55 % of base)
         -12 : 18374.dasm (-0.42 % of base)
         -12 : 17452.dasm (-2.76 % of base)
         -12 : 23393.dasm (-8.11 % of base)
         -12 : 24777.dasm (-2.83 % of base)
         -12 : 25417.dasm (-3.14 % of base)
         -10 : 13693.dasm (-2.15 % of base)
         -10 : 7018.dasm (-4.00 % of base)
         -10 : 25930.dasm (-4.90 % of base)
          -8 : 10684.dasm (-1.99 % of base)
          -8 : 2515.dasm (-0.94 % of base)

34 total files with Code Size differences (34 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
         -34 (-58.62 % of base) : 761.dasm - BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d:MoveNext():ubyte:this (FullOpts)
         -26 (-0.55 % of base) : 26062.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
         -24 (-0.24 % of base) : 11191.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
         -20 (-10.99 % of base) : 31657.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
         -20 (-1.61 % of base) : 14489.dasm - System.Xml.EncodingStreamWrapper:.ctor(System.IO.Stream,System.Text.Encoding):this (FullOpts)
         -14 (-3.12 % of base) : 5175.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (FullOpts)
         -12 (-2.83 % of base) : 24777.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyDataForAssemblyBeingBuilt[System.__Canon,System.__Canon]:.ctor(Microsoft.CodeAnalysis.AssemblyIdentity,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]):this (FullOpts)
         -12 (-3.09 % of base) : 25319.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchMethodSignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (FullOpts)
         -12 (-3.14 % of base) : 25417.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchPropertySignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (FullOpts)
         -12 (-4.92 % of base) : 37137.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (FullOpts)
         -12 (-8.11 % of base) : 23393.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
         -12 (-2.76 % of base) : 17452.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (FullOpts)
         -12 (-0.42 % of base) : 18374.dasm - System.Formats.Tar.TarHeader+<ProcessDataBlockAsync>d__52:MoveNext():this (FullOpts)
         -12 (-1.55 % of base) : 11769.dasm - System.Runtime.Serialization.DateTimeOffsetAdapter:GetDateTimeOffset(System.Runtime.Serialization.DateTimeOffsetAdapter):System.DateTimeOffset (FullOpts)
         -12 (-2.08 % of base) : 11535.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:InitForReading(System.IO.Stream,System.Text.Encoding):this (FullOpts)
         -10 (-4.90 % of base) : 25930.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (FullOpts)
         -10 (-2.15 % of base) : 13693.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.__Canon[],int):this (FullOpts)
         -10 (-4.00 % of base) : 7018.dasm - System.Uri:get_HostNameType():int:this (FullOpts)
          -8 (-0.51 % of base) : 18388.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (FullOpts)
          -8 (-0.94 % of base) : 2515.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (FullOpts)

Top method improvements (percentages):
         -34 (-58.62 % of base) : 761.dasm - BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d:MoveNext():ubyte:this (FullOpts)
         -20 (-10.99 % of base) : 31657.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
         -12 (-8.11 % of base) : 23393.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
         -12 (-4.92 % of base) : 37137.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (FullOpts)
         -10 (-4.90 % of base) : 25930.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (FullOpts)
          -6 (-4.84 % of base) : 18350.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (FullOpts)
         -10 (-4.00 % of base) : 7018.dasm - System.Uri:get_HostNameType():int:this (FullOpts)
         -12 (-3.14 % of base) : 25417.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchPropertySignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (FullOpts)
         -14 (-3.12 % of base) : 5175.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (FullOpts)
         -12 (-3.09 % of base) : 25319.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchMethodSignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (FullOpts)
         -12 (-2.83 % of base) : 24777.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyDataForAssemblyBeingBuilt[System.__Canon,System.__Canon]:.ctor(Microsoft.CodeAnalysis.AssemblyIdentity,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]):this (FullOpts)
         -12 (-2.76 % of base) : 17452.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (FullOpts)
          -6 (-2.63 % of base) : 25502.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<BuildMembersAndInitializers>g__buildDeclaredMembersAndInitializers|169_1(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializers:this (FullOpts)
         -10 (-2.15 % of base) : 13693.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.__Canon[],int):this (FullOpts)
         -12 (-2.08 % of base) : 11535.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:InitForReading(System.IO.Stream,System.Text.Encoding):this (FullOpts)
          -8 (-1.99 % of base) : 10684.dasm - System.Xml.XmlConvert:CreateInvalidNameCharException(System.String,int,int):System.Exception (FullOpts)
         -20 (-1.61 % of base) : 14489.dasm - System.Xml.EncodingStreamWrapper:.ctor(System.IO.Stream,System.Text.Encoding):this (FullOpts)
         -12 (-1.55 % of base) : 11769.dasm - System.Runtime.Serialization.DateTimeOffsetAdapter:GetDateTimeOffset(System.Runtime.Serialization.DateTimeOffsetAdapter):System.DateTimeOffset (FullOpts)
          -6 (-1.45 % of base) : 10213.dasm - System.Linq.Enumerable:Min[ulong](System.Collections.Generic.IEnumerable`1[ulong],System.Collections.Generic.IComparer`1[ulong]):ulong (FullOpts)
          -6 (-1.34 % of base) : 260.dasm - System.Linq.Enumerable+<SkipWhileIterator>d__258`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)

34 total methods with Code Size differences (34 improved, 0 regressed).


benchmarks.run_pgo.linux.arm.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 63957952 (overridden on cmd)
Total bytes of diff: 63956938 (overridden on cmd)
Total bytes of delta: -1014 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 10621.dasm (0.47 % of base)

Top file improvements (bytes):
         -68 : 101355.dasm (-1.55 % of base)
         -30 : 100624.dasm (-11.45 % of base)
         -28 : 14533.dasm (-5.62 % of base)
         -24 : 37729.dasm (-0.24 % of base)
         -22 : 101372.dasm (-6.75 % of base)
         -20 : 118333.dasm (-10.99 % of base)
         -20 : 100156.dasm (-0.59 % of base)
         -18 : 91305.dasm (-0.95 % of base)
         -16 : 124898.dasm (-1.10 % of base)
         -16 : 30140.dasm (-13.56 % of base)
         -16 : 46375.dasm (-13.56 % of base)
         -16 : 56799.dasm (-17.02 % of base)
         -16 : 66086.dasm (-13.56 % of base)
         -16 : 78256.dasm (-13.56 % of base)
         -16 : 126031.dasm (-13.56 % of base)
         -16 : 151435.dasm (-17.02 % of base)
         -16 : 151446.dasm (-13.56 % of base)
         -16 : 156464.dasm (-13.56 % of base)
         -16 : 100349.dasm (-3.51 % of base)
         -16 : 124906.dasm (-1.45 % of base)

49 total files with Code Size differences (48 improved, 1 regressed), 7 unchanged.

Top method regressions (bytes):
           4 (0.47 % of base) : 10621.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (Tier0-FullOpts)

Top method improvements (bytes):
         -68 (-1.55 % of base) : 101355.dasm - System.Reflection.PortableExecutable.ManagedPEBuilder:SerializeTextSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (Tier1)
         -30 (-11.45 % of base) : 100624.dasm - System.Reflection.PortableExecutable.ManagedTextSection:CalculateOffsetToMappedFieldDataStreamUnaligned():int:this (Tier1)
         -28 (-5.62 % of base) : 14533.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[System.__Canon]:TryLocalPop(byref):ubyte:this (Tier1)
         -24 (-0.24 % of base) : 37729.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
         -22 (-6.75 % of base) : 101372.dasm - System.Reflection.PortableExecutable.ManagedTextSection:GetEntryPointAddress(int):int:this (Tier1)
         -20 (-0.59 % of base) : 100156.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
         -20 (-10.99 % of base) : 118333.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
         -18 (-0.95 % of base) : 91305.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (Tier0-FullOpts)
         -16 (-3.51 % of base) : 100349.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:get_Count():int:this (Tier1)
         -16 (-3.83 % of base) : 24081.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveRange(int,int):this (Tier1)
         -16 (-17.02 % of base) : 56799.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
         -16 (-17.02 % of base) : 151435.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
         -16 (-17.02 % of base) : 8449.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
         -16 (-17.02 % of base) : 86576.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
         -16 (-13.56 % of base) : 30140.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -16 (-13.56 % of base) : 46375.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -16 (-13.56 % of base) : 66086.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -16 (-13.56 % of base) : 78256.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -16 (-13.56 % of base) : 126031.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -16 (-13.56 % of base) : 151446.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)

Top method regressions (percentages):
           4 (0.47 % of base) : 10621.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (Tier0-FullOpts)

Top method improvements (percentages):
         -16 (-17.02 % of base) : 56799.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
         -16 (-17.02 % of base) : 151435.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
         -16 (-17.02 % of base) : 8449.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
         -16 (-17.02 % of base) : 86576.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
         -10 (-15.62 % of base) : 100625.dasm - System.Reflection.PortableExecutable.ManagedTextSection:get_SizeOfImportTable():int:this (Tier1)
         -16 (-13.56 % of base) : 30140.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -16 (-13.56 % of base) : 46375.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -16 (-13.56 % of base) : 66086.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -16 (-13.56 % of base) : 78256.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -16 (-13.56 % of base) : 126031.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -16 (-13.56 % of base) : 151446.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -16 (-13.56 % of base) : 156464.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -16 (-13.56 % of base) : 131041.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -16 (-13.56 % of base) : 88468.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -30 (-11.45 % of base) : 100624.dasm - System.Reflection.PortableExecutable.ManagedTextSection:CalculateOffsetToMappedFieldDataStreamUnaligned():int:this (Tier1)
         -20 (-10.99 % of base) : 118333.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
         -12 (-8.11 % of base) : 84914.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableArray():System.__Canon:this (Tier0-FullOpts)
         -22 (-6.75 % of base) : 101372.dasm - System.Reflection.PortableExecutable.ManagedTextSection:GetEntryPointAddress(int):int:this (Tier1)
         -28 (-5.62 % of base) : 14533.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[System.__Canon]:TryLocalPop(byref):ubyte:this (Tier1)
         -10 (-5.32 % of base) : 124904.dasm - System.IO.BufferedStream:ReadFromBuffer(System.Span`1[ubyte]):int:this (Tier1)


benchmarks.run_tiered.linux.arm.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 21548230 (overridden on cmd)
Total bytes of diff: 21547964 (overridden on cmd)
Total bytes of delta: -266 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -26 : 54158.dasm (-0.55 % of base)
         -24 : 26113.dasm (-0.24 % of base)
         -20 : 63785.dasm (-10.99 % of base)
         -14 : 15414.dasm (-3.12 % of base)
         -12 : 45870.dasm (-8.11 % of base)
         -12 : 48254.dasm (-2.83 % of base)
         -12 : 66974.dasm (-4.92 % of base)
         -12 : 34662.dasm (-2.76 % of base)
         -12 : 49485.dasm (-3.09 % of base)
         -12 : 49744.dasm (-3.14 % of base)
         -10 : 50856.dasm (-4.90 % of base)
         -10 : 28796.dasm (-2.15 % of base)
          -8 : 11827.dasm (-0.94 % of base)
          -8 : 36199.dasm (-0.51 % of base)
          -8 : 23414.dasm (-1.99 % of base)
          -6 : 25909.dasm (-0.31 % of base)
          -6 : 24857.dasm (-1.45 % of base)
          -6 : 20448.dasm (-0.47 % of base)
          -6 : 23435.dasm (-2.11 % of base)
          -6 : 36498.dasm (-4.84 % of base)

28 total files with Code Size differences (28 improved, 0 regressed), 1 unchanged.

Top method improvements (bytes):
         -26 (-0.55 % of base) : 54158.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
         -24 (-0.24 % of base) : 26113.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
         -20 (-10.99 % of base) : 63785.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
         -14 (-3.12 % of base) : 15414.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (Tier0-FullOpts)
         -12 (-2.83 % of base) : 48254.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyDataForAssemblyBeingBuilt[System.__Canon,System.__Canon]:.ctor(Microsoft.CodeAnalysis.AssemblyIdentity,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]):this (Tier0-FullOpts)
         -12 (-3.09 % of base) : 49485.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchMethodSignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (Tier0-FullOpts)
         -12 (-3.14 % of base) : 49744.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchPropertySignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (Tier0-FullOpts)
         -12 (-4.92 % of base) : 66974.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (Tier0-FullOpts)
         -12 (-8.11 % of base) : 45870.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableArray():System.__Canon:this (Tier0-FullOpts)
         -12 (-2.76 % of base) : 34662.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (Tier1)
         -10 (-4.90 % of base) : 50856.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (Tier0-FullOpts)
         -10 (-2.15 % of base) : 28796.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.__Canon[],int):this (Tier0-FullOpts)
          -8 (-0.51 % of base) : 36199.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (Tier0-FullOpts)
          -8 (-0.94 % of base) : 11827.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (Tier0-FullOpts)
          -8 (-1.99 % of base) : 23414.dasm - System.Xml.XmlConvert:CreateInvalidNameCharException(System.String,int,int):System.Exception (Tier1)
          -6 (-0.54 % of base) : 51305.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__ensureAllUnderlyingConversionsChecked|210_1(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0-FullOpts)
          -6 (-4.84 % of base) : 36498.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (Tier0-FullOpts)
          -6 (-0.31 % of base) : 25909.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<CopyToAsyncCore>d__57:MoveNext():this (Tier1)
          -6 (-0.20 % of base) : 44805.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__37:MoveNext():this (Tier1)
          -6 (-1.45 % of base) : 24857.dasm - System.Linq.Enumerable:Min[ulong](System.Collections.Generic.IEnumerable`1[ulong],System.Collections.Generic.IComparer`1[ulong]):ulong (Tier0-FullOpts)

Top method improvements (percentages):
         -20 (-10.99 % of base) : 63785.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
         -12 (-8.11 % of base) : 45870.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableArray():System.__Canon:this (Tier0-FullOpts)
         -12 (-4.92 % of base) : 66974.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (Tier0-FullOpts)
         -10 (-4.90 % of base) : 50856.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (Tier0-FullOpts)
          -6 (-4.84 % of base) : 36498.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (Tier0-FullOpts)
         -12 (-3.14 % of base) : 49744.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchPropertySignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (Tier0-FullOpts)
         -14 (-3.12 % of base) : 15414.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (Tier0-FullOpts)
         -12 (-3.09 % of base) : 49485.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchMethodSignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (Tier0-FullOpts)
         -12 (-2.83 % of base) : 48254.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyDataForAssemblyBeingBuilt[System.__Canon,System.__Canon]:.ctor(Microsoft.CodeAnalysis.AssemblyIdentity,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]):this (Tier0-FullOpts)
         -12 (-2.76 % of base) : 34662.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (Tier1)
         -10 (-2.15 % of base) : 28796.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.__Canon[],int):this (Tier0-FullOpts)
          -6 (-2.11 % of base) : 23435.dasm - System.Xml.XmlConvert:CreateException(System.String,System.String[],int,int,int):System.Exception (Tier1)
          -8 (-1.99 % of base) : 23414.dasm - System.Xml.XmlConvert:CreateInvalidNameCharException(System.String,int,int):System.Exception (Tier1)
          -6 (-1.45 % of base) : 24857.dasm - System.Linq.Enumerable:Min[ulong](System.Collections.Generic.IEnumerable`1[ulong],System.Collections.Generic.IComparer`1[ulong]):ulong (Tier0-FullOpts)
          -6 (-1.34 % of base) : 622.dasm - System.Linq.Enumerable+<SkipWhileIterator>d__258`1[System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
          -6 (-1.30 % of base) : 971.dasm - System.Reflection.TypeNameParser:EscapeTypeName(System.String):System.String (Tier0-FullOpts)
          -8 (-0.94 % of base) : 11827.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (Tier0-FullOpts)
          -4 (-0.67 % of base) : 71787.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
          -2 (-0.63 % of base) : 8666.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
          -2 (-0.63 % of base) : 8654.dasm - System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)

28 total methods with Code Size differences (28 improved, 0 regressed).


coreclr_tests.run.linux.arm.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 321754792 (overridden on cmd)
Total bytes of diff: 321749872 (overridden on cmd)
Total bytes of delta: -4920 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           6 : 325325.dasm (4.17 % of base)
           6 : 325401.dasm (4.05 % of base)
           6 : 325818.dasm (4.05 % of base)
           6 : 325742.dasm (4.17 % of base)

Top file improvements (bytes):
        -354 : 212137.dasm (-3.21 % of base)
        -354 : 424668.dasm (-3.21 % of base)
         -62 : 413056.dasm (-79.49 % of base)
         -58 : 308589.dasm (-1.17 % of base)
         -58 : 312321.dasm (-1.17 % of base)
         -52 : 24782.dasm (-1.03 % of base)
         -50 : 408552.dasm (-29.41 % of base)
         -50 : 408996.dasm (-75.76 % of base)
         -50 : 414410.dasm (-1.26 % of base)
         -50 : 408130.dasm (-1.26 % of base)
         -48 : 421607.dasm (-12.37 % of base)
         -48 : 424102.dasm (-16.67 % of base)
         -40 : 413004.dasm (-71.43 % of base)
         -38 : 211377.dasm (-27.54 % of base)
         -38 : 424024.dasm (-27.54 % of base)
         -34 : 157217.dasm (-6.83 % of base)
         -34 : 2614.dasm (-6.83 % of base)
         -34 : 312993.dasm (-6.97 % of base)
         -34 : 31378.dasm (-6.83 % of base)
         -34 : 156501.dasm (-6.97 % of base)

39 total files with Code Size differences (35 improved, 4 regressed), 35 unchanged.

Top method regressions (bytes):
           6 (4.17 % of base) : 325325.dasm - testout1:Sub_Funclet_106():int (FullOpts)
           6 (4.17 % of base) : 325742.dasm - testout1:Sub_Funclet_106():int (FullOpts)
           6 (4.05 % of base) : 325401.dasm - testout1:Sub_Funclet_183():int (FullOpts)
           6 (4.05 % of base) : 325818.dasm - testout1:Sub_Funclet_183():int (FullOpts)

Top method improvements (bytes):
        -354 (-3.21 % of base) : 424668.dasm - ILGEN_0x372a9ae6:Method_0xdc6ff1a4(byte,byte,int,int,ushort,double,long,ulong):int (FullOpts)
        -354 (-3.21 % of base) : 212137.dasm - ILGEN_0x372a9ae6:Method_0xdc6ff1a4(byte,byte,int,int,ushort,double,long,ulong):int (Tier0-FullOpts)
         -62 (-79.49 % of base) : 413056.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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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)
         -58 (-1.17 % of base) : 308589.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -58 (-1.17 % of base) : 312321.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -52 (-1.03 % of base) : 24782.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -50 (-75.76 % of base) : 408996.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)
         -50 (-29.41 % of base) : 408552.dasm - Test_10w5d.testout1:Func_0_2_6_2_2():double (FullOpts)
         -50 (-1.26 % of base) : 414410.dasm - Test_10w5d.testout1:Func_0_4_5_3():System.Decimal (FullOpts)
         -50 (-1.26 % of base) : 408130.dasm - Test_10w5d.testout1:Func_0_4_5_3():System.Decimal (FullOpts)
         -48 (-12.37 % of base) : 421607.dasm - GitHub_19171:Vector3EqualsTest() (FullOpts)
         -48 (-16.67 % of base) : 424102.dasm - ILGEN_0xc53351bb:Method_0x6cf4(short,byte,uint,ulong,int,long,short,short,ubyte,long,float,ubyte,ulong,ubyte):float (FullOpts)
         -40 (-71.43 % of base) : 413004.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)
         -38 (-27.54 % of base) : 424024.dasm - Test.AA:Method1(byref,int,byref,double[]):float (FullOpts)
         -38 (-27.54 % of base) : 211377.dasm - Test.AA:Method1(byref,int,byref,double[]):float (Tier0-FullOpts)
         -34 (-6.83 % of base) : 157217.dasm - System.Net.Sockets.SafeSocketHandle:ReleaseHandle():ubyte:this (Tier1)
         -34 (-6.83 % of base) : 2614.dasm - System.Net.Sockets.SafeSocketHandle:ReleaseHandle():ubyte:this (Tier1)
         -34 (-6.97 % of base) : 312993.dasm - System.Net.Sockets.SafeSocketHandle:ReleaseHandle():ubyte:this (Tier1)
         -34 (-6.83 % of base) : 31378.dasm - System.Net.Sockets.SafeSocketHandle:ReleaseHandle():ubyte:this (Tier1)
         -34 (-6.97 % of base) : 156501.dasm - System.Net.Sockets.SafeSocketHandle:ReleaseHandle():ubyte:this (Tier1)

Top method regressions (percentages):
           6 (4.17 % of base) : 325325.dasm - testout1:Sub_Funclet_106():int (FullOpts)
           6 (4.17 % of base) : 325742.dasm - testout1:Sub_Funclet_106():int (FullOpts)
           6 (4.05 % of base) : 325401.dasm - testout1:Sub_Funclet_183():int (FullOpts)
           6 (4.05 % of base) : 325818.dasm - testout1:Sub_Funclet_183():int (FullOpts)

Top method improvements (percentages):
         -62 (-79.49 % of base) : 413056.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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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)
         -50 (-75.76 % of base) : 408996.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)
         -40 (-71.43 % of base) : 413004.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)
         -50 (-29.41 % of base) : 408552.dasm - Test_10w5d.testout1:Func_0_2_6_2_2():double (FullOpts)
         -30 (-28.30 % of base) : 409037.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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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)
         -38 (-27.54 % of base) : 424024.dasm - Test.AA:Method1(byref,int,byref,double[]):float (FullOpts)
         -38 (-27.54 % of base) : 211377.dasm - Test.AA:Method1(byref,int,byref,double[]):float (Tier0-FullOpts)
         -18 (-22.50 % of base) : 328202.dasm - filter1:f4() (FullOpts)
          -8 (-19.05 % of base) : 329513.dasm - try1:f4() (FullOpts)
         -16 (-17.39 % of base) : 382031.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (FullOpts)
         -48 (-16.67 % of base) : 424102.dasm - ILGEN_0xc53351bb:Method_0x6cf4(short,byte,uint,ulong,int,long,short,short,ubyte,long,float,ubyte,ulong,ubyte):float (FullOpts)
         -26 (-12.62 % of base) : 407808.dasm - Test_10w5d.testout1:Func_0_6_1_2():float (FullOpts)
         -48 (-12.37 % of base) : 421607.dasm - GitHub_19171:Vector3EqualsTest() (FullOpts)
         -20 (-9.90 % of base) : 4386.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this (Instrumented Tier1)
         -14 (-9.46 % of base) : 325853.dasm - testout1:Sub_Funclet_221():int (FullOpts)
         -14 (-9.46 % of base) : 325436.dasm - testout1:Sub_Funclet_221():int (FullOpts)
         -16 (-9.30 % of base) : 326657.dasm - testout1:Sub_Funclet_104():int (FullOpts)
         -16 (-9.30 % of base) : 326731.dasm - testout1:Sub_Funclet_181():int (FullOpts)
         -12 (-8.82 % of base) : 408994.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():float (FullOpts)
         -12 (-8.82 % of base) : 413003.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():float (FullOpts)


libraries.crossgen2.linux.arm.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 34522432 (overridden on cmd)
Total bytes of diff: 34521842 (overridden on cmd)
Total bytes of delta: -590 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -86 : 159219.dasm (-0.39 % of base)
         -26 : 62512.dasm (-8.97 % of base)
         -24 : 72508.dasm (-1.97 % of base)
         -24 : 149278.dasm (-3.18 % of base)
         -24 : 161763.dasm (-13.33 % of base)
         -22 : 63801.dasm (-12.94 % of base)
         -20 : 33981.dasm (-0.57 % of base)
         -18 : 160000.dasm (-2.03 % of base)
         -16 : 35046.dasm (-0.94 % of base)
         -16 : 161689.dasm (-9.52 % of base)
         -14 : 144798.dasm (-2.98 % of base)
         -14 : 35915.dasm (-6.09 % of base)
         -14 : 161600.dasm (-8.54 % of base)
         -12 : 73017.dasm (-6.12 % of base)
         -12 : 172412.dasm (-0.73 % of base)
         -12 : 172574.dasm (-2.24 % of base)
         -10 : 86838.dasm (-0.56 % of base)
         -10 : 73824.dasm (-0.62 % of base)
         -10 : 145264.dasm (-4.13 % of base)
         -10 : 181031.dasm (-0.75 % of base)

47 total files with Code Size differences (47 improved, 0 regressed), 1 unchanged.

Top method improvements (bytes):
         -86 (-0.39 % of base) : 159219.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -26 (-8.97 % of base) : 62512.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
         -24 (-13.33 % of base) : 161763.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
         -24 (-3.18 % of base) : 149278.dasm - System.Security.Cryptography.RSA:ImportRSAPrivateKey(System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
         -24 (-1.97 % of base) : 72508.dasm - System.Xml.XmlDataDocument:OnRowChanging(System.Object,System.Data.DataRowChangeEventArgs):this (FullOpts)
         -22 (-12.94 % of base) : 63801.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:<RewriteTupleInput>g__makeReplacement|17_1(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode (FullOpts)
         -20 (-0.57 % of base) : 33981.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
         -18 (-2.03 % of base) : 160000.dasm - Microsoft.VisualBasic.Strings:GetCurrencyFormatString(int,int,int,int,byref):System.String (FullOpts)
         -16 (-0.94 % of base) : 35046.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetRefEscape(Microsoft.CodeAnalysis.CSharp.BoundExpression,uint):uint:this (FullOpts)
         -16 (-9.52 % of base) : 161689.dasm - System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
         -14 (-6.09 % of base) : 35915.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddDelegateOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature]):this (FullOpts)
         -14 (-2.98 % of base) : 144798.dasm - System.Data.Odbc.OdbcDataReader:GetData(int,short,int,byref):ubyte:this (FullOpts)
         -14 (-8.54 % of base) : 161600.dasm - System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
         -12 (-6.12 % of base) : 73017.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:GetUnassignedSymbolFirstLocation(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess):Microsoft.CodeAnalysis.Location:this (FullOpts)
         -12 (-2.24 % of base) : 172574.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (FullOpts)
         -12 (-0.73 % of base) : 172412.dasm - System.Formats.Tar.TarHeader+<ProcessDataBlockAsync>d__52:MoveNext():this (FullOpts)
         -10 (-0.62 % of base) : 73824.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeModifiedIdentifierType(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,System.Func`1[Microsoft.CodeAnalysis.DiagnosticInfo],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
         -10 (-0.56 % of base) : 86838.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseDeclarationStatementInternal():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.StatementSyntax:this (FullOpts)
         -10 (-3.21 % of base) : 86731.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SingleLineLambdaContext:ProcessStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext:this (FullOpts)
         -10 (-0.75 % of base) : 181031.dasm - System.DirectoryServices.Protocols.BerConverter:TryDecode(System.String,ubyte[],byref):System.Object[] (FullOpts)

Top method improvements (percentages):
         -24 (-13.33 % of base) : 161763.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
         -22 (-12.94 % of base) : 63801.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:<RewriteTupleInput>g__makeReplacement|17_1(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode (FullOpts)
         -16 (-9.52 % of base) : 161689.dasm - System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
         -26 (-8.97 % of base) : 62512.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
         -14 (-8.54 % of base) : 161600.dasm - System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
         -12 (-6.12 % of base) : 73017.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:GetUnassignedSymbolFirstLocation(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess):Microsoft.CodeAnalysis.Location:this (FullOpts)
         -14 (-6.09 % of base) : 35915.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddDelegateOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature]):this (FullOpts)
          -8 (-4.26 % of base) : 144602.dasm - System.Data.Odbc.OdbcHandle:ReleaseHandle():ubyte:this (FullOpts)
         -10 (-4.13 % of base) : 145264.dasm - System.Uri:get_HostNameType():int:this (FullOpts)
          -6 (-3.85 % of base) : 161744.dasm - System.Net.Mail.StartTlsCommand:CheckResponse(int,System.String) (FullOpts)
          -6 (-3.80 % of base) : 160187.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:IsMemberPublic(System.Reflection.MemberInfo):ubyte (FullOpts)
         -10 (-3.21 % of base) : 86731.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SingleLineLambdaContext:ProcessStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext:this (FullOpts)
         -24 (-3.18 % of base) : 149278.dasm - System.Security.Cryptography.RSA:ImportRSAPrivateKey(System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
         -14 (-2.98 % of base) : 144798.dasm - System.Data.Odbc.OdbcDataReader:GetData(int,short,int,byref):ubyte:this (FullOpts)
          -8 (-2.27 % of base) : 123579.dasm - System.IO.Compression.ZipArchiveEntry:GetDataCompressor(System.IO.Stream,ubyte,System.EventHandler):System.IO.Compression.CheckSumAndSizeWriteStream:this (FullOpts)
          -6 (-2.26 % of base) : 159674.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:VerifyObjRefPresentForInstanceCall(System.Object,System.Reflection.MemberInfo) (FullOpts)
         -12 (-2.24 % of base) : 172574.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (FullOpts)
          -6 (-2.19 % of base) : 59224.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<BuildMembersAndInitializers>g__buildDeclaredMembersAndInitializers|169_1(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializers:this (FullOpts)
         -18 (-2.03 % of base) : 160000.dasm - Microsoft.VisualBasic.Strings:GetCurrencyFormatString(int,int,int,int,byref):System.String (FullOpts)
         -24 (-1.97 % of base) : 72508.dasm - System.Xml.XmlDataDocument:OnRowChanging(System.Object,System.Data.DataRowChangeEventArgs):this (FullOpts)


libraries.pmi.linux.arm.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 49857080 (overridden on cmd)
Total bytes of diff: 49854180 (overridden on cmd)
Total bytes of delta: -2900 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          20 : 184394.dasm (0.38 % of base)
          10 : 135472.dasm (0.45 % of base)
           4 : 192924.dasm (0.21 % of base)

Top file improvements (bytes):
        -468 : 112110.dasm (-89.66 % of base)
        -152 : 250244.dasm (-0.68 % of base)
         -90 : 113075.dasm (-7.12 % of base)
         -78 : 16578.dasm (-5.76 % of base)
         -66 : 238758.dasm (-3.60 % of base)
         -54 : 78235.dasm (-1.50 % of base)
         -32 : 207257.dasm (-2.85 % of base)
         -30 : 83165.dasm (-0.72 % of base)
         -28 : 151871.dasm (-6.09 % of base)
         -28 : 151877.dasm (-4.13 % of base)
         -26 : 48540.dasm (-0.50 % of base)
         -26 : 81795.dasm (-9.29 % of base)
         -24 : 161490.dasm (-13.79 % of base)
         -24 : 86650.dasm (-2.32 % of base)
         -24 : 226932.dasm (-2.49 % of base)
         -22 : 104515.dasm (-6.88 % of base)
         -22 : 83179.dasm (-14.47 % of base)
         -22 : 197987.dasm (-6.11 % of base)
         -20 : 188613.dasm (-1.52 % of base)
         -18 : 250788.dasm (-2.43 % of base)

57 total files with Code Size differences (54 improved, 3 regressed), 8 unchanged.

Top method regressions (bytes):
          20 (0.38 % of base) : 184394.dasm - ILCompiler.PettisHansenSort.PettisHansen:Sort(System.Collections.Generic.List`1[ILCompiler.PettisHansenSort.CallGraphNode]):System.Collections.Generic.List`1[System.Collections.Generic.List`1[int]] (FullOpts)
          10 (0.45 % of base) : 135472.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)
           4 (0.21 % of base) : 192924.dasm - System.DirectoryServices.Protocols.BerConverter:TryDecode(System.String,ubyte[],byref):System.Object[] (FullOpts)

Top method improvements (bytes):
        -468 (-89.66 % of base) : 112110.dasm - System.Xml.Serialization.XmlSerializationReader:ReadTypedNull(System.Xml.XmlQualifiedName):System.Object:this (FullOpts)
        -152 (-0.68 % of base) : 250244.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -90 (-7.12 % of base) : 113075.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
         -78 (-5.76 % of base) : 16578.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (FullOpts)
         -66 (-3.60 % of base) : 238758.dasm - System.Linq.Enumerable+<TakeRangeFromEndIterator>d__290`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -54 (-1.50 % of base) : 78235.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:DecodeDllImportAttribute(byref):this (FullOpts)
         -32 (-2.85 % of base) : 207257.dasm - Microsoft.CodeAnalysis.AttributeData:DecodeDecimalConstantValue():Microsoft.CodeAnalysis.ConstantValue:this (FullOpts)
         -30 (-0.72 % of base) : 83165.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -28 (-6.09 % of base) : 151871.dasm - Microsoft.Build.Collections.WeakValueDictionary`2[System.__Canon,System.__Canon]:get_Keys():System.Collections.Generic.IEnumerable`1[System.__Canon]:this (FullOpts)
         -28 (-4.13 % of base) : 151877.dasm - Microsoft.Build.Collections.WeakValueDictionary`2[System.__Canon,System.__Canon]:Scavenge():int:this (FullOpts)
         -26 (-0.50 % of base) : 48540.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
         -26 (-9.29 % of base) : 81795.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
         -24 (-13.79 % of base) : 161490.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
         -24 (-2.49 % of base) : 226932.dasm - System.Security.Cryptography.RSA:ImportRSAPrivateKey(System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
         -24 (-2.32 % of base) : 86650.dasm - System.Xml.XmlDataDocument:OnRowChanging(System.Object,System.Data.DataRowChangeEventArgs):this (FullOpts)
         -22 (-14.47 % of base) : 83179.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:<RewriteTupleInput>g__makeReplacement|17_1(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode (FullOpts)
         -22 (-6.11 % of base) : 197987.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.Nullable`1[int]]:MoveDownDefaultComparer(System.ValueTuple`2[System.__Canon,System.Nullable`1[int]],int):this (FullOpts)
         -22 (-6.88 % of base) : 104515.dasm - System.Xml.Schema.Datatype_dateTimeBase:Compare(System.Object,System.Object):int:this (FullOpts)
         -20 (-1.52 % of base) : 188613.dasm - System.Xml.EncodingStreamWrapper:.ctor(System.IO.Stream,System.Text.Encoding):this (FullOpts)
         -18 (-2.43 % of base) : 250788.dasm - Microsoft.VisualBasic.Strings:GetCurrencyFormatString(int,int,int,int,byref):System.String (FullOpts)

Top method regressions (percentages):
          10 (0.45 % of base) : 135472.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)
          20 (0.38 % of base) : 184394.dasm - ILCompiler.PettisHansenSort.PettisHansen:Sort(System.Collections.Generic.List`1[ILCompiler.PettisHansenSort.CallGraphNode]):System.Collections.Generic.List`1[System.Collections.Generic.List`1[int]] (FullOpts)
           4 (0.21 % of base) : 192924.dasm - System.DirectoryServices.Protocols.BerConverter:TryDecode(System.String,ubyte[],byref):System.Object[] (FullOpts)

Top method improvements (percentages):
        -468 (-89.66 % of base) : 112110.dasm - System.Xml.Serialization.XmlSerializationReader:ReadTypedNull(System.Xml.XmlQualifiedName):System.Object:this (FullOpts)
         -10 (-41.67 % of base) : 223493.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
         -16 (-17.39 % of base) : 181664.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (FullOpts)
         -12 (-16.22 % of base) : 269604.dasm - System.IO.FileSystemWatcher+NormalizedFilterCollection+ImmutableStringList:get_Item(int):System.String:this (FullOpts)
         -22 (-14.47 % of base) : 83179.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:<RewriteTupleInput>g__makeReplacement|17_1(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode (FullOpts)
         -10 (-14.29 % of base) : 242213.dasm - System.Net.Sockets.UdpReceiveResult:op_Equality(System.Net.Sockets.UdpReceiveResult,System.Net.Sockets.UdpReceiveResult):ubyte (FullOpts)
         -24 (-13.79 % of base) : 161490.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
         -10 (-12.50 % of base) : 242212.dasm - System.Net.Sockets.UdpReceiveResult:Equals(System.Net.Sockets.UdpReceiveResult):ubyte:this (FullOpts)
         -10 (-11.90 % of base) : 242214.dasm - System.Net.Sockets.UdpReceiveResult:op_Inequality(System.Net.Sockets.UdpReceiveResult,System.Net.Sockets.UdpReceiveResult):ubyte (FullOpts)
          -2 (-11.11 % of base) : 42783.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.GCFitBucketInfoTraceData:Validate():this (FullOpts)
         -10 (-10.87 % of base) : 242211.dasm - System.Net.Sockets.UdpReceiveResult:Equals(System.Object):ubyte:this (FullOpts)
         -16 (-9.88 % of base) : 161486.dasm - System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
          -6 (-9.68 % of base) : 19636.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
         -26 (-9.29 % of base) : 81795.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
         -10 (-9.26 % of base) : 19634.dasm - System.SpanHelpers:LastIndexOfAnyInRange[long](byref,long,long,int):int (FullOpts)
         -14 (-8.86 % of base) : 161509.dasm - System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
          -6 (-8.82 % of base) : 19626.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
          -8 (-7.14 % of base) : 19624.dasm - System.SpanHelpers:IndexOfAnyInRange[long](byref,long,long,int):int (FullOpts)
         -90 (-7.12 % of base) : 113075.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
         -22 (-6.88 % of base) : 104515.dasm - System.Xml.Schema.Datatype_dateTimeBase:Compare(System.Object,System.Object):int:this (FullOpts)


libraries_tests.run.linux.arm.Release.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 243858436 (overridden on cmd)
Total bytes of diff: 243845924 (overridden on cmd)
Total bytes of delta: -12512 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          18 : 507937.dasm (1.55 % of base)
          14 : 214549.dasm (2.56 % of base)
          12 : 676217.dasm (0.26 % of base)
          10 : 691621.dasm (0.79 % of base)
          10 : 89139.dasm (0.30 % of base)
          10 : 567282.dasm (1.37 % of base)
           6 : 290444.dasm (0.43 % of base)
           4 : 668837.dasm (0.31 % of base)
           4 : 221758.dasm (0.17 % of base)
           4 : 690031.dasm (0.41 % of base)
           2 : 515650.dasm (0.24 % of base)
           2 : 668071.dasm (0.25 % of base)
           2 : 88005.dasm (0.83 % of base)
           2 : 322844.dasm (0.29 % of base)

Top file improvements (bytes):
        -352 : 188144.dasm (-1.55 % of base)
         -78 : 298818.dasm (-5.95 % of base)
         -68 : 264567.dasm (-10.09 % of base)
         -66 : 134626.dasm (-10.48 % of base)
         -66 : 202198.dasm (-10.48 % of base)
         -66 : 347510.dasm (-3.60 % of base)
         -64 : 224095.dasm (-10.19 % of base)
         -62 : 484775.dasm (-10.06 % of base)
         -58 : 182411.dasm (-9.54 % of base)
         -58 : 66791.dasm (-3.87 % of base)
         -58 : 353635.dasm (-9.70 % of base)
         -58 : 264268.dasm (-9.70 % of base)
         -58 : 272301.dasm (-1.16 % of base)
         -58 : 451344.dasm (-9.97 % of base)
         -56 : 623829.dasm (-45.90 % of base)
         -54 : 315815.dasm (-9.34 % of base)
         -54 : 322804.dasm (-9.34 % of base)
         -52 : 626133.dasm (-7.76 % of base)
         -52 : 55934.dasm (-0.55 % of base)
         -48 : 698569.dasm (-0.80 % of base)

61 total files with Code Size differences (47 improved, 14 regressed), 22 unchanged.

Top method regressions (bytes):
          18 (1.55 % of base) : 507937.dasm - System.Xml.XmlBinaryReader:ReadArray(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,int[],int,int):int:this (Tier1)
          14 (2.56 % of base) : 214549.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
          12 (0.26 % of base) : 676217.dasm - System.Reflection.PortableExecutable.ManagedPEBuilder:SerializeTextSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (Tier1)
          10 (0.30 % of base) : 89139.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetValEscape(Microsoft.CodeAnalysis.CSharp.BoundExpression,uint):uint:this (Tier1)
          10 (1.37 % of base) : 567282.dasm - System.IO.BinaryReader:InternalRead(System.Span`1[ubyte]):System.ReadOnlySpan`1[ubyte]:this (Tier1)
          10 (0.79 % of base) : 691621.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31280_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           6 (0.43 % of base) : 290444.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
           4 (0.31 % of base) : 668837.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:ConvertConditionalOperandOrSwitchExpressionArmResult(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (Tier1)
           4 (0.17 % of base) : 221758.dasm - System.IO.BinaryReader:ReadString():System.String:this (Tier1)
           4 (0.41 % of base) : 690031.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30746_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           2 (0.83 % of base) : 88005.dasm - Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:CheckForMeaninglessOnReturn(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):this (Tier1)
           2 (0.25 % of base) : 668071.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState:Create(Microsoft.CodeAnalysis.CSharp.NullableWalker):Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState (Tier1)
           2 (0.29 % of base) : 322844.dasm - System.Net.Sockets.SocketAsyncEventArgs:StartOperationAccept():this (Tier1)
           2 (0.24 % of base) : 515650.dasm - System.Numerics.BigInteger:op_Implicit(System.Int128):System.Numerics.BigInteger (Tier1)

Top method improvements (bytes):
        -352 (-1.55 % of base) : 188144.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
         -78 (-5.95 % of base) : 298818.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (Tier0-FullOpts)
         -68 (-10.09 % of base) : 264567.dasm - System.Xml.XmlNodeReader:ReadNextNode(ubyte):ubyte:this (Tier1)
         -66 (-10.48 % of base) : 134626.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
         -66 (-10.48 % of base) : 202198.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
         -66 (-3.60 % of base) : 347510.dasm - System.Linq.Enumerable+<TakeRangeFromEndIterator>d__290`1[System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
         -64 (-10.19 % of base) : 224095.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
         -62 (-10.06 % of base) : 484775.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
         -58 (-9.54 % of base) : 182411.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
         -58 (-9.70 % of base) : 353635.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
         -58 (-9.70 % of base) : 264268.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
         -58 (-9.97 % of base) : 451344.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
         -58 (-3.87 % of base) : 66791.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:SetOrAdd(int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]],ubyte,byref,byref):System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:this (Tier1)
         -58 (-1.16 % of base) : 272301.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -56 (-45.90 % of base) : 623829.dasm - System.Text.Json.JsonSerializerOptions:ConfigureForJsonSerializer():this (Tier1)
         -54 (-9.34 % of base) : 315815.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
         -54 (-9.34 % of base) : 322804.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
         -52 (-0.55 % of base) : 55934.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
         -52 (-7.76 % of base) : 626133.dasm - System.Runtime.CompilerServices.TaskAwaiter:ThrowForNonSuccess(System.Threading.Tasks.Task) (Tier1)
         -48 (-0.80 % of base) : 698569.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)

Top method regressions (percentages):
          14 (2.56 % of base) : 214549.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
          18 (1.55 % of base) : 507937.dasm - System.Xml.XmlBinaryReader:ReadArray(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,int[],int,int):int:this (Tier1)
          10 (1.37 % of base) : 567282.dasm - System.IO.BinaryReader:InternalRead(System.Span`1[ubyte]):System.ReadOnlySpan`1[ubyte]:this (Tier1)
           2 (0.83 % of base) : 88005.dasm - Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:CheckForMeaninglessOnReturn(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):this (Tier1)
          10 (0.79 % of base) : 691621.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31280_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           6 (0.43 % of base) : 290444.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
           4 (0.41 % of base) : 690031.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30746_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           4 (0.31 % of base) : 668837.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:ConvertConditionalOperandOrSwitchExpressionArmResult(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (Tier1)
          10 (0.30 % of base) : 89139.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetValEscape(Microsoft.CodeAnalysis.CSharp.BoundExpression,uint):uint:this (Tier1)
           2 (0.29 % of base) : 322844.dasm - System.Net.Sockets.SocketAsyncEventArgs:StartOperationAccept():this (Tier1)
          12 (0.26 % of base) : 676217.dasm - System.Reflection.PortableExecutable.ManagedPEBuilder:SerializeTextSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (Tier1)
           2 (0.25 % of base) : 668071.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState:Create(Microsoft.CodeAnalysis.CSharp.NullableWalker):Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState (Tier1)
           2 (0.24 % of base) : 515650.dasm - System.Numerics.BigInteger:op_Implicit(System.Int128):System.Numerics.BigInteger (Tier1)
           4 (0.17 % of base) : 221758.dasm - System.IO.BinaryReader:ReadString():System.String:this (Tier1)

Top method improvements (percentages):
         -56 (-45.90 % of base) : 623829.dasm - System.Text.Json.JsonSerializerOptions:ConfigureForJsonSerializer():this (Tier1)
         -12 (-35.29 % of base) : 264664.dasm - System.ArgumentOutOfRangeException:ThrowIfGreaterThanOrEqual[int](int,int,System.String) (Tier1)
         -12 (-35.29 % of base) : 322301.dasm - System.ArgumentOutOfRangeException:ThrowIfLessThan[int](int,int,System.String) (Tier1)
         -12 (-35.29 % of base) : 556220.dasm - System.ArgumentOutOfRangeException:ThrowIfLessThan[int](int,int,System.String) (Tier1)
         -36 (-32.73 % of base) : 47525.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
         -36 (-32.14 % of base) : 173723.dasm - 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)
         -36 (-32.14 % of base) : 684147.dasm - 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)
         -36 (-32.14 % of base) : 82876.dasm - 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)
         -36 (-32.14 % of base) : 55345.dasm - 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)
         -36 (-32.14 % of base) : 73878.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
         -36 (-30.51 % of base) : 157757.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
         -16 (-17.02 % of base) : 675577.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNativeIntegerOverflowingUnaryOperator(int,Microsoft.CodeAnalysis.ConstantValue):System.Object (Tier1)
         -16 (-17.02 % of base) : 181010.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
         -16 (-17.02 % of base) : 657472.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
         -16 (-16.00 % of base) : 224058.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -12 (-15.79 % of base) : 371099.dasm - System.ArgumentOutOfRangeException:ThrowIfGreaterThan[double](double,double,System.String) (Tier1)
         -10 (-15.62 % of base) : 177344.dasm - System.Reflection.PortableExecutable.ManagedTextSection:get_SizeOfImportTable():int:this (Tier1)
         -10 (-15.62 % of base) : 675150.dasm - System.Reflection.PortableExecutable.ManagedTextSection:get_SizeOfImportTable():int:this (Tier1)
         -16 (-13.56 % of base) : 674516.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -10 (-13.16 % of base) : 605749.dasm - System.ArgumentOutOfRangeException:ThrowIfGreaterThan[float](float,float,System.String) (Tier1)


librariestestsnotieredcompilation.run.linux.arm.Release.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 94524880 (overridden on cmd)
Total bytes of diff: 94521338 (overridden on cmd)
Total bytes of delta: -3542 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           8 : 101640.dasm (0.98 % of base)
           4 : 153636.dasm (0.07 % of base)
           2 : 257759.dasm (0.23 % of base)
           2 : 279389.dasm (0.20 % of base)

Top file improvements (bytes):
        -152 : 59498.dasm (-0.68 % of base)
         -78 : 116133.dasm (-5.95 % of base)
         -72 : 160683.dasm (-8.00 % of base)
         -72 : 160950.dasm (-8.00 % of base)
         -66 : 141580.dasm (-3.60 % of base)
         -54 : 201448.dasm (-2.32 % of base)
         -54 : 19258.dasm (-1.51 % of base)
         -54 : 201573.dasm (-2.32 % of base)
         -52 : 201368.dasm (-2.26 % of base)
         -52 : 201738.dasm (-2.26 % of base)
         -48 : 160678.dasm (-5.85 % of base)
         -48 : 160869.dasm (-6.30 % of base)
         -42 : 56730.dasm (-1.01 % of base)
         -42 : 225558.dasm (-3.03 % of base)
         -28 : 22641.dasm (-2.72 % of base)
         -26 : 56693.dasm (-9.29 % of base)
         -26 : 77032.dasm (-11.50 % of base)
         -26 : 6617.dasm (-0.55 % of base)
         -24 : 93417.dasm (-2.34 % of base)
         -24 : 150389.dasm (-13.79 % of base)

56 total files with Code Size differences (52 improved, 4 regressed), 12 unchanged.

Top method regressions (bytes):
           8 (0.98 % of base) : 101640.dasm - System.Drawing.ColorTranslator:ToHtml(System.Drawing.Color):System.String (FullOpts)
           4 (0.07 % of base) : 153636.dasm - System.Net.Quic.Tests.MsQuicTests+<BigWrite_SmallRead_Success>d__33:MoveNext():this (FullOpts)
           2 (0.23 % of base) : 257759.dasm - System.Text.Json.Serialization.Tests.JsonSerializerWrapper+Utf8BomInsertingStream:Read(ubyte[],int,int):int:this (FullOpts)
           2 (0.20 % of base) : 279389.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3682_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method improvements (bytes):
        -152 (-0.68 % of base) : 59498.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -78 (-5.95 % of base) : 116133.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (FullOpts)
         -72 (-8.00 % of base) : 160683.dasm - System.Numerics.Tests.QuaternionTests:QuaternionEqualsTest():this (FullOpts)
         -72 (-8.00 % of base) : 160950.dasm - System.Numerics.Tests.Vector4Tests:Vector4EqualsTest():this (FullOpts)
         -66 (-3.60 % of base) : 141580.dasm - System.Linq.Enumerable+<TakeRangeFromEndIterator>d__290`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -54 (-1.51 % of base) : 19258.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:DecodeDllImportAttribute(byref):this (FullOpts)
         -54 (-2.32 % of base) : 201448.dasm - System.Tests.DecimalTests_GenericMath:MinMagnitudeNumberTest() (FullOpts)
         -54 (-2.32 % of base) : 201573.dasm - System.Tests.DecimalTests_GenericMath:MinMagnitudeTest() (FullOpts)
         -52 (-2.26 % of base) : 201738.dasm - System.Tests.DecimalTests_GenericMath:MaxMagnitudeNumberTest() (FullOpts)
         -52 (-2.26 % of base) : 201368.dasm - System.Tests.DecimalTests_GenericMath:MaxMagnitudeTest() (FullOpts)
         -48 (-6.30 % of base) : 160869.dasm - System.Numerics.Tests.PlaneTests:PlaneEqualsTest():this (FullOpts)
         -48 (-5.85 % of base) : 160678.dasm - System.Numerics.Tests.Vector3Tests:Vector3EqualsTest():this (FullOpts)
         -42 (-1.01 % of base) : 56730.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -42 (-3.03 % of base) : 225558.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:VerifyIncrementalResult_Span(System.Security.Cryptography.HashAlgorithm,System.Security.Cryptography.IncrementalHash) (FullOpts)
         -28 (-2.72 % of base) : 22641.dasm - Microsoft.CodeAnalysis.MarshalAsAttributeDecoder`4[System.__Canon,System.__Canon,System.__Canon,short]:DecodeMarshalAsCustom(byref,Microsoft.CodeAnalysis.CommonMessageProvider) (FullOpts)
         -26 (-0.55 % of base) : 6617.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
         -26 (-9.29 % of base) : 56693.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
         -26 (-11.50 % of base) : 77032.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,int]:MoveDownDefaultComparer(System.ValueTuple`2[System.__Canon,int],int):this (FullOpts)
         -24 (-24.49 % of base) : 5280.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
         -24 (-13.79 % of base) : 150389.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)

Top method regressions (percentages):
           8 (0.98 % of base) : 101640.dasm - System.Drawing.ColorTranslator:ToHtml(System.Drawing.Color):System.String (FullOpts)
           2 (0.23 % of base) : 257759.dasm - System.Text.Json.Serialization.Tests.JsonSerializerWrapper+Utf8BomInsertingStream:Read(ubyte[],int,int):int:this (FullOpts)
           2 (0.20 % of base) : 279389.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3682_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           4 (0.07 % of base) : 153636.dasm - System.Net.Quic.Tests.MsQuicTests+<BigWrite_SmallRead_Success>d__33:MoveNext():this (FullOpts)

Top method improvements (percentages):
         -24 (-24.49 % of base) : 5280.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
         -22 (-22.92 % of base) : 49238.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
         -22 (-22.92 % of base) : 43544.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
         -16 (-17.39 % of base) : 21488.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (FullOpts)
         -12 (-16.22 % of base) : 126023.dasm - System.IO.FileSystemWatcher+NormalizedFilterCollection+ImmutableStringList:get_Item(int):System.String:this (FullOpts)
         -22 (-14.29 % of base) : 56938.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:<RewriteTupleInput>g__makeReplacement|17_1(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode (FullOpts)
         -24 (-13.79 % of base) : 150389.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
         -26 (-11.50 % of base) : 77032.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,int]:MoveDownDefaultComparer(System.ValueTuple`2[System.__Canon,int],int):this (FullOpts)
         -12 (-10.91 % of base) : 142338.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[ulong](byref,ulong,ulong,int):int (FullOpts)
          -6 (-10.71 % of base) : 226639.dasm - System.Security.Cryptography.Tests.OidCollectionTests+<>c__DisplayClass4_0:<TestOidCollection>b__0():System.Object:this (FullOpts)
         -16 (-9.88 % of base) : 150342.dasm - System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
          -6 (-9.68 % of base) : 144001.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[uint](byref,uint,uint,int):int (FullOpts)
         -26 (-9.29 % of base) : 56693.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
         -10 (-9.26 % of base) : 142477.dasm - System.SpanHelpers:LastIndexOfAnyInRange[long](byref,long,long,int):int (FullOpts)
         -14 (-8.86 % of base) : 150337.dasm - System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
          -6 (-8.82 % of base) : 143999.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[uint](byref,uint,uint,int):int (FullOpts)
         -12 (-8.45 % of base) : 7797.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
         -72 (-8.00 % of base) : 160683.dasm - System.Numerics.Tests.QuaternionTests:QuaternionEqualsTest():this (FullOpts)
         -72 (-8.00 % of base) : 160950.dasm - System.Numerics.Tests.Vector4Tests:Vector4EqualsTest():this (FullOpts)
         -12 (-7.69 % of base) : 15162.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)


realworld.run.linux.arm.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 13606712 (overridden on cmd)
Total bytes of diff: 13605678 (overridden on cmd)
Total bytes of delta: -1034 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           2 : 4131.dasm (0.85 % of base)

Top file improvements (bytes):
        -144 : 5539.dasm (-37.89 % of base)
         -78 : 6267.dasm (-5.95 % of base)
         -56 : 7890.dasm (-0.56 % of base)
         -46 : 26332.dasm (-1.19 % of base)
         -36 : 16939.dasm (-2.88 % of base)
         -34 : 758.dasm (-58.62 % of base)
         -32 : 9773.dasm (-1.48 % of base)
         -30 : 32174.dasm (-0.74 % of base)
         -26 : 31644.dasm (-9.29 % of base)
         -26 : 11358.dasm (-26.00 % of base)
         -26 : 23901.dasm (-0.54 % of base)
         -24 : 1483.dasm (-2.91 % of base)
         -22 : 32919.dasm (-14.47 % of base)
         -18 : 8373.dasm (-4.86 % of base)
         -16 : 11361.dasm (-2.77 % of base)
         -16 : 11309.dasm (-1.76 % of base)
         -16 : 2295.dasm (-2.45 % of base)
         -16 : 26120.dasm (-1.13 % of base)
         -16 : 26492.dasm (-1.05 % of base)
         -16 : 28265.dasm (-2.83 % of base)

54 total files with Code Size differences (53 improved, 1 regressed), 1 unchanged.

Top method regressions (bytes):
           2 (0.85 % of base) : 4131.dasm - FSharp.Compiler.CompilerConfig+TcConfig:computeKnownDllReference(System.String):System.Tuple`2[FSharp.Compiler.CompilerConfig+AssemblyReference,Microsoft.FSharp.Core.FSharpOption`1[System.String]]:this (FullOpts)

Top method improvements (bytes):
        -144 (-37.89 % of base) : 5539.dasm - FSharp.Compiler.LexFilter:tokenForcesHeadContextClosure@1347(FSharp.Compiler.LexFilter+LexFilterImpl,FSharp.Compiler.Parser+token,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.LexFilter+Context]):ubyte (FullOpts)
         -78 (-5.95 % of base) : 6267.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (FullOpts)
         -56 (-0.56 % of base) : 7890.dasm - FSharp.Compiler.AugmentWithHashCompare:CheckAugmentationAttribs(ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.TypedTree+Entity) (FullOpts)
         -46 (-1.19 % of base) : 26332.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:DecodeDllImportAttribute(byref):this (FullOpts)
         -36 (-2.88 % of base) : 16939.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)
         -34 (-58.62 % of base) : 758.dasm - BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d:MoveNext():ubyte:this (FullOpts)
         -32 (-1.48 % of base) : 9773.dasm - FSharp.Compiler.ConstraintSolver:consistent@1992(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,FSharp.Compiler.Text.Range,FSharp.Compiler.ConstraintSolver+OptionalTrace,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TyparConstraint,FSharp.Compiler.TypedTree+TyparConstraint):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
         -30 (-0.74 % of base) : 32174.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -26 (-26.00 % of base) : 11358.dasm - FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
         -26 (-0.54 % of base) : 23901.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
         -26 (-9.29 % of base) : 31644.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
         -24 (-2.91 % of base) : 1483.dasm - BepuUtilities.Collections.QuickSort:Sort[int,BepuPhysics.Trees.Tree+IndexMapComparer](byref,int,int,byref) (FullOpts)
         -22 (-14.47 % of base) : 32919.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:<RewriteTupleInput>g__makeReplacement|17_1(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode (FullOpts)
         -18 (-4.86 % of base) : 8373.dasm - FSharp.Compiler.LexFilter:infixTokenLength(FSharp.Compiler.Parser+token):int (FullOpts)
         -16 (-2.45 % of base) : 2295.dasm - BepuUtilities.Collections.QuickSort:Sort[BepuPhysics.CollisionDetection.TypeBatchIndex,BepuPhysics.CollisionDetection.ConstraintRemover+RemovalsForTypeBatch,BepuPhysics.CollisionDetection.ConstraintRemover+TypeBatchIndexComparer](byref,byref,int,int,byref) (FullOpts)
         -16 (-1.76 % of base) : 11309.dasm - FSharp.Compiler.AccessibilityLogic:IsPropInfoAccessible(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.Text.Range,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.Infos+PropInfo):ubyte (FullOpts)
         -16 (-2.77 % of base) : 11361.dasm - FSharp.Compiler.Infos+PropInfo:get_IsIndexer():ubyte:this (FullOpts)
         -16 (-1.13 % of base) : 26120.dasm - Microsoft.CodeAnalysis.AttributeData:DecodeStructLayoutAttribute[System.__Canon,System.__Canon,System.__Canon,short](byref,int,int,Microsoft.CodeAnalysis.CommonMessageProvider) (FullOpts)
         -16 (-2.83 % of base) : 28265.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddDelegateOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature]):this (FullOpts)
         -16 (-1.05 % of base) : 26492.dasm - Microsoft.CodeAnalysis.MarshalAsAttributeDecoder`4[System.__Canon,System.__Canon,System.__Canon,short]:DecodeMarshalAsArray(byref,Microsoft.CodeAnalysis.CommonMessageProvider,ubyte) (FullOpts)

Top method regressions (percentages):
           2 (0.85 % of base) : 4131.dasm - FSharp.Compiler.CompilerConfig+TcConfig:computeKnownDllReference(System.String):System.Tuple`2[FSharp.Compiler.CompilerConfig+AssemblyReference,Microsoft.FSharp.Core.FSharpOption`1[System.String]]:this (FullOpts)

Top method improvements (percentages):
         -34 (-58.62 % of base) : 758.dasm - BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d:MoveNext():ubyte:this (FullOpts)
        -144 (-37.89 % of base) : 5539.dasm - FSharp.Compiler.LexFilter:tokenForcesHeadContextClosure@1347(FSharp.Compiler.LexFilter+LexFilterImpl,FSharp.Compiler.Parser+token,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.LexFilter+Context]):ubyte (FullOpts)
         -26 (-26.00 % of base) : 11358.dasm - FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
         -22 (-14.47 % of base) : 32919.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:<RewriteTupleInput>g__makeReplacement|17_1(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode (FullOpts)
         -26 (-9.29 % of base) : 31644.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
         -12 (-8.45 % of base) : 28053.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
         -12 (-7.69 % of base) : 28800.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)
         -12 (-7.14 % of base) : 29596.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:ResolveBranches(Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):ubyte:this (FullOpts)
         -78 (-5.95 % of base) : 6267.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (FullOpts)
         -10 (-4.90 % of base) : 24441.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (FullOpts)
         -18 (-4.86 % of base) : 8373.dasm - FSharp.Compiler.LexFilter:infixTokenLength(FSharp.Compiler.Parser+token):int (FullOpts)
         -10 (-4.00 % of base) : 18146.dasm - System.Uri:get_HostNameType():int:this (FullOpts)
          -4 (-3.33 % of base) : 26423.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AttributeDataExtensions:DecodeNotNullIfNotNullAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):System.String (FullOpts)
         -12 (-3.14 % of base) : 24425.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchPropertySignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (FullOpts)
         -12 (-3.09 % of base) : 24303.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchMethodSignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (FullOpts)
         -24 (-2.91 % of base) : 1483.dasm - BepuUtilities.Collections.QuickSort:Sort[int,BepuPhysics.Trees.Tree+IndexMapComparer](byref,int,int,byref) (FullOpts)
          -4 (-2.90 % of base) : 26426.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbolBase:DecodeMaybeNullWhenOrNotNullWhenOrDoesNotReturnIfAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):System.Nullable`1[ubyte] (FullOpts)
         -36 (-2.88 % of base) : 16939.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)
         -12 (-2.83 % of base) : 22990.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyDataForAssemblyBeingBuilt[System.__Canon,System.__Canon]:.ctor(Microsoft.CodeAnalysis.AssemblyIdentity,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]):this (FullOpts)
         -16 (-2.83 % of base) : 28265.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddDelegateOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature]):this (FullOpts)



windows x86

Diffs are based on 2,293,423 contexts (839,658 MinOpts, 1,453,765 FullOpts).

MISSED contexts: base: 38 (0.00%), diff: 73 (0.00%)

Overall (-22,900 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,122,447 -258
benchmarks.run_pgo.windows.x86.checked.mch 44,974,277 -1,135
benchmarks.run_tiered.windows.x86.checked.mch 9,469,950 -180
coreclr_tests.run.windows.x86.checked.mch 309,369,241 -3,767
libraries.crossgen2.windows.x86.checked.mch 31,716,544 -1,340
libraries.pmi.windows.x86.checked.mch 49,268,131 -2,473
libraries_tests.run.windows.x86.Release.mch 186,645,391 -9,027
librariestestsnotieredcompilation.run.windows.x86.Release.mch 103,801,389 -3,789
realworld.run.windows.x86.checked.mch 11,353,700 -931

FullOpts (-22,900 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,122,166 -258
benchmarks.run_pgo.windows.x86.checked.mch 38,385,646 -1,135
benchmarks.run_tiered.windows.x86.checked.mch 5,200,129 -180
coreclr_tests.run.windows.x86.checked.mch 107,581,107 -3,767
libraries.crossgen2.windows.x86.checked.mch 31,715,484 -1,340
libraries.pmi.windows.x86.checked.mch 49,172,898 -2,473
libraries_tests.run.windows.x86.Release.mch 88,371,691 -9,027
librariestestsnotieredcompilation.run.windows.x86.Release.mch 95,121,325 -3,789
realworld.run.windows.x86.checked.mch 11,057,986 -931

Example diffs

benchmarks.run.windows.x86.checked.mch

-14 (-9.21%) : 22162.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,T02] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
+; V00 this [V00,T02] ( 3, 3 ) ref -> esi this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
; V01 loc0 [V01,T05] ( 3, 4 ) ref -> edi 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 ( 8) [ebp-0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]> @@ -22,9 +22,9 @@ ; V11 tmp6 [V11 ] ( 2, 3 ) ref -> [ebp-0x10] do-not-enreg[X] addr-exposed "field V03._originalStack (fldOffset=0x0)" P-DEP ; V12 tmp7 [V12 ] ( 9, 29 ) ref -> [ebp-0x0C] do-not-enreg[X] addr-exposed "field V03._remainingStack (fldOffset=0x4)" P-DEP ;* V13 cse0 [V13,T08] ( 0, 0 ) int -> zero-ref hoist "CSE - aggressive"
-; V14 rat0 [V14,T04] ( 2, 4 ) int -> ecx "Spilling to split statement for tree"
+;* V14 rat0 [V14,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V15 rat1 [V15,T06] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V16 rat2 [V16,T03] ( 2, 4 ) int -> ecx "fgMakeTemp is creating a new local variable"
+;* V16 rat2 [V16,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 @@ -49,14 +49,8 @@ G_M64146_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 cmp dword ptr [ecx], ecx call [System.Collections.Immutable.ImmutableStack`1[System.__Canon]:GetEnumerator():System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]:this] ; gcrRegs -[ecx]
- mov ecx, dword ptr [esi] - mov ecx, dword ptr [ecx+0x24] - mov ecx, dword ptr [ecx] - mov ecx, dword ptr [ecx+0x10] - test ecx, ecx - jne SHORT G_M64146_IG04
jmp SHORT G_M64146_IG04
- ;; size=32 bbWeight=1 PerfScore 20.00
+ ;; size=18 bbWeight=1 PerfScore 10.75
G_M64146_IG03: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edi] cmp gword ptr [ebp-0x0C], 0 @@ -129,6 +123,6 @@ G_M64146_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi} int3 ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 152, prolog size 16, PerfScore 147.75, instruction count 56, allocated bytes for code 152 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
+; Total bytes of code 138, prolog size 16, PerfScore 138.50, instruction count 50, allocated bytes for code 138 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
; ============================================================

-14 (-6.57%) : 23048.dasm - System.Collections.IterateForEach`1[System.Canon]:FrozenSet():System.Canon:this (FullOpts)

@@ -23,10 +23,10 @@ ; V12 tmp7 [V12,T02] ( 3, 6 ) ref -> ecx single-def "argument with side effect" ; V13 EHSlots [V13 ] ( 1, 1 ) struct (16) [ebp-0x18] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar" ;* V14 cse0 [V14,T10] ( 0, 0 ) int -> zero-ref hoist "CSE - aggressive"
-; V15 cse1 [V15,T09] ( 6, 3.20) int -> ecx multi-def "CSE - aggressive" -; V16 rat0 [V16,T05] ( 2, 4 ) int -> edx "Spilling to split statement for tree"
+; V15 cse1 [V15,T09] ( 5, 2.20) int -> ecx multi-def "CSE - aggressive" +;* V16 rat0 [V16,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V17 rat1 [V17,T08] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V18 rat2 [V18,T03] ( 2, 4 ) int -> edx "fgMakeTemp is creating a new local variable"
+;* V18 rat2 [V18,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; V19 rat3 [V19,T04] ( 3, 5.60) int -> eax "fgMakeTemp is creating a new local variable" ; V20 rat4 [V20,T11] ( 3, 0 ) int -> ecx "Spilling to split statement for tree" ; V21 rat5 [V21,T12] ( 3, 0 ) int -> eax "fgMakeTemp is creating a new local variable" @@ -63,14 +63,8 @@ G_M17622_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs +[ecx] mov ecx, dword ptr [ecx] ; gcrRegs -[ecx]
- mov edx, ecx - mov edx, dword ptr [edx+0x24] - mov edx, dword ptr [edx] - mov edx, dword ptr [edx+0x10] - test edx, edx - jne SHORT G_M17622_IG05
jmp SHORT G_M17622_IG05
- ;; size=21 bbWeight=1 PerfScore 12.50
+ ;; size=7 bbWeight=1 PerfScore 5.00
G_M17622_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[esi] mov edx, dword ptr [ebp-0x1C] @@ -174,7 +168,7 @@ G_M17622_IG18: ; bbWeight=1, epilog, nogc, extend ret ;; size=6 bbWeight=1 PerfScore 2.50
-; Total bytes of code 213, prolog size 27, PerfScore 162.68, instruction count 80, allocated bytes for code 213 (MethodHash=5937bb29) for method System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (FullOpts)
+; Total bytes of code 199, prolog size 27, PerfScore 155.18, instruction count 74, allocated bytes for code 199 (MethodHash=5937bb29) for method System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (FullOpts)
; ============================================================ *************** EH table for System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this

-14 (-6.19%) : 5594.dasm - System.Uri:get_HostNameType():int:this (FullOpts)

@@ -16,8 +16,8 @@ ; V05 tmp3 [V05,T06] ( 3, 3 ) int -> eax "Single return block return value" ; V06 tmp4 [V06,T08] ( 2, 0 ) ref -> edx single-def "argument with side effect" ; V07 cse0 [V07,T05] ( 3, 3 ) ref -> ecx "CSE - moderate"
-; V08 rat0 [V08,T02] ( 8, 5 ) int -> eax "field V01.lo (fldOffset=0x0)" P-INDEP -; V09 rat1 [V09,T03] ( 8, 5 ) int -> ecx "field V01.hi (fldOffset=0x4)" P-INDEP
+; V08 rat0 [V08,T02] ( 7, 4.50) int -> eax "field V01.lo (fldOffset=0x0)" P-INDEP +; V09 rat1 [V09,T03] ( 7, 4.50) int -> ecx "field V01.hi (fldOffset=0x4)" P-INDEP
; V10 rat2 [V10,T01] ( 3, 6 ) byref -> esi "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 0 @@ -76,11 +76,11 @@ G_M8199_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 mov edx, eax xor edx, 0x10000 or edx, ecx
- je SHORT G_M8199_IG11
+ je SHORT G_M8199_IG12
mov edx, eax xor edx, 0x20000 or edx, ecx
- je SHORT G_M8199_IG09
+ je SHORT G_M8199_IG10
xor eax, 0x30000 or eax, ecx jne SHORT G_M8199_IG14 @@ -95,37 +95,32 @@ G_M8199_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, mov edx, eax xor edx, 0xD1FFAB1E or edx, ecx
- je SHORT G_M8199_IG13 - mov edx, eax - xor edx, 0xD1FFAB1E - or edx, ecx - je SHORT G_M8199_IG13
+ je SHORT G_M8199_IG09
xor eax, 0xD1FFAB1E or eax, ecx
- je SHORT G_M8199_IG14 - jmp SHORT G_M8199_IG14 - ;; size=35 bbWeight=0.50 PerfScore 3.50 -G_M8199_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - mov eax, 3 - ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M8199_IG10: ; bbWeight=0.50, epilog, nogc, extend - pop esi - pop ebp - ret - ;; size=3 bbWeight=0.50 PerfScore 1.00 -G_M8199_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - mov eax, 4 - ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M8199_IG12: ; bbWeight=0.50, epilog, nogc, extend - pop esi - pop ebp - ret - ;; size=3 bbWeight=0.50 PerfScore 1.00 -G_M8199_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jne SHORT G_M8199_IG14 + ;; size=21 bbWeight=0.50 PerfScore 1.62 +G_M8199_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, 1 jmp SHORT G_M8199_IG15 ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M8199_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M8199_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 3 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M8199_IG11: ; bbWeight=0.50, epilog, nogc, extend + pop esi + pop ebp + ret + ;; size=3 bbWeight=0.50 PerfScore 1.00 +G_M8199_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + mov eax, 4 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M8199_IG13: ; bbWeight=0.50, epilog, nogc, extend + pop esi + pop ebp + ret + ;; size=3 bbWeight=0.50 PerfScore 1.00 +G_M8199_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M8199_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc @@ -153,6 +148,6 @@ G_M8199_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, by int3 ;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 226, prolog size 4, PerfScore 36.00, instruction count 78, allocated bytes for code 226 (MethodHash=ea4bdff8) for method System.Uri:get_HostNameType():int:this (FullOpts)
+; Total bytes of code 212, prolog size 4, PerfScore 34.12, instruction count 73, allocated bytes for code 212 (MethodHash=ea4bdff8) for method System.Uri:get_HostNameType():int:this (FullOpts)
; ============================================================

-2 (-0.28%) : 9787.dasm - System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)

@@ -17,12 +17,12 @@ ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> ;* V07 tmp0 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> ; V08 tmp1 [V08,T04] ( 3, 3 ) ref -> [ebp-0x30] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.SocketAddress>
-; V09 tmp2 [V09,T17] ( 2, 0 ) ref -> esi class-hnd exact single-def "non-inline candidate call" <System.String> -; V10 tmp3 [V10,T12] ( 3, 0 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> -; V11 tmp4 [V11,T13] ( 3, 0 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> -; V12 tmp5 [V12,T14] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V13 tmp6 [V13,T15] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V14 tmp7 [V14,T16] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V09 tmp2 [V09,T18] ( 2, 0 ) ref -> esi class-hnd exact single-def "non-inline candidate call" <System.String> +; V10 tmp3 [V10,T13] ( 3, 0 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> +; V11 tmp4 [V11,T14] ( 3, 0 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> +; V12 tmp5 [V12,T15] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V13 tmp6 [V13,T16] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V14 tmp7 [V14,T17] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V16 tmp9 [V16,T09] ( 2, 1 ) ubyte -> eax "Inline return value spill temp" ; V17 tmp10 [V17,T05] ( 3, 3 ) int -> eax "Inlining Arg" @@ -31,16 +31,17 @@ ;* V20 tmp13 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ; V21 tmp14 [V21,T07] ( 3, 2.50) int -> eax "Inline return value spill temp" ; V22 tmp15 [V22,T03] ( 3, 5 ) ref -> edi class-hnd exact single-def "Inlining Arg" <System.Net.Sockets.SafeSocketHandle>
-; V23 tmp16 [V23,T11] ( 1, 1 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP -; V24 tmp17 [V24,T18] ( 2, 0 ) ref -> esi single-def "argument with side effect" -; V25 tmp18 [V25,T19] ( 2, 0 ) ref -> edi single-def "argument with side effect" -; V26 tmp19 [V26,T20] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V27 tmp20 [V27,T21] ( 2, 0 ) ref -> edi single-def "argument with side effect"
+; V23 tmp16 [V23,T12] ( 1, 1 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP +; V24 tmp17 [V24,T11] ( 2, 1 ) ref -> eax single-def "Field obj" +; V25 tmp18 [V25,T19] ( 2, 0 ) ref -> esi single-def "argument with side effect" +; V26 tmp19 [V26,T20] ( 2, 0 ) ref -> edi single-def "argument with side effect" +; V27 tmp20 [V27,T21] ( 2, 0 ) ref -> edx single-def "argument with side effect"
; V28 tmp21 [V28,T22] ( 2, 0 ) ref -> edi single-def "argument with side effect"
-; V29 tmp22 [V29,T23] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V30 tmp23 [V30,T24] ( 2, 0 ) ref -> esi single-def "argument with side effect" -; V31 EHSlots [V31 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar" -; V32 cse0 [V32,T10] ( 4, 1.50) int -> [ebp-0x28] spill-single-def "CSE - moderate"
+; V29 tmp22 [V29,T23] ( 2, 0 ) ref -> edi single-def "argument with side effect" +; V30 tmp23 [V30,T24] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V31 tmp24 [V31,T25] ( 2, 0 ) ref -> esi single-def "argument with side effect" +; V32 EHSlots [V32 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar" +; V33 cse0 [V33,T10] ( 4, 1.50) int -> [ebp-0x28] spill-single-def "CSE - moderate"
; ; Lcl frame size = 44 @@ -166,10 +167,10 @@ G_M11429_IG06: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= G_M11429_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax]
- movsx eax, byte ptr [eax+0x59] - ; gcrRegs -[eax] - ;; size=9 bbWeight=0.50 PerfScore 3.00
+ cmp byte ptr [eax], al + ;; size=7 bbWeight=0.50 PerfScore 2.50
G_M11429_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
mov edx, gword ptr [esi+0x60] ; gcrRegs +[edx] lea edx, bword ptr [edx+0x04] @@ -398,7 +399,7 @@ G_M11429_IG21: ; bbWeight=0, gcVars=00000001 {V01}, gcrefRegs=00000040 {e int3 ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 703, prolog size 14, PerfScore 110.50, instruction count 201, allocated bytes for code 703 (MethodHash=8b1ad35a) for method System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
+; Total bytes of code 701, prolog size 14, PerfScore 110.00, instruction count 201, allocated bytes for code 701 (MethodHash=8b1ad35a) for method System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
; ============================================================ *************** EH table for System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this

-6 (-0.20%) : 15167.dasm - System.IO.Strategies.BufferedFileStreamStrategy+d__37:MoveNext():this (FullOpts)

@@ -69,12 +69,12 @@ ; V58 tmp39 [V58,T40] ( 3, 6 ) int -> ebx "Inlining Arg" ; V59 tmp40 [V59,T41] ( 3, 6 ) int -> edx "Inlining Arg" ; V60 tmp41 [V60,T05] ( 5, 10 ) ref -> edx class-hnd single-def "Inlining Arg" <ubyte[]>
-; V61 tmp42 [V61,T15] ( 5, 8 ) int -> ecx "Inlining Arg"
+; V61 tmp42 [V61,T18] ( 4, 8 ) int -> ecx "Inlining Arg"
;* V62 tmp43 [V62 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V63 tmp44 [V63 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V64 tmp45 [V64,T26] ( 6, 6 ) byref -> [ebp-0xA8] "Inline stloc first use temp" ; V65 tmp46 [V65,T13] ( 8, 8 ) int -> [ebp-0x68] "Inline stloc first use temp"
-; V66 tmp47 [V66,T16] ( 4, 8 ) byref -> [ebp-0xAC] spill-single-def "Inlining Arg"
+; V66 tmp47 [V66,T15] ( 4, 8 ) byref -> [ebp-0xAC] spill-single-def "Inlining Arg"
; V67 tmp48 [V67,T11] ( 9, 9 ) ref -> [ebp-0xB0] class-hnd spill-single-def "Inline stloc first use temp" <System.Object> ;* V68 tmp49 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V69 tmp50 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -90,7 +90,7 @@ ;* V79 tmp60 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V80 tmp61 [V80 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V81 tmp62 [V81 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V82 tmp63 [V82,T17] ( 4, 8 ) byref -> edx single-def "Inlining Arg"
+; V82 tmp63 [V82,T16] ( 4, 8 ) byref -> edx single-def "Inlining Arg"
;* V83 tmp64 [V83 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]> ; V84 tmp65 [V84,T06] ( 5, 10 ) ref -> [ebp-0xB4] class-hnd spill-single-def "Inlining Arg" <System.Object> ; V85 tmp66 [V85,T76] ( 3, 3 ) int -> registers @@ -173,7 +173,7 @@ ;* V162 tmp143 [V162 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V163 tmp144 [V163,T29] ( 6, 6 ) byref -> [ebp-0xC0] "Inline stloc first use temp" ; V164 tmp145 [V164,T14] ( 8, 8 ) int -> [ebp-0x84] "Inline stloc first use temp"
-; V165 tmp146 [V165,T18] ( 4, 8 ) byref -> [ebp-0xC4] spill-single-def "Inlining Arg"
+; V165 tmp146 [V165,T17] ( 4, 8 ) byref -> [ebp-0xC4] spill-single-def "Inlining Arg"
; V166 tmp147 [V166,T12] ( 9, 9 ) ref -> ebx class-hnd single-def "Inline stloc first use temp" <System.Object> ;* V167 tmp148 [V167 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V168 tmp149 [V168 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -371,7 +371,7 @@ G_M33324_IG06: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00 lea ecx, [ebp-0x30] call [<unknown method>] ; gcrRegs -[eax edx]
- jmp G_M33324_IG86
+ jmp G_M33324_IG85
;; size=49 bbWeight=1 PerfScore 15.25 G_M33324_IG07: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref ; GC ptr vars +{V01 V02} @@ -428,7 +428,7 @@ G_M33324_IG10: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov edx, gword ptr [edi+0x10] ; gcrRegs +[edx] test edx, edx
- je G_M33324_IG71
+ je G_M33324_IG70
cmp dword ptr [edx+0x04], ecx jb G_M33324_IG70 mov eax, dword ptr [edx+0x04] @@ -538,7 +538,7 @@ G_M33324_IG13: ; bbWeight=1, gcVars=00000000200000000000000004000003 {V00 mov ecx, dword ptr [ebp-0x90] mov edx, dword ptr [ebp-0x68] cmp ecx, edx
- ja G_M33324_IG72
+ ja G_M33324_IG71
push ecx mov ecx, bword ptr [ebp-0xA8] ; byrRegs +[ecx] @@ -555,8 +555,8 @@ G_M33324_IG14: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov dword ptr [ebp-0x28], ebx mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG78 - jmp G_M33324_IG76
+ push G_M33324_IG77 + jmp G_M33324_IG75
;; size=32 bbWeight=1 PerfScore 10.00 G_M33324_IG15: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref test ebx, ebx @@ -566,7 +566,7 @@ G_M33324_IG15: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov eax, dword ptr [edx+0x08] mov dword ptr [ebp-0x9C], eax cmp ebx, eax
- ja G_M33324_IG73
+ ja G_M33324_IG72
mov ecx, gword ptr [edx] ; gcrRegs +[ecx] mov gword ptr [ebp-0xB4], ecx @@ -827,8 +827,8 @@ G_M33324_IG28: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e mov dword ptr [ebp-0x28], eax mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG81 - jmp G_M33324_IG76
+ push G_M33324_IG80 + jmp G_M33324_IG75
;; size=30 bbWeight=1 PerfScore 9.00 G_M33324_IG29: ; bbWeight=0.50, gcVars=00000000000000000000000000000043 {V00 V02 V84}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref ; gcrRegs +[edi] @@ -893,8 +893,8 @@ G_M33324_IG34: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e ; gcrRegs -[eax edx] mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG79 - jmp G_M33324_IG76
+ push G_M33324_IG78 + jmp G_M33324_IG75
;; size=78 bbWeight=1 PerfScore 18.50 G_M33324_IG35: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref add esi, 48 @@ -975,8 +975,8 @@ G_M33324_IG41: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e ; gcrRegs -[eax edx] mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG80 - jmp G_M33324_IG76
+ push G_M33324_IG79 + jmp G_M33324_IG75
;; size=79 bbWeight=1 PerfScore 19.50 G_M33324_IG42: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref add esi, 56 @@ -1176,8 +1176,8 @@ G_M33324_IG55: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e ; gcrRegs -[eax edx] mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG82 - jmp G_M33324_IG76
+ push G_M33324_IG81 + jmp G_M33324_IG75
;; size=79 bbWeight=1 PerfScore 19.50 G_M33324_IG56: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref add esi, 56 @@ -1409,7 +1409,7 @@ G_M33324_IG69: ; bbWeight=1, gcVars=00000000000004000000000020000003 {V00 mov ebx, dword ptr [ebp-0x98] mov ecx, dword ptr [ebp-0x84] cmp ebx, ecx
- ja SHORT G_M33324_IG72
+ ja SHORT G_M33324_IG71
push ebx mov ecx, bword ptr [ebp-0xC0] ; byrRegs +[ecx] @@ -1418,7 +1418,7 @@ G_M33324_IG69: ; bbWeight=1, gcVars=00000000000004000000000020000003 {V00 ; GC ptr vars -{V163 V236} call [<unknown method>] ; byrRegs -[ecx edx]
- jmp SHORT G_M33324_IG74
+ jmp SHORT G_M33324_IG73
;; size=54 bbWeight=1 PerfScore 16.00 G_M33324_IG70: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref ; gcrRegs -[edi] @@ -1427,29 +1427,24 @@ G_M33324_IG70: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000040 {e call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] int3 ;; size=13 bbWeight=0 PerfScore 0.00
-G_M33324_IG71: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - test ecx, ecx - jne SHORT G_M33324_IG70 - jmp SHORT G_M33324_IG70 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M33324_IG72: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M33324_IG71: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
call [System.ThrowHelper:ThrowArgumentException_DestinationTooShort()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M33324_IG73: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M33324_IG72: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov ecx, 33 call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M33324_IG74: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M33324_IG73: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov ebx, dword ptr [ebp-0x80] add dword ptr [edi+0x1C], ebx add ebx, dword ptr [esi+0x0C] mov dword ptr [ebp-0x28], ebx ;; size=12 bbWeight=1 PerfScore 8.00
-G_M33324_IG75: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M33324_IG74: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
cmp dword ptr [ebp-0x24], 0
- jge G_M33324_IG84
+ jge G_M33324_IG83
mov ecx, gword ptr [edi+0x04] ; gcrRegs +[ecx] cmp byte ptr [ecx], cl @@ -1457,13 +1452,13 @@ G_M33324_IG75: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 ; GC ptr vars -{V02} call [<unknown method>] ; gcrRegs -[ecx edi]
- jmp G_M33324_IG84
+ jmp G_M33324_IG83
;; size=31 bbWeight=1 PerfScore 13.25
-G_M33324_IG76: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33324_IG75: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[esi] ; GC ptr vars +{V01 V02} cmp dword ptr [ebp-0x24], 0
- jge SHORT G_M33324_IG77
+ jge SHORT G_M33324_IG76
mov edi, gword ptr [ebp-0xA4] ; gcrRegs +[edi] mov ecx, gword ptr [edi+0x04] @@ -1474,40 +1469,40 @@ G_M33324_IG76: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 call [<unknown method>] ; gcrRegs -[ecx edi] ;; size=28 bbWeight=1 PerfScore 12.25
-G_M33324_IG77: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M33324_IG76: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
pop eax jmp eax ;; size=3 bbWeight=1 PerfScore 2.50
-G_M33324_IG78: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M33324_IG77: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x18], 0 mov esi, bword ptr [ebp-0xA0] ; byrRegs +[esi]
- jmp SHORT G_M33324_IG84
+ jmp SHORT G_M33324_IG83
;; size=15 bbWeight=1 PerfScore 4.00
-G_M33324_IG79: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M33324_IG78: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[esi] ; GC ptr vars -{V00} mov dword ptr [ebp-0x18], 0
- jmp G_M33324_IG86
+ jmp G_M33324_IG85
;; size=12 bbWeight=1 PerfScore 3.00
-G_M33324_IG80: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M33324_IG79: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x18], 0
- jmp G_M33324_IG86
+ jmp G_M33324_IG85
;; size=12 bbWeight=1 PerfScore 3.00
-G_M33324_IG81: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33324_IG80: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars +{V00} mov dword ptr [ebp-0x18], 0 mov esi, bword ptr [ebp-0xA0] ; byrRegs +[esi]
- jmp SHORT G_M33324_IG84
+ jmp SHORT G_M33324_IG83
;; size=15 bbWeight=1 PerfScore 4.00
-G_M33324_IG82: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33324_IG81: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[esi] ; GC ptr vars -{V00} mov dword ptr [ebp-0x18], 0
- jmp SHORT G_M33324_IG86
+ jmp SHORT G_M33324_IG85
;; size=9 bbWeight=1 PerfScore 3.00
-G_M33324_IG83: ; bbWeight=0, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33324_IG82: ; bbWeight=0, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[eax] ; GC ptr vars +{V00} mov edx, eax @@ -1522,15 +1517,15 @@ G_M33324_IG83: ; bbWeight=0, gcVars=00000000000000000000000000000001 {V00 ; gcrRegs -[eax edx] ; byrRegs -[ecx esi] ...

-10 (-0.08%) : 13875.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)

@@ -9,18 +9,18 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] (145,450.50) ref -> ebx class-hnd single-def <System.IO.TextWriter>
-; V01 arg1 [V01,T198] ( 7, 5 ) ref -> [ebp-0x2A0] class-hnd single-def <MicroBenchmarks.Serializers.CollectionsOfPrimitives>
+; V01 arg1 [V01,T198] ( 7, 5 ) ref -> [ebp-0x29C] class-hnd single-def <MicroBenchmarks.Serializers.CollectionsOfPrimitives>
;* V02 arg2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
-; V03 loc0 [V03,T02] (133,212 ) ref -> [ebp-0x2A4] class-hnd exact spill-single-def <ushort[]> -; V04 loc1 [V04,T154] ( 7, 10.50) ref -> [ebp-0x2A8] class-hnd spill-single-def <ubyte[]>
+; V03 loc0 [V03,T02] (133,212 ) ref -> [ebp-0x2A0] class-hnd exact spill-single-def <ushort[]> +; V04 loc1 [V04,T154] ( 7, 10.50) ref -> [ebp-0x2A4] class-hnd spill-single-def <ubyte[]>
; V05 loc2 [V05,T17] ( 10, 29.50) int -> [ebp-0x10] ; V06 loc3 [V06,T13] ( 13, 41.50) int -> [ebp-0x14]
-; V07 loc4 [V07,T155] ( 7, 10.50) ref -> [ebp-0x2AC] class-hnd exact spill-single-def <System.DateTime[]>
+; V07 loc4 [V07,T155] ( 7, 10.50) ref -> [ebp-0x2A8] class-hnd exact spill-single-def <System.DateTime[]>
;* V08 loc5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.DateTime>
-; V09 loc6 [V09,T314] ( 4, 2 ) ref -> [ebp-0x2B0] class-hnd spill-single-def <System.Collections.Generic.Dictionary`2[int,System.String]>
+; V09 loc6 [V09,T314] ( 4, 2 ) ref -> [ebp-0x2AC] class-hnd spill-single-def <System.Collections.Generic.Dictionary`2[int,System.String]>
; V10 loc7 [V10 ] ( 11, 16 ) struct (24) [ebp-0x2C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[int,System.String]> ;* V11 loc8 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Generic.KeyValuePair`2[int,System.String]>
-; V12 loc9 [V12,T200] ( 6, 6.50) ref -> [ebp-0x2B4] class-hnd spill-single-def <System.Collections.Generic.List`1[int]>
+; V12 loc9 [V12,T200] ( 6, 6.50) ref -> [ebp-0x2B0] class-hnd spill-single-def <System.Collections.Generic.List`1[int]>
; V13 tmp0 [V13,T18] ( 5, 28 ) int -> [ebp-0x30] spill-single-def "impAppendStmt" ;* V14 tmp1 [V14 ] ( 0, 0 ) ref -> zero-ref single-def ; V15 tmp2 [V15 ] ( 3, 3 ) struct ( 8) [ebp-0x38] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <System.DateTime> @@ -107,7 +107,7 @@ ;* V96 tmp83 [V96 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V97 tmp84 [V97 ] ( 4, 12 ) struct ( 8) [ebp-0xA0] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.DateTime> ;* V98 tmp85 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
-; V99 tmp86 [V99,T163] ( 4, 8 ) ref -> [ebp-0x2B8] class-hnd exact spill-single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
+; V99 tmp86 [V99,T163] ( 4, 8 ) ref -> [ebp-0x2B4] class-hnd exact spill-single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
;* V100 tmp87 [V100 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.DateTime> ;* V101 tmp88 [V101 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V102 tmp89 [V102,T202] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -231,7 +231,7 @@ ; V220 tmp207 [V220,T194] ( 2, 8 ) int -> edx "Strict ordering of exceptions for Array store" ; V221 tmp208 [V221,T195] ( 2, 8 ) int -> edx "Strict ordering of exceptions for Array store" ; V222 tmp209 [V222,T15] ( 18, 34 ) long -> [ebp-0x154] do-not-enreg[F] "field V08._dateData (fldOffset=0x0)" P-INDEP
-; V223 tmp210 [V223,T44] ( 10, 22.50) ref -> [ebp-0x2BC] "field V11.value (fldOffset=0x0)" P-INDEP
+; V223 tmp210 [V223,T44] ( 10, 22.50) ref -> [ebp-0x2B8] "field V11.value (fldOffset=0x0)" P-INDEP
; V224 tmp211 [V224,T52] ( 10, 16.50) int -> [ebp-0x158] "field V11.key (fldOffset=0x4)" P-INDEP ; V225 tmp212 [V225,T321] ( 3, 2 ) long -> [ebp-0x38] do-not-enreg[H] hidden-struct-arg "field V15._dateData (fldOffset=0x0)" P-DEP ; V226 tmp213 [V226,T61] ( 5, 16 ) long -> [ebp-0x160] do-not-enreg[F] "field V16._dateData (fldOffset=0x0)" P-INDEP @@ -245,7 +245,7 @@ ; V234 tmp221 [V234,T359] ( 3, 1.50) long -> [ebp-0x178] do-not-enreg[F] single-def "field V70._dateData (fldOffset=0x0)" P-INDEP ;* V235 tmp222 [V235 ] ( 0, 0 ) long -> zero-ref single-def "field V71._ticks (fldOffset=0x0)" P-INDEP ;* V236 tmp223 [V236 ] ( 0, 0 ) long -> zero-ref "field V77._dateData (fldOffset=0x0)" P-INDEP
-; V237 tmp224 [V237,T315] ( 4, 2 ) byref -> [ebp-0x2C0] "field V78._reference (fldOffset=0x0)" P-INDEP
+; V237 tmp224 [V237,T315] ( 4, 2 ) byref -> [ebp-0x2BC] "field V78._reference (fldOffset=0x0)" P-INDEP
;* V238 tmp225 [V238,T386] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x4)" P-INDEP ;* V239 tmp226 [V239 ] ( 0, 0 ) byref -> zero-ref single-def "field V79._reference (fldOffset=0x0)" P-INDEP ;* V240 tmp227 [V240 ] ( 0, 0 ) int -> zero-ref single-def "field V79._length (fldOffset=0x4)" P-INDEP @@ -268,7 +268,7 @@ ; V257 tmp244 [V257,T112] ( 3, 12 ) long -> [ebp-0x198] do-not-enreg[F] "field V119._dateData (fldOffset=0x0)" P-INDEP ;* V258 tmp245 [V258 ] ( 0, 0 ) long -> zero-ref "field V120._ticks (fldOffset=0x0)" P-INDEP ;* V259 tmp246 [V259 ] ( 0, 0 ) long -> zero-ref "field V126._dateData (fldOffset=0x0)" P-INDEP
-; V260 tmp247 [V260,T75] ( 4, 12 ) byref -> [ebp-0x2C4] "field V127._reference (fldOffset=0x0)" P-INDEP
+; V260 tmp247 [V260,T75] ( 4, 12 ) byref -> [ebp-0x2C0] "field V127._reference (fldOffset=0x0)" P-INDEP
;* V261 tmp248 [V261,T226] ( 0, 0 ) int -> zero-ref "field V127._length (fldOffset=0x4)" P-INDEP ;* V262 tmp249 [V262 ] ( 0, 0 ) byref -> zero-ref "field V128._reference (fldOffset=0x0)" P-INDEP ;* V263 tmp250 [V263 ] ( 0, 0 ) int -> zero-ref "field V128._length (fldOffset=0x4)" P-INDEP @@ -297,31 +297,31 @@ ; V286 tmp273 [V286,T113] ( 3, 12 ) int -> [ebp-0x1AC] spill-single-def "fgMakeTemp is creating a new local variable" ; V287 tmp274 [V287,T114] ( 3, 12 ) int -> [ebp-0x1B0] spill-single-def "fgMakeTemp is creating a new local variable" ; V288 tmp275 [V288,T76] ( 3, 12 ) ref -> edx "arr expr"
-; V289 tmp276 [V289,T77] ( 3, 12 ) ref -> [ebp-0x2C8] spill-single-def "arr expr" -; V290 tmp277 [V290,T78] ( 3, 12 ) ref -> [ebp-0x2CC] spill-single-def "arr expr"
+; V289 tmp276 [V289,T77] ( 3, 12 ) ref -> [ebp-0x2C4] spill-single-def "arr expr" +; V290 tmp277 [V290,T78] ( 3, 12 ) ref -> [ebp-0x2C8] spill-single-def "arr expr"
; V291 tmp278 [V291,T79] ( 3, 12 ) ref -> eax "arr expr"
-; V292 tmp279 [V292,T80] ( 3, 12 ) ref -> [ebp-0x2D0] spill-single-def "arr expr" -; V293 tmp280 [V293,T81] ( 3, 12 ) ref -> [ebp-0x2D4] spill-single-def "arr expr"
+; V292 tmp279 [V292,T80] ( 3, 12 ) ref -> [ebp-0x2CC] spill-single-def "arr expr" +; V293 tmp280 [V293,T81] ( 3, 12 ) ref -> [ebp-0x2D0] spill-single-def "arr expr"
; V294 tmp281 [V294,T82] ( 3, 12 ) ref -> edx "arr expr" ; V295 tmp282 [V295,T83] ( 3, 12 ) ref -> edx "arr expr" ; V296 tmp283 [V296,T84] ( 3, 12 ) ref -> edx "arr expr"
-; V297 tmp284 [V297,T241] ( 3, 3 ) ref -> [ebp-0x2D8] spill-single-def "arr expr"
+; V297 tmp284 [V297,T241] ( 3, 3 ) ref -> [ebp-0x2D4] spill-single-def "arr expr"
; V298 tmp285 [V298,T242] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V299 tmp286 [V299,T243] ( 3, 3 ) ref -> [ebp-0x2DC] spill-single-def "arr expr"
+; V299 tmp286 [V299,T243] ( 3, 3 ) ref -> [ebp-0x2D8] spill-single-def "arr expr"
; V300 tmp287 [V300,T244] ( 3, 3 ) byref -> ecx single-def "BlockOp address local"
-; V301 tmp288 [V301,T245] ( 3, 3 ) ref -> [ebp-0x2E0] spill-single-def "arr expr"
+; V301 tmp288 [V301,T245] ( 3, 3 ) ref -> [ebp-0x2DC] spill-single-def "arr expr"
; V302 tmp289 [V302,T285] ( 3, 3 ) int -> eax "index expr" ; V303 tmp290 [V303,T246] ( 3, 3 ) byref -> ecx single-def "BlockOp address local"
-; V304 tmp291 [V304,T247] ( 3, 3 ) ref -> [ebp-0x2E4] spill-single-def "arr expr"
+; V304 tmp291 [V304,T247] ( 3, 3 ) ref -> [ebp-0x2E0] spill-single-def "arr expr"
; V305 tmp292 [V305,T286] ( 3, 3 ) int -> eax "index expr" ; V306 tmp293 [V306,T248] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V307 tmp294 [V307,T249] ( 3, 3 ) ref -> [ebp-0x2E8] spill-single-def "arr expr"
+; V307 tmp294 [V307,T249] ( 3, 3 ) ref -> [ebp-0x2E4] spill-single-def "arr expr"
; V308 tmp295 [V308,T287] ( 3, 3 ) int -> ecx "index expr" ; V309 tmp296 [V309,T250] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V310 tmp297 [V310,T251] ( 3, 3 ) ref -> [ebp-0x2EC] spill-single-def "arr expr"
+; V310 tmp297 [V310,T251] ( 3, 3 ) ref -> [ebp-0x2E8] spill-single-def "arr expr"
; V311 tmp298 [V311,T288] ( 3, 3 ) int -> edx "index expr" ; V312 tmp299 [V312,T252] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V313 tmp300 [V313,T253] ( 3, 3 ) ref -> [ebp-0x2F0] spill-single-def "arr expr"
+; V313 tmp300 [V313,T253] ( 3, 3 ) ref -> [ebp-0x2EC] spill-single-def "arr expr"
; V314 tmp301 [V314,T289] ( 3, 3 ) int -> edx "index expr" ; V315 tmp302 [V315,T254] ( 3, 3 ) byref -> ecx single-def "BlockOp address local" ; V316 tmp303 [V316,T255] ( 3, 3 ) ref -> edx single-def "arr expr" @@ -330,23 +330,23 @@ ; V319 tmp306 [V319,T258] ( 3, 3 ) byref -> eax single-def "BlockOp address local" ; V320 tmp307 [V320,T259] ( 3, 3 ) ref -> ecx single-def "arr expr" ; V321 tmp308 [V321,T260] ( 3, 3 ) byref -> ecx single-def "BlockOp address local"
-; V322 tmp309 [V322,T21] ( 3, 24 ) ref -> [ebp-0x2F4] spill-single-def "arr expr"
+; V322 tmp309 [V322,T21] ( 3, 24 ) ref -> [ebp-0x2F0] spill-single-def "arr expr"
; V323 tmp310 [V323,T22] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V324 tmp311 [V324,T23] ( 3, 24 ) ref -> [ebp-0x2F8] spill-single-def "arr expr"
+; V324 tmp311 [V324,T23] ( 3, 24 ) ref -> [ebp-0x2F4] spill-single-def "arr expr"
; V325 tmp312 [V325,T24] ( 3, 24 ) byref -> ecx "BlockOp address local"
-; V326 tmp313 [V326,T25] ( 3, 24 ) ref -> [ebp-0x2FC] spill-single-def "arr expr"
+; V326 tmp313 [V326,T25] ( 3, 24 ) ref -> [ebp-0x2F8] spill-single-def "arr expr"
; V327 tmp314 [V327,T39] ( 3, 24 ) int -> eax "index expr" ; V328 tmp315 [V328,T26] ( 3, 24 ) byref -> ecx "BlockOp address local"
-; V329 tmp316 [V329,T27] ( 3, 24 ) ref -> [ebp-0x300] spill-single-def "arr expr"
+; V329 tmp316 [V329,T27] ( 3, 24 ) ref -> [ebp-0x2FC] spill-single-def "arr expr"
; V330 tmp317 [V330,T40] ( 3, 24 ) int -> eax "index expr" ; V331 tmp318 [V331,T28] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V332 tmp319 [V332,T29] ( 3, 24 ) ref -> [ebp-0x304] spill-single-def "arr expr"
+; V332 tmp319 [V332,T29] ( 3, 24 ) ref -> [ebp-0x300] spill-single-def "arr expr"
; V333 tmp320 [V333,T41] ( 3, 24 ) int -> ecx "index expr" ; V334 tmp321 [V334,T30] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V335 tmp322 [V335,T31] ( 3, 24 ) ref -> [ebp-0x308] spill-single-def "arr expr"
+; V335 tmp322 [V335,T31] ( 3, 24 ) ref -> [ebp-0x304] spill-single-def "arr expr"
; V336 tmp323 [V336,T42] ( 3, 24 ) int -> edx "index expr" ; V337 tmp324 [V337,T32] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V338 tmp325 [V338,T33] ( 3, 24 ) ref -> [ebp-0x30C] spill-single-def "arr expr"
+; V338 tmp325 [V338,T33] ( 3, 24 ) ref -> [ebp-0x308] spill-single-def "arr expr"
; V339 tmp326 [V339,T43] ( 3, 24 ) int -> edx "index expr" ; V340 tmp327 [V340,T34] ( 3, 24 ) byref -> ecx "BlockOp address local" ; V341 tmp328 [V341,T85] ( 3, 12 ) ref -> edx "arr expr" @@ -370,11 +370,11 @@ ; V359 tmp346 [V359,T115] ( 3, 12 ) int -> [ebp-0x1BC] spill-single-def "fgMakeTemp is creating a new local variable" ; V360 tmp347 [V360,T116] ( 3, 12 ) int -> [ebp-0x1C0] spill-single-def "fgMakeTemp is creating a new local variable" ; V361 tmp348 [V361,T91] ( 3, 12 ) ref -> edx "arr expr"
-; V362 tmp349 [V362,T92] ( 3, 12 ) ref -> [ebp-0x310] spill-single-def "arr expr" -; V363 tmp350 [V363,T93] ( 3, 12 ) ref -> [ebp-0x314] spill-single-def "arr expr"
+; V362 tmp349 [V362,T92] ( 3, 12 ) ref -> [ebp-0x30C] spill-single-def "arr expr" +; V363 tmp350 [V363,T93] ( 3, 12 ) ref -> [ebp-0x310] spill-single-def "arr expr"
; V364 tmp351 [V364,T94] ( 3, 12 ) ref -> eax "arr expr"
-; V365 tmp352 [V365,T95] ( 3, 12 ) ref -> [ebp-0x318] spill-single-def "arr expr" -; V366 tmp353 [V366,T96] ( 3, 12 ) ref -> [ebp-0x31C] spill-single-def "arr expr"
+; V365 tmp352 [V365,T95] ( 3, 12 ) ref -> [ebp-0x314] spill-single-def "arr expr" +; V366 tmp353 [V366,T96] ( 3, 12 ) ref -> [ebp-0x318] spill-single-def "arr expr"
; V367 tmp354 [V367,T97] ( 3, 12 ) ref -> ecx "arr expr" ; V368 tmp355 [V368,T98] ( 3, 12 ) ref -> ecx "arr expr" ; V369 tmp356 [V369,T99] ( 3, 12 ) ref -> ecx "arr expr" @@ -393,11 +393,11 @@ ; V382 tmp369 [V382,T117] ( 3, 12 ) int -> [ebp-0x1CC] spill-single-def "fgMakeTemp is creating a new local variable" ; V383 tmp370 [V383,T118] ( 3, 12 ) int -> [ebp-0x1D0] spill-single-def "fgMakeTemp is creating a new local variable" ; V384 tmp371 [V384,T100] ( 3, 12 ) ref -> edx "arr expr"
-; V385 tmp372 [V385,T101] ( 3, 12 ) ref -> [ebp-0x320] spill-single-def "arr expr" -; V386 tmp373 [V386,T102] ( 3, 12 ) ref -> [ebp-0x324] spill-single-def "arr expr"
+; V385 tmp372 [V385,T101] ( 3, 12 ) ref -> [ebp-0x31C] spill-single-def "arr expr" +; V386 tmp373 [V386,T102] ( 3, 12 ) ref -> [ebp-0x320] spill-single-def "arr expr"
; V387 tmp374 [V387,T103] ( 3, 12 ) ref -> edx "arr expr"
-; V388 tmp375 [V388,T104] ( 3, 12 ) ref -> [ebp-0x328] spill-single-def "arr expr" -; V389 tmp376 [V389,T105] ( 3, 12 ) ref -> [ebp-0x32C] spill-single-def "arr expr"
+; V388 tmp375 [V388,T104] ( 3, 12 ) ref -> [ebp-0x324] spill-single-def "arr expr" +; V389 tmp376 [V389,T105] ( 3, 12 ) ref -> [ebp-0x328] spill-single-def "arr expr"
; V390 tmp377 [V390,T106] ( 3, 12 ) ref -> edx "arr expr" ; V391 tmp378 [V391,T107] ( 3, 12 ) ref -> edx "arr expr" ; V392 tmp379 [V392,T108] ( 3, 12 ) ref -> edx "arr expr" @@ -421,76 +421,76 @@ ;* V410 cse17 [V410 ] ( 0, 0 ) long -> zero-ref "CSE - conservative" ; V411 cse18 [V411,T01] (109,396.50) int -> [ebp-0x1E4] multi-def "CSE - aggressive" ; V412 cse19 [V412,T07] ( 38, 54 ) int -> [ebp-0x1E8] multi-def "CSE - moderate"
-; V413 cse20 [V413,T62] ( 4, 16 ) ref -> [ebp-0x330] spill-single-def "CSE - conservative" -; V414 cse21 [V414,T316] ( 4, 2 ) ref -> [ebp-0x334] spill-single-def "CSE - conservative" -; V415 rat0 [V415,T368] ( 3, 1.50) int -> [ebp-0x1EC] spill-single-def "field V51.lo (fldOffset=0x0)" P-INDEP -; V416 rat1 [V416,T369] ( 3, 1.50) int -> eax "field V51.hi (fldOffset=0x4)" P-INDEP -; V417 rat2 [V417,T221] ( 8, 4 ) int -> [ebp-0x1F0] "field V72.lo (fldOffset=0x0)" P-INDEP -; V418 rat3 [V418,T231] ( 7, 3.50) int -> [ebp-0x1F4] "field V72.hi (fldOffset=0x4)" P-INDEP -; V419 rat4 [V419,T213] ( 9, 4.50) int -> [ebp-0x1F8] "field V74.lo (fldOffset=0x0)" P-INDEP -; V420 rat5 [V420,T214] ( 9, 4.50) int -> [ebp-0x1FC] "field V74.hi (fldOffset=0x4)" P-INDEP -; V421 rat6 [V421,T370] ( 2, 1.50) int -> [ebp-0x200] spill-single-def "field V76.lo (fldOffset=0x0)" P-INDEP -; V422 rat7 [V422,T371] ( 2, 1.50) int -> [ebp-0x204] spill-single-def "field V76.hi (fldOffset=0x4)" P-INDEP -; V423 rat8 [V423,T158] ( 3, 10 ) int -> ecx "field V92.lo (fldOffset=0x0)" P-INDEP -; V424 rat9 [V424,T159] ( 3, 10 ) int -> eax "field V92.hi (fldOffset=0x4)" P-INDEP
+; V413 cse20 [V413,T62] ( 4, 16 ) ref -> [ebp-0x32C] spill-single-def "CSE - conservative" +; V414 cse21 [V414,T316] ( 4, 2 ) ref -> [ebp-0x330] spill-single-def "CSE - conservative" +; V415 rat0 [V415,T368] ( 2, 1 ) int -> ecx "field V51.lo (fldOffset=0x0)" P-INDEP +; V416 rat1 [V416,T369] ( 2, 1 ) int -> eax "field V51.hi (fldOffset=0x4)" P-INDEP +; V417 rat2 [V417,T221] ( 8, 4 ) int -> [ebp-0x1EC] "field V72.lo (fldOffset=0x0)" P-INDEP +; V418 rat3 [V418,T231] ( 7, 3.50) int -> [ebp-0x1F0] "field V72.hi (fldOffset=0x4)" P-INDEP +; V419 rat4 [V419,T213] ( 9, 4.50) int -> [ebp-0x1F4] "field V74.lo (fldOffset=0x0)" P-INDEP +; V420 rat5 [V420,T214] ( 9, 4.50) int -> [ebp-0x1F8] "field V74.hi (fldOffset=0x4)" P-INDEP +; V421 rat6 [V421,T370] ( 2, 1.50) int -> [ebp-0x1FC] spill-single-def "field V76.lo (fldOffset=0x0)" P-INDEP +; V422 rat7 [V422,T371] ( 2, 1.50) int -> [ebp-0x200] spill-single-def "field V76.hi (fldOffset=0x4)" P-INDEP +; V423 rat8 [V423,T158] ( 2, 8 ) int -> ecx "field V92.lo (fldOffset=0x0)" P-INDEP +; V424 rat9 [V424,T159] ( 2, 8 ) int -> eax "field V92.hi (fldOffset=0x4)" P-INDEP
; V425 rat10 [V425,T160] ( 3, 10 ) int -> ecx "field V101.lo (fldOffset=0x0)" P-INDEP ; V426 rat11 [V426,T161] ( 3, 10 ) int -> eax "field V101.hi (fldOffset=0x4)" P-INDEP
-; V427 rat12 [V427,T59] ( 8, 16 ) int -> [ebp-0x208] "field V121.lo (fldOffset=0x0)" P-INDEP -; V428 rat13 [V428,T71] ( 7, 14 ) int -> [ebp-0x20C] "field V121.hi (fldOffset=0x4)" P-INDEP -; V429 rat14 [V429,T50] ( 9, 18 ) int -> [ebp-0x210] "field V123.lo (fldOffset=0x0)" P-INDEP -; V430 rat15 [V430,T51] ( 9, 18 ) int -> [ebp-0x214] "field V123.hi (fldOffset=0x4)" P-INDEP -; V431 rat16 [V431,T140] ( 2, 12 ) int -> [ebp-0x218] spill-single-def "field V125.lo (fldOffset=0x0)" P-INDEP -; V432 rat17 [V432,T141] ( 2, 12 ) int -> [ebp-0x21C] spill-single-def "field V125.hi (fldOffset=0x4)" P-INDEP -; V433 rat18 [V433,T64] ( 4, 16 ) int -> [ebp-0x220] spill-single-def "field V409.lo (fldOffset=0x0)" P-INDEP -; V434 rat19 [V434,T65] ( 4, 16 ) int -> [ebp-0x224] spill-single-def "field V409.hi (fldOffset=0x4)" P-INDEP -; V435 rat20 [V435,T319] ( 4, 2 ) int -> [ebp-0x228] spill-single-def "field V410.lo (fldOffset=0x0)" P-INDEP -; V436 rat21 [V436,T320] ( 4, 2 ) int -> [ebp-0x22C] spill-single-def "field V410.hi (fldOffset=0x4)" P-INDEP
+; V427 rat12 [V427,T59] ( 8, 16 ) int -> [ebp-0x204] "field V121.lo (fldOffset=0x0)" P-INDEP +; V428 rat13 [V428,T71] ( 7, 14 ) int -> [ebp-0x208] "field V121.hi (fldOffset=0x4)" P-INDEP +; V429 rat14 [V429,T50] ( 9, 18 ) int -> [ebp-0x20C] "field V123.lo (fldOffset=0x0)" P-INDEP +; V430 rat15 [V430,T51] ( 9, 18 ) int -> [ebp-0x210] "field V123.hi (fldOffset=0x4)" P-INDEP +; V431 rat16 [V431,T140] ( 2, 12 ) int -> [ebp-0x214] spill-single-def "field V125.lo (fldOffset=0x0)" P-INDEP +; V432 rat17 [V432,T141] ( 2, 12 ) int -> [ebp-0x218] spill-single-def "field V125.hi (fldOffset=0x4)" P-INDEP +; V433 rat18 [V433,T64] ( 4, 16 ) int -> [ebp-0x21C] spill-single-def "field V409.lo (fldOffset=0x0)" P-INDEP +; V434 rat19 [V434,T65] ( 4, 16 ) int -> [ebp-0x220] spill-single-def "field V409.hi (fldOffset=0x4)" P-INDEP +; V435 rat20 [V435,T319] ( 4, 2 ) int -> [ebp-0x224] spill-single-def "field V410.lo (fldOffset=0x0)" P-INDEP +; V436 rat21 [V436,T320] ( 4, 2 ) int -> [ebp-0x228] spill-single-def "field V410.hi (fldOffset=0x4)" P-INDEP
; V437 rat22 [V437,T295] ( 3, 3 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ; V438 rat23 [V438,T296] ( 3, 3 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ; V439 rat24 [V439,T122] ( 3, 12 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ; V440 rat25 [V440,T123] ( 3, 12 ) int -> edx "ReplaceWithLclVar is creating a new local variable"
-; V441 rat26 [V441,T279] ( 3, 3 ) byref -> [ebp-0x338] spill-single-def "ReplaceWithLclVar is creating a new local variable" -; V442 rat27 [V442 ] ( 1, 1 ) long -> [ebp-0x234] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V441 rat26 [V441,T279] ( 3, 3 ) byref -> [ebp-0x334] spill-single-def "ReplaceWithLclVar is creating a new local variable" +; V442 rat27 [V442 ] ( 1, 1 ) long -> [ebp-0x230] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V443 rat28 [V443,T322] ( 3, 2 ) int -> ecx "field V442.lo (fldOffset=0x0)" P-INDEP ; V444 rat29 [V444,T388] ( 1, 1 ) int -> edx "field V442.hi (fldOffset=0x4)" P-INDEP
-; V445 rat30 [V445 ] ( 1, 1 ) long -> [ebp-0x23C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V445 rat30 [V445 ] ( 1, 1 ) long -> [ebp-0x238] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V446 rat31 [V446,T372] ( 2, 1.50) int -> eax "field V445.lo (fldOffset=0x0)" P-INDEP ; V447 rat32 [V447,T373] ( 2, 1.50) int -> edx "field V445.hi (fldOffset=0x4)" P-INDEP
-; V448 rat33 [V448 ] ( 1, 1 ) long -> [ebp-0x244] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V448 rat33 [V448 ] ( 1, 1 ) long -> [ebp-0x240] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V449 rat34 [V449,T374] ( 2, 1.50) int -> eax "field V448.lo (fldOffset=0x0)" P-INDEP ; V450 rat35 [V450,T375] ( 2, 1.50) int -> edx "field V448.hi (fldOffset=0x4)" P-INDEP
-; V451 rat36 [V451 ] ( 1, 1 ) long -> [ebp-0x24C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V451 rat36 [V451 ] ( 1, 1 ) long -> [ebp-0x248] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V452 rat37 [V452,T323] ( 3, 2 ) int -> ecx "field V451.lo (fldOffset=0x0)" P-INDEP ; V453 rat38 [V453,T389] ( 1, 1 ) int -> edx "field V451.hi (fldOffset=0x4)" P-INDEP
-; V454 rat39 [V454 ] ( 1, 1 ) long -> [ebp-0x254] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V454 rat39 [V454 ] ( 1, 1 ) long -> [ebp-0x250] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V455 rat40 [V455,T376] ( 2, 1.50) int -> eax "field V454.lo (fldOffset=0x0)" P-INDEP ; V456 rat41 [V456,T377] ( 2, 1.50) int -> edx "field V454.hi (fldOffset=0x4)" P-INDEP
-; V457 rat42 [V457 ] ( 1, 1 ) long -> [ebp-0x25C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V457 rat42 [V457 ] ( 1, 1 ) long -> [ebp-0x258] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V458 rat43 [V458,T378] ( 2, 1.50) int -> eax "field V457.lo (fldOffset=0x0)" P-INDEP ; V459 rat44 [V459,T379] ( 2, 1.50) int -> edx "field V457.hi (fldOffset=0x4)" P-INDEP
-; V460 rat45 [V460 ] ( 1, 1 ) long -> [ebp-0x264] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V460 rat45 [V460 ] ( 1, 1 ) long -> [ebp-0x260] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V461 rat46 [V461,T380] ( 2, 1.50) int -> eax "field V460.lo (fldOffset=0x0)" P-INDEP ...

benchmarks.run_pgo.windows.x86.checked.mch

-14 (-19.18%) : 44097.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)

@@ -9,16 +9,16 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 7.63) ref -> ecx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V00 this [V00,T00] ( 7, 6.72) ref -> ecx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
; V01 arg1 [V01,T02] ( 4, 3 ) byref -> edx single-def ; V02 loc0 [V02,T03] ( 5, 4.72) int -> eax ; V03 loc1 [V03,T05] ( 4, 3.82) ref -> esi class-hnd single-def <<unknown class>> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;* V05 tmp0 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V06 cse0 [V06,T06] ( 2, 2 ) int -> edi "CSE - aggressive"
-; V07 rat0 [V07,T04] ( 2, 3.63) int -> edx "Spilling to split statement for tree"
+;* V07 rat0 [V07,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V08 rat1 [V08,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V09 rat2 [V09,T01] ( 2, 3.63) int -> edx "fgMakeTemp is creating a new local variable"
+;* V09 rat2 [V09,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -37,7 +37,7 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 ; gcrRegs +[esi] mov edi, dword ptr [esi+0x04] cmp edi, eax
- jbe SHORT G_M49890_IG05
+ jbe SHORT G_M49890_IG04
;; size=14 bbWeight=1 PerfScore 7.50 G_M49890_IG03: ; bbWeight=0.91, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000004 {edx}, byref, isz inc dword ptr [ecx+0x0C] @@ -47,24 +47,16 @@ G_M49890_IG03: ; bbWeight=0.91, gcrefRegs=00000042 {ecx esi}, byrefRegs=0 call CORINFO_HELP_CHECKED_ASSIGN_REF_EDI ; gcrRegs -[edi] ; byrRegs -[edx]
- mov edx, dword ptr [ecx] - mov edx, dword ptr [edx+0x24] - mov edx, dword ptr [edx] - mov edx, dword ptr [edx+0x0C] - test edx, edx - jne SHORT G_M49890_IG07 - ;; size=29 bbWeight=0.91 PerfScore 14.75 -G_M49890_IG04: ; bbWeight=0.18, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M49890_IG07 - ;; size=2 bbWeight=0.18 PerfScore 0.36 -G_M49890_IG05: ; bbWeight=0.09, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 {edx}, byref
+ jmp SHORT G_M49890_IG06 + ;; size=17 bbWeight=0.91 PerfScore 8.17 +G_M49890_IG04: ; bbWeight=0.09, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 {edx}, byref
; gcrRegs -[esi] ; byrRegs +[edx] xor eax, eax ; gcrRegs +[eax] mov gword ptr [edx], eax ;; size=4 bbWeight=0.09 PerfScore 0.12
-G_M49890_IG06: ; bbWeight=0.09, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M49890_IG05: ; bbWeight=0.09, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[eax] ; byrRegs -[edx] pop esi @@ -72,20 +64,20 @@ G_M49890_IG06: ; bbWeight=0.09, gcrefRegs=00000002 {ecx}, byrefRegs=00000 pop ebp ret ;; size=4 bbWeight=0.09 PerfScore 0.23
-G_M49890_IG07: ; bbWeight=0.91, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M49890_IG06: ; bbWeight=0.91, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi] xor edx, edx ; gcrRegs +[edx] mov gword ptr [esi+4*eax+0x08], edx mov eax, 1 ;; size=11 bbWeight=0.91 PerfScore 1.36
-G_M49890_IG08: ; bbWeight=0.91, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.91, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.91 PerfScore 2.27
-; Total bytes of code 73, prolog size 5, PerfScore 29.84, instruction count 34, allocated bytes for code 73 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+; Total bytes of code 59, prolog size 5, PerfScore 22.90, instruction count 28, allocated bytes for code 59 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================

-14 (-19.18%) : 116373.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)

@@ -9,16 +9,16 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 6.67) ref -> ecx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V00 this [V00,T00] ( 7, 6.00) ref -> ecx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
; V01 arg1 [V01,T01] ( 4, 3 ) byref -> edx single-def ; V02 loc0 [V02,T02] ( 5, 4.00) int -> eax ; V03 loc1 [V03,T04] ( 4, 3.33) ref -> esi class-hnd single-def <<unknown class>> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;* V05 tmp0 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V06 cse0 [V06,T06] ( 2, 2 ) int -> edi "CSE - aggressive"
-; V07 rat0 [V07,T05] ( 2, 2.67) int -> edx "Spilling to split statement for tree"
+;* V07 rat0 [V07,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V08 rat1 [V08,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V09 rat2 [V09,T03] ( 2, 2.67) int -> edx "fgMakeTemp is creating a new local variable"
+;* V09 rat2 [V09,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -37,7 +37,7 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 ; gcrRegs +[esi] mov edi, dword ptr [esi+0x04] cmp edi, eax
- jbe SHORT G_M49890_IG05
+ jbe SHORT G_M49890_IG04
;; size=14 bbWeight=1 PerfScore 7.50 G_M49890_IG03: ; bbWeight=0.67, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000004 {edx}, byref, isz inc dword ptr [ecx+0x0C] @@ -47,24 +47,16 @@ G_M49890_IG03: ; bbWeight=0.67, gcrefRegs=00000042 {ecx esi}, byrefRegs=0 call CORINFO_HELP_CHECKED_ASSIGN_REF_EDI ; gcrRegs -[edi] ; byrRegs -[edx]
- mov edx, dword ptr [ecx] - mov edx, dword ptr [edx+0x24] - mov edx, dword ptr [edx] - mov edx, dword ptr [edx+0x0C] - test edx, edx - jne SHORT G_M49890_IG07 - ;; size=29 bbWeight=0.67 PerfScore 10.83 -G_M49890_IG04: ; bbWeight=0.13, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M49890_IG07 - ;; size=2 bbWeight=0.13 PerfScore 0.27 -G_M49890_IG05: ; bbWeight=0.33, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 {edx}, byref
+ jmp SHORT G_M49890_IG06 + ;; size=17 bbWeight=0.67 PerfScore 6.00 +G_M49890_IG04: ; bbWeight=0.33, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 {edx}, byref
; gcrRegs -[esi] ; byrRegs +[edx] xor eax, eax ; gcrRegs +[eax] mov gword ptr [edx], eax ;; size=4 bbWeight=0.33 PerfScore 0.42
-G_M49890_IG06: ; bbWeight=0.33, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M49890_IG05: ; bbWeight=0.33, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[eax] ; byrRegs -[edx] pop esi @@ -72,20 +64,20 @@ G_M49890_IG06: ; bbWeight=0.33, gcrefRegs=00000002 {ecx}, byrefRegs=00000 pop ebp ret ;; size=4 bbWeight=0.33 PerfScore 0.83
-G_M49890_IG07: ; bbWeight=0.67, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M49890_IG06: ; bbWeight=0.67, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi] xor edx, edx ; gcrRegs +[edx] mov gword ptr [esi+4*eax+0x08], edx mov eax, 1 ;; size=11 bbWeight=0.67 PerfScore 1.00
-G_M49890_IG08: ; bbWeight=0.67, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.67, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.67 PerfScore 1.67
-; Total bytes of code 73, prolog size 5, PerfScore 25.77, instruction count 34, allocated bytes for code 73 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+; Total bytes of code 59, prolog size 5, PerfScore 20.67, instruction count 28, allocated bytes for code 59 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================

-14 (-19.18%) : 41298.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)

@@ -9,16 +9,16 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 6.67) ref -> ecx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V00 this [V00,T00] ( 7, 6.00) ref -> ecx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
; V01 arg1 [V01,T01] ( 4, 3 ) byref -> edx single-def ; V02 loc0 [V02,T02] ( 5, 4.00) int -> eax ; V03 loc1 [V03,T04] ( 4, 3.33) ref -> esi class-hnd single-def <<unknown class>> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;* V05 tmp0 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V06 cse0 [V06,T06] ( 2, 2 ) int -> edi "CSE - aggressive"
-; V07 rat0 [V07,T05] ( 2, 2.67) int -> edx "Spilling to split statement for tree"
+;* V07 rat0 [V07,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V08 rat1 [V08,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V09 rat2 [V09,T03] ( 2, 2.67) int -> edx "fgMakeTemp is creating a new local variable"
+;* V09 rat2 [V09,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -37,7 +37,7 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 ; gcrRegs +[esi] mov edi, dword ptr [esi+0x04] cmp edi, eax
- jbe SHORT G_M49890_IG05
+ jbe SHORT G_M49890_IG04
;; size=14 bbWeight=1 PerfScore 7.50 G_M49890_IG03: ; bbWeight=0.67, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000004 {edx}, byref, isz inc dword ptr [ecx+0x0C] @@ -47,24 +47,16 @@ G_M49890_IG03: ; bbWeight=0.67, gcrefRegs=00000042 {ecx esi}, byrefRegs=0 call CORINFO_HELP_CHECKED_ASSIGN_REF_EDI ; gcrRegs -[edi] ; byrRegs -[edx]
- mov edx, dword ptr [ecx] - mov edx, dword ptr [edx+0x24] - mov edx, dword ptr [edx] - mov edx, dword ptr [edx+0x0C] - test edx, edx - jne SHORT G_M49890_IG07 - ;; size=29 bbWeight=0.67 PerfScore 10.83 -G_M49890_IG04: ; bbWeight=0.13, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M49890_IG07 - ;; size=2 bbWeight=0.13 PerfScore 0.27 -G_M49890_IG05: ; bbWeight=0.33, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 {edx}, byref
+ jmp SHORT G_M49890_IG06 + ;; size=17 bbWeight=0.67 PerfScore 6.00 +G_M49890_IG04: ; bbWeight=0.33, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 {edx}, byref
; gcrRegs -[esi] ; byrRegs +[edx] xor eax, eax ; gcrRegs +[eax] mov gword ptr [edx], eax ;; size=4 bbWeight=0.33 PerfScore 0.42
-G_M49890_IG06: ; bbWeight=0.33, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M49890_IG05: ; bbWeight=0.33, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[eax] ; byrRegs -[edx] pop esi @@ -72,20 +64,20 @@ G_M49890_IG06: ; bbWeight=0.33, gcrefRegs=00000002 {ecx}, byrefRegs=00000 pop ebp ret ;; size=4 bbWeight=0.33 PerfScore 0.83
-G_M49890_IG07: ; bbWeight=0.67, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M49890_IG06: ; bbWeight=0.67, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi] xor edx, edx ; gcrRegs +[edx] mov gword ptr [esi+4*eax+0x08], edx mov eax, 1 ;; size=11 bbWeight=0.67 PerfScore 1.00
-G_M49890_IG08: ; bbWeight=0.67, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.67, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.67 PerfScore 1.67
-; Total bytes of code 73, prolog size 5, PerfScore 25.77, instruction count 34, allocated bytes for code 73 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+; Total bytes of code 59, prolog size 5, PerfScore 20.67, instruction count 28, allocated bytes for code 59 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================

-2 (-0.25%) : 33824.dasm - System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)

@@ -12,23 +12,23 @@ ; V00 this [V00,T03] ( 10, 5 ) ref -> edi this class-hnd single-def <System.Net.Sockets.Socket> ; V01 arg1 [V01,T00] ( 25, 17 ) ref -> [ebp-0x28] class-hnd EH-live single-def <System.Net.Sockets.SocketAsyncEventArgs> ;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Threading.CancellationToken>
-; V03 loc0 [V03,T05] ( 12, 2 ) ref -> ebx class-hnd <System.Net.EndPoint>
+; V03 loc0 [V03,T06] ( 12, 2 ) ref -> ebx class-hnd <System.Net.EndPoint>
;* V04 loc1 [V04 ] ( 0, 0 ) int -> zero-ref ;* V05 loc2 [V05 ] ( 0, 0 ) ubyte -> zero-ref ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> ;* V07 tmp0 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V08 tmp1 [V08,T12] ( 3, 0 ) ref -> [ebp-0x2C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.SocketAddress> -; V09 tmp2 [V09,T19] ( 2, 0 ) ref -> esi class-hnd exact single-def "non-inline candidate call" <System.String> -; V10 tmp3 [V10,T13] ( 3, 0 ) ref -> [ebp-0x30] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> -; V11 tmp4 [V11,T14] ( 3, 0 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> -; V12 tmp5 [V12,T15] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V13 tmp6 [V13,T16] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V14 tmp7 [V14,T17] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V08 tmp1 [V08,T13] ( 3, 0 ) ref -> [ebp-0x2C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.SocketAddress> +; V09 tmp2 [V09,T20] ( 2, 0 ) ref -> esi class-hnd exact single-def "non-inline candidate call" <System.String> +; V10 tmp3 [V10,T14] ( 3, 0 ) ref -> [ebp-0x30] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> +; V11 tmp4 [V11,T15] ( 3, 0 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> +; V12 tmp5 [V12,T16] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V13 tmp6 [V13,T17] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V14 tmp7 [V14,T18] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V16 tmp9 [V16,T18] ( 3, 0 ) int -> [ebp-0x24] spill-single-def "Inlining Arg" -; V17 tmp10 [V17,T07] ( 3, 2 ) int -> eax "Inline stloc first use temp"
+; V16 tmp9 [V16,T19] ( 3, 0 ) int -> [ebp-0x24] spill-single-def "Inlining Arg" +; V17 tmp10 [V17,T08] ( 3, 2 ) int -> eax "Inline stloc first use temp"
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V19 tmp12 [V19,T08] ( 3, 2 ) int -> eax "Inline return value spill temp"
+; V19 tmp12 [V19,T09] ( 3, 2 ) int -> eax "Inline return value spill temp"
; V20 tmp13 [V20,T04] ( 3, 4 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.Net.Sockets.SafeSocketHandle> ;* V21 tmp14 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V22 tmp15 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.SocketAddress> @@ -38,26 +38,27 @@ ;* V26 tmp19 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ;* V27 tmp20 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ; V28 tmp21 [V28,T02] ( 4, 8 ) int -> ecx "Inlining Arg"
-; V29 tmp22 [V29,T09] ( 3, 2 ) int -> edi "Inline stloc first use temp"
+; V29 tmp22 [V29,T10] ( 3, 2 ) int -> edi "Inline stloc first use temp"
;* V30 tmp23 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.SocketAddress>
-; V31 tmp24 [V31,T11] ( 1, 1 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP
+; V31 tmp24 [V31,T12] ( 1, 1 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP
;* V32 tmp25 [V32 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP ;* V33 tmp26 [V33 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP
-; V34 tmp27 [V34,T06] ( 3, 2 ) byref -> edx "field V25._reference (fldOffset=0x0)" P-INDEP -; V35 tmp28 [V35,T10] ( 3, 2 ) int -> ecx "field V25._length (fldOffset=0x4)" P-INDEP
+; V34 tmp27 [V34,T07] ( 3, 2 ) byref -> edx "field V25._reference (fldOffset=0x0)" P-INDEP +; V35 tmp28 [V35,T11] ( 3, 2 ) int -> ecx "field V25._length (fldOffset=0x4)" P-INDEP
;* V36 tmp29 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP ;* V37 tmp30 [V37 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x4)" P-INDEP ;* V38 tmp31 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp32 [V39 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x4)" P-INDEP
-; V40 tmp33 [V40,T27] ( 2, 0 ) int -> edx "argument with side effect" -; V41 tmp34 [V41,T20] ( 2, 0 ) ref -> esi single-def "argument with side effect" -; V42 tmp35 [V42,T21] ( 2, 0 ) ref -> edi single-def "argument with side effect" -; V43 tmp36 [V43,T22] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V44 tmp37 [V44,T23] ( 2, 0 ) ref -> esi single-def "argument with side effect" -; V45 tmp38 [V45,T24] ( 2, 0 ) ref -> edi single-def "argument with side effect" -; V46 tmp39 [V46,T25] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V47 tmp40 [V47,T26] ( 2, 0 ) ref -> esi single-def "argument with side effect" -; V48 EHSlots [V48 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"
+; V40 tmp33 [V40,T28] ( 2, 0 ) int -> edx "argument with side effect" +; V41 tmp34 [V41,T05] ( 2, 2 ) ref -> edx single-def "Field obj" +; V42 tmp35 [V42,T21] ( 2, 0 ) ref -> esi single-def "argument with side effect" +; V43 tmp36 [V43,T22] ( 2, 0 ) ref -> edi single-def "argument with side effect" +; V44 tmp37 [V44,T23] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V45 tmp38 [V45,T24] ( 2, 0 ) ref -> esi single-def "argument with side effect" +; V46 tmp39 [V46,T25] ( 2, 0 ) ref -> edi single-def "argument with side effect" +; V47 tmp40 [V47,T26] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V48 tmp41 [V48,T27] ( 2, 0 ) ref -> esi single-def "argument with side effect" +; V49 EHSlots [V49 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"
; ; Lcl frame size = 40 @@ -109,10 +110,10 @@ G_M11429_IG03: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= jne G_M11429_IG25 mov edx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[edx]
- movsx edx, byte ptr [edx+0x59] - ; gcrRegs -[edx] - ;; size=71 bbWeight=1 PerfScore 34.25
+ cmp byte ptr [edx], dl + ;; size=69 bbWeight=1 PerfScore 33.25
G_M11429_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[edx]
mov edx, gword ptr [esi+0x60] ; gcrRegs +[edx] lea edx, bword ptr [edx+0x04] @@ -475,7 +476,7 @@ G_M11429_IG25: ; bbWeight=0, gcVars=00000001 {V01}, gcrefRegs=000000C0 {e jmp G_M11429_IG04 ;; size=19 bbWeight=0 PerfScore 0.00
-; Total bytes of code 808, prolog size 14, PerfScore 99.75, instruction count 233, allocated bytes for code 808 (MethodHash=8b1ad35a) for method System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
+; Total bytes of code 806, prolog size 14, PerfScore 98.75, instruction count 233, allocated bytes for code 806 (MethodHash=8b1ad35a) for method System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
; ============================================================ *************** EH table for System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this

-2 (-0.22%) : 116678.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)

@@ -13,21 +13,21 @@ ; V01 arg1 [V01,T00] ( 18, 14 ) ref -> [ebp-0x30] class-hnd EH-live single-def <System.Net.Sockets.SocketAsyncEventArgs> ;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Threading.CancellationToken> ; V03 loc0 [V03,T04] ( 11, 6 ) ref -> edi ld-addr-op class-hnd <System.Net.EndPoint>
-; V04 loc1 [V04,T23] ( 3, 0 ) ref -> [ebp-0x34] class-hnd EH-live single-def <System.Net.EndPoint>
+; V04 loc1 [V04,T24] ( 3, 0 ) ref -> [ebp-0x34] class-hnd EH-live single-def <System.Net.EndPoint>
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref ;* V06 tmp0 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V07 tmp1 [V07,T24] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V07 tmp1 [V07,T25] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V08 tmp2 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V09 tmp3 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Net.SocketAddress> ; V10 tmp4 [V10,T12] ( 4, 3 ) ref -> ebx class-hnd single-def "Inline stloc first use temp" <System.Net.IPEndPoint>
-; V11 tmp5 [V11,T25] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V12 tmp6 [V12,T14] ( 5, 2 ) ref -> [ebp-0x38] class-hnd "Inline stloc first use temp" <System.Net.IPAddress> -; V13 tmp7 [V13,T26] ( 3, 0 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.IPEndPoint> -; V14 tmp8 [V14,T15] ( 3, 2 ) ref -> ebx "guarded devirt return temp"
+; V11 tmp5 [V11,T26] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V12 tmp6 [V12,T15] ( 5, 2 ) ref -> [ebp-0x38] class-hnd "Inline stloc first use temp" <System.Net.IPAddress> +; V13 tmp7 [V13,T27] ( 3, 0 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.IPEndPoint> +; V14 tmp8 [V14,T16] ( 3, 2 ) ref -> ebx "guarded devirt return temp"
;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp" ;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Net.IPEndPoint>
-;* V17 tmp11 [V17,T20] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V18 tmp12 [V18,T19] ( 2, 0 ) ubyte -> eax "Inline return value spill temp"
+;* V17 tmp11 [V17,T21] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V18 tmp12 [V18,T20] ( 2, 0 ) ubyte -> eax "Inline return value spill temp"
; V19 tmp13 [V19,T08] ( 2, 4 ) ref -> ebx class-hnd single-def "impAppendStmt" <System.Net.IPAddress> ; V20 tmp14 [V20,T02] ( 4, 8 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.SocketAddress> ; V21 tmp15 [V21,T07] ( 3, 4 ) int -> [ebp-0x24] spill-single-def "Inlining Arg" @@ -43,18 +43,18 @@ ;* V31 tmp25 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V32 tmp26 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp27 [V33 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V34 tmp28 [V34,T17] ( 3, 2 ) ushort -> eax ld-addr-op "Inline stloc first use temp"
+; V34 tmp28 [V34,T18] ( 3, 2 ) ushort -> eax ld-addr-op "Inline stloc first use temp"
;* V35 tmp29 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V36 tmp30 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V37 tmp31 [V37,T18] ( 3, 2 ) int -> eax "Inline stloc first use temp"
+; V37 tmp31 [V37,T19] ( 3, 2 ) int -> eax "Inline stloc first use temp"
;* V38 tmp32 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ; V39 tmp33 [V39,T10] ( 6, 3 ) int -> ebx "Inline return value spill temp" ; V40 tmp34 [V40,T06] ( 3, 4 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Net.Sockets.SafeSocketHandle>
-;* V41 tmp35 [V41,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V42 tmp36 [V42,T22] ( 1, 1 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP
+;* V41 tmp35 [V41,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V42 tmp36 [V42,T23] ( 1, 1 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP
;* V43 tmp37 [V43 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP ;* V44 tmp38 [V44 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP
-; V45 tmp39 [V45,T16] ( 3, 2 ) byref -> ecx "field V24._reference (fldOffset=0x0)" P-INDEP
+; V45 tmp39 [V45,T17] ( 3, 2 ) byref -> ecx "field V24._reference (fldOffset=0x0)" P-INDEP
; V46 tmp40 [V46,T11] ( 5, 3 ) int -> eax "field V24._length (fldOffset=0x4)" P-INDEP ;* V47 tmp41 [V47 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP ;* V48 tmp42 [V48 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x4)" P-INDEP @@ -66,14 +66,15 @@ ;* V54 tmp48 [V54 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x4)" P-INDEP ;* V55 tmp49 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP ;* V56 tmp50 [V56 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x4)" P-INDEP
-; V57 tmp51 [V57,T27] ( 2, 0 ) ref -> edi single-def "argument with side effect" -; V58 tmp52 [V58,T28] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V59 tmp53 [V59,T29] ( 2, 0 ) ref -> edi single-def "argument with side effect" -; V60 tmp54 [V60,T30] ( 2, 0 ) ref -> esi single-def "argument with side effect" -; V61 tmp55 [V61,T31] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V62 tmp56 [V62,T32] ( 2, 0 ) ref -> ebx single-def "argument with side effect" -; V63 EHSlots [V63 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar" -; V64 cse0 [V64,T13] ( 3, 3 ) ref -> edx "CSE - conservative"
+; V57 tmp51 [V57,T28] ( 2, 0 ) ref -> edi single-def "argument with side effect" +; V58 tmp52 [V58,T29] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V59 tmp53 [V59,T30] ( 2, 0 ) ref -> edi single-def "argument with side effect" +; V60 tmp54 [V60,T13] ( 2, 2 ) ref -> edx single-def "Field obj" +; V61 tmp55 [V61,T31] ( 2, 0 ) ref -> esi single-def "argument with side effect" +; V62 tmp56 [V62,T32] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V63 tmp57 [V63,T33] ( 2, 0 ) ref -> ebx single-def "argument with side effect" +; V64 EHSlots [V64 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar" +; V65 cse0 [V65,T14] ( 3, 3 ) ref -> edx "CSE - conservative"
; ; Lcl frame size = 56 @@ -207,10 +208,10 @@ G_M38239_IG07: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 jne G_M38239_IG26 mov edx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[edx]
- movsx edx, byte ptr [edx+0x59] - ; gcrRegs -[edx] - ;; size=66 bbWeight=1 PerfScore 33.75
+ cmp byte ptr [edx], dl + ;; size=64 bbWeight=1 PerfScore 32.75
G_M38239_IG08: ; bbWeight=1, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[edx]
mov edx, gword ptr [esi+0x60] ; gcrRegs +[edx] lea edx, bword ptr [edx+0x04] @@ -225,7 +226,7 @@ G_M38239_IG08: ; bbWeight=1, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs= test edx, edx je G_M38239_IG27 ;; size=25 bbWeight=1 PerfScore 7.75
-G_M38239_IG09: ; bbWeight=1, gcVars=0000000000800003 {V00 V01 V04}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M38239_IG09: ; bbWeight=1, gcVars=0000000001000003 {V00 V01 V04}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[edx edi] mov edx, gword ptr [ecx+0x04] ; gcrRegs +[edx] @@ -269,13 +270,13 @@ G_M38239_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call CORINFO_HELP_RETHROW int3 ;; size=34 bbWeight=0 PerfScore 0.00
-G_M38239_IG12: ; bbWeight=1, gcVars=0000000000800002 {V00 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars +{V00 V01 V04 V23}
+G_M38239_IG12: ; bbWeight=1, gcVars=0000000001000002 {V00 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; GC ptr vars +{V00 V01 V04}
test ebx, ebx jne G_M38239_IG28 ;; size=8 bbWeight=1 PerfScore 1.25 G_M38239_IG13: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars -{V00 V01 V04 V23}
+ ; GC ptr vars -{V00 V01 V04}
xor eax, eax cmp ebx, 997 sete al @@ -343,9 +344,9 @@ G_M38239_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call CORINFO_HELP_THROW ; gcrRegs -[ecx edi] ;; size=80 bbWeight=0 PerfScore 0.00
-G_M38239_IG18: ; bbWeight=0, gcVars=0000000000004003 {V00 V01 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M38239_IG18: ; bbWeight=0, gcVars=0000000000008003 {V00 V01 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ebx esi edi]
- ; GC ptr vars +{V00 V01 V12 V14}
+ ; GC ptr vars +{V00 V01 V12}
mov ecx, gword ptr [ebp-0x2C] ; gcrRegs +[ecx] call [System.Net.Sockets.Socket:get_DualMode():ubyte:this] @@ -356,7 +357,7 @@ G_M38239_IG18: ; bbWeight=0, gcVars=0000000000004003 {V00 V01 V12}, gcref ; gcrRegs +[eax] mov ecx, eax ; gcrRegs +[ecx]
- ; GC ptr vars -{V12 V14}
+ ; GC ptr vars -{V12}
call [System.Net.IPAddress:MapToIPv6():System.Net.IPAddress:this] ; gcrRegs -[ecx edi] mov edi, eax @@ -500,8 +501,8 @@ G_M38239_IG26: ; bbWeight=0, gcVars=0000000000000003 {V00 V01}, gcrefRegs ; gcrRegs +[ecx] jmp G_M38239_IG08 ;; size=22 bbWeight=0 PerfScore 0.00
-G_M38239_IG27: ; bbWeight=0, gcVars=0000000000800003 {V00 V01 V04}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars +{V04 V23}
+G_M38239_IG27: ; bbWeight=0, gcVars=0000000001000003 {V00 V01 V04}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; GC ptr vars +{V04}
lea edx, bword ptr [ecx+0x08] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EDI @@ -511,9 +512,9 @@ G_M38239_IG27: ; bbWeight=0, gcVars=0000000000800003 {V00 V01 V04}, gcref ; gcrRegs +[ecx] jmp G_M38239_IG09 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M38239_IG28: ; bbWeight=0, gcVars=0000000000800002 {V00 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M38239_IG28: ; bbWeight=0, gcVars=0000000001000002 {V00 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx esi]
- ; GC ptr vars -{V00 V01 V23}
+ ; GC ptr vars -{V00 V01}
cmp ebx, 997 je G_M38239_IG13 push 1 @@ -538,7 +539,7 @@ G_M38239_IG28: ; bbWeight=0, gcVars=0000000000800002 {V00 V04}, gcrefRegs jmp G_M38239_IG13 ;; size=49 bbWeight=0 PerfScore 0.00
-; Total bytes of code 893, prolog size 14, PerfScore 131.25, instruction count 246, allocated bytes for code 893 (MethodHash=86656aa0) for method System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
+; Total bytes of code 891, prolog size 14, PerfScore 130.25, instruction count 246, allocated bytes for code 891 (MethodHash=86656aa0) for method System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
; ============================================================ *************** EH table for System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this

-10 (-0.08%) : 47541.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)

@@ -9,18 +9,18 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] (145,450.50) ref -> ebx class-hnd single-def <System.IO.TextWriter>
-; V01 arg1 [V01,T198] ( 7, 5 ) ref -> [ebp-0x2A0] class-hnd single-def <MicroBenchmarks.Serializers.CollectionsOfPrimitives>
+; V01 arg1 [V01,T198] ( 7, 5 ) ref -> [ebp-0x29C] class-hnd single-def <MicroBenchmarks.Serializers.CollectionsOfPrimitives>
;* V02 arg2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
-; V03 loc0 [V03,T02] (133,212 ) ref -> [ebp-0x2A4] class-hnd exact spill-single-def <ushort[]> -; V04 loc1 [V04,T154] ( 7, 10.50) ref -> [ebp-0x2A8] class-hnd spill-single-def <ubyte[]>
+; V03 loc0 [V03,T02] (133,212 ) ref -> [ebp-0x2A0] class-hnd exact spill-single-def <ushort[]> +; V04 loc1 [V04,T154] ( 7, 10.50) ref -> [ebp-0x2A4] class-hnd spill-single-def <ubyte[]>
; V05 loc2 [V05,T17] ( 10, 29.50) int -> [ebp-0x10] ; V06 loc3 [V06,T13] ( 13, 41.50) int -> [ebp-0x14]
-; V07 loc4 [V07,T155] ( 7, 10.50) ref -> [ebp-0x2AC] class-hnd exact spill-single-def <System.DateTime[]>
+; V07 loc4 [V07,T155] ( 7, 10.50) ref -> [ebp-0x2A8] class-hnd exact spill-single-def <System.DateTime[]>
;* V08 loc5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.DateTime>
-; V09 loc6 [V09,T314] ( 4, 2 ) ref -> [ebp-0x2B0] class-hnd spill-single-def <System.Collections.Generic.Dictionary`2[int,System.String]>
+; V09 loc6 [V09,T314] ( 4, 2 ) ref -> [ebp-0x2AC] class-hnd spill-single-def <System.Collections.Generic.Dictionary`2[int,System.String]>
; V10 loc7 [V10 ] ( 11, 16 ) struct (24) [ebp-0x2C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[int,System.String]> ;* V11 loc8 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Generic.KeyValuePair`2[int,System.String]>
-; V12 loc9 [V12,T200] ( 6, 6.50) ref -> [ebp-0x2B4] class-hnd spill-single-def <System.Collections.Generic.List`1[int]>
+; V12 loc9 [V12,T200] ( 6, 6.50) ref -> [ebp-0x2B0] class-hnd spill-single-def <System.Collections.Generic.List`1[int]>
; V13 tmp0 [V13,T18] ( 5, 28 ) int -> [ebp-0x30] spill-single-def "impAppendStmt" ;* V14 tmp1 [V14 ] ( 0, 0 ) ref -> zero-ref single-def ; V15 tmp2 [V15 ] ( 3, 3 ) struct ( 8) [ebp-0x38] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <System.DateTime> @@ -107,7 +107,7 @@ ;* V96 tmp83 [V96 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V97 tmp84 [V97 ] ( 4, 12 ) struct ( 8) [ebp-0xA0] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.DateTime> ;* V98 tmp85 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
-; V99 tmp86 [V99,T163] ( 4, 8 ) ref -> [ebp-0x2B8] class-hnd exact spill-single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
+; V99 tmp86 [V99,T163] ( 4, 8 ) ref -> [ebp-0x2B4] class-hnd exact spill-single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
;* V100 tmp87 [V100 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.DateTime> ;* V101 tmp88 [V101 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V102 tmp89 [V102,T202] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -231,7 +231,7 @@ ; V220 tmp207 [V220,T194] ( 2, 8 ) int -> edx "Strict ordering of exceptions for Array store" ; V221 tmp208 [V221,T195] ( 2, 8 ) int -> edx "Strict ordering of exceptions for Array store" ; V222 tmp209 [V222,T15] ( 18, 34 ) long -> [ebp-0x154] do-not-enreg[F] "field V08._dateData (fldOffset=0x0)" P-INDEP
-; V223 tmp210 [V223,T44] ( 10, 22.50) ref -> [ebp-0x2BC] "field V11.value (fldOffset=0x0)" P-INDEP
+; V223 tmp210 [V223,T44] ( 10, 22.50) ref -> [ebp-0x2B8] "field V11.value (fldOffset=0x0)" P-INDEP
; V224 tmp211 [V224,T52] ( 10, 16.50) int -> [ebp-0x158] "field V11.key (fldOffset=0x4)" P-INDEP ; V225 tmp212 [V225,T321] ( 3, 2 ) long -> [ebp-0x38] do-not-enreg[H] hidden-struct-arg "field V15._dateData (fldOffset=0x0)" P-DEP ; V226 tmp213 [V226,T61] ( 5, 16 ) long -> [ebp-0x160] do-not-enreg[F] "field V16._dateData (fldOffset=0x0)" P-INDEP @@ -245,7 +245,7 @@ ; V234 tmp221 [V234,T359] ( 3, 1.50) long -> [ebp-0x178] do-not-enreg[F] single-def "field V70._dateData (fldOffset=0x0)" P-INDEP ;* V235 tmp222 [V235 ] ( 0, 0 ) long -> zero-ref single-def "field V71._ticks (fldOffset=0x0)" P-INDEP ;* V236 tmp223 [V236 ] ( 0, 0 ) long -> zero-ref "field V77._dateData (fldOffset=0x0)" P-INDEP
-; V237 tmp224 [V237,T315] ( 4, 2 ) byref -> [ebp-0x2C0] "field V78._reference (fldOffset=0x0)" P-INDEP
+; V237 tmp224 [V237,T315] ( 4, 2 ) byref -> [ebp-0x2BC] "field V78._reference (fldOffset=0x0)" P-INDEP
;* V238 tmp225 [V238,T386] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x4)" P-INDEP ;* V239 tmp226 [V239 ] ( 0, 0 ) byref -> zero-ref single-def "field V79._reference (fldOffset=0x0)" P-INDEP ;* V240 tmp227 [V240 ] ( 0, 0 ) int -> zero-ref single-def "field V79._length (fldOffset=0x4)" P-INDEP @@ -268,7 +268,7 @@ ; V257 tmp244 [V257,T112] ( 3, 12 ) long -> [ebp-0x198] do-not-enreg[F] "field V119._dateData (fldOffset=0x0)" P-INDEP ;* V258 tmp245 [V258 ] ( 0, 0 ) long -> zero-ref "field V120._ticks (fldOffset=0x0)" P-INDEP ;* V259 tmp246 [V259 ] ( 0, 0 ) long -> zero-ref "field V126._dateData (fldOffset=0x0)" P-INDEP
-; V260 tmp247 [V260,T75] ( 4, 12 ) byref -> [ebp-0x2C4] "field V127._reference (fldOffset=0x0)" P-INDEP
+; V260 tmp247 [V260,T75] ( 4, 12 ) byref -> [ebp-0x2C0] "field V127._reference (fldOffset=0x0)" P-INDEP
;* V261 tmp248 [V261,T226] ( 0, 0 ) int -> zero-ref "field V127._length (fldOffset=0x4)" P-INDEP ;* V262 tmp249 [V262 ] ( 0, 0 ) byref -> zero-ref "field V128._reference (fldOffset=0x0)" P-INDEP ;* V263 tmp250 [V263 ] ( 0, 0 ) int -> zero-ref "field V128._length (fldOffset=0x4)" P-INDEP @@ -297,31 +297,31 @@ ; V286 tmp273 [V286,T113] ( 3, 12 ) int -> [ebp-0x1AC] spill-single-def "fgMakeTemp is creating a new local variable" ; V287 tmp274 [V287,T114] ( 3, 12 ) int -> [ebp-0x1B0] spill-single-def "fgMakeTemp is creating a new local variable" ; V288 tmp275 [V288,T76] ( 3, 12 ) ref -> edx "arr expr"
-; V289 tmp276 [V289,T77] ( 3, 12 ) ref -> [ebp-0x2C8] spill-single-def "arr expr" -; V290 tmp277 [V290,T78] ( 3, 12 ) ref -> [ebp-0x2CC] spill-single-def "arr expr"
+; V289 tmp276 [V289,T77] ( 3, 12 ) ref -> [ebp-0x2C4] spill-single-def "arr expr" +; V290 tmp277 [V290,T78] ( 3, 12 ) ref -> [ebp-0x2C8] spill-single-def "arr expr"
; V291 tmp278 [V291,T79] ( 3, 12 ) ref -> eax "arr expr"
-; V292 tmp279 [V292,T80] ( 3, 12 ) ref -> [ebp-0x2D0] spill-single-def "arr expr" -; V293 tmp280 [V293,T81] ( 3, 12 ) ref -> [ebp-0x2D4] spill-single-def "arr expr"
+; V292 tmp279 [V292,T80] ( 3, 12 ) ref -> [ebp-0x2CC] spill-single-def "arr expr" +; V293 tmp280 [V293,T81] ( 3, 12 ) ref -> [ebp-0x2D0] spill-single-def "arr expr"
; V294 tmp281 [V294,T82] ( 3, 12 ) ref -> edx "arr expr" ; V295 tmp282 [V295,T83] ( 3, 12 ) ref -> edx "arr expr" ; V296 tmp283 [V296,T84] ( 3, 12 ) ref -> edx "arr expr"
-; V297 tmp284 [V297,T241] ( 3, 3 ) ref -> [ebp-0x2D8] spill-single-def "arr expr"
+; V297 tmp284 [V297,T241] ( 3, 3 ) ref -> [ebp-0x2D4] spill-single-def "arr expr"
; V298 tmp285 [V298,T242] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V299 tmp286 [V299,T243] ( 3, 3 ) ref -> [ebp-0x2DC] spill-single-def "arr expr"
+; V299 tmp286 [V299,T243] ( 3, 3 ) ref -> [ebp-0x2D8] spill-single-def "arr expr"
; V300 tmp287 [V300,T244] ( 3, 3 ) byref -> ecx single-def "BlockOp address local"
-; V301 tmp288 [V301,T245] ( 3, 3 ) ref -> [ebp-0x2E0] spill-single-def "arr expr"
+; V301 tmp288 [V301,T245] ( 3, 3 ) ref -> [ebp-0x2DC] spill-single-def "arr expr"
; V302 tmp289 [V302,T285] ( 3, 3 ) int -> eax "index expr" ; V303 tmp290 [V303,T246] ( 3, 3 ) byref -> ecx single-def "BlockOp address local"
-; V304 tmp291 [V304,T247] ( 3, 3 ) ref -> [ebp-0x2E4] spill-single-def "arr expr"
+; V304 tmp291 [V304,T247] ( 3, 3 ) ref -> [ebp-0x2E0] spill-single-def "arr expr"
; V305 tmp292 [V305,T286] ( 3, 3 ) int -> eax "index expr" ; V306 tmp293 [V306,T248] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V307 tmp294 [V307,T249] ( 3, 3 ) ref -> [ebp-0x2E8] spill-single-def "arr expr"
+; V307 tmp294 [V307,T249] ( 3, 3 ) ref -> [ebp-0x2E4] spill-single-def "arr expr"
; V308 tmp295 [V308,T287] ( 3, 3 ) int -> ecx "index expr" ; V309 tmp296 [V309,T250] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V310 tmp297 [V310,T251] ( 3, 3 ) ref -> [ebp-0x2EC] spill-single-def "arr expr"
+; V310 tmp297 [V310,T251] ( 3, 3 ) ref -> [ebp-0x2E8] spill-single-def "arr expr"
; V311 tmp298 [V311,T288] ( 3, 3 ) int -> edx "index expr" ; V312 tmp299 [V312,T252] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V313 tmp300 [V313,T253] ( 3, 3 ) ref -> [ebp-0x2F0] spill-single-def "arr expr"
+; V313 tmp300 [V313,T253] ( 3, 3 ) ref -> [ebp-0x2EC] spill-single-def "arr expr"
; V314 tmp301 [V314,T289] ( 3, 3 ) int -> edx "index expr" ; V315 tmp302 [V315,T254] ( 3, 3 ) byref -> ecx single-def "BlockOp address local" ; V316 tmp303 [V316,T255] ( 3, 3 ) ref -> edx single-def "arr expr" @@ -330,23 +330,23 @@ ; V319 tmp306 [V319,T258] ( 3, 3 ) byref -> eax single-def "BlockOp address local" ; V320 tmp307 [V320,T259] ( 3, 3 ) ref -> ecx single-def "arr expr" ; V321 tmp308 [V321,T260] ( 3, 3 ) byref -> ecx single-def "BlockOp address local"
-; V322 tmp309 [V322,T21] ( 3, 24 ) ref -> [ebp-0x2F4] spill-single-def "arr expr"
+; V322 tmp309 [V322,T21] ( 3, 24 ) ref -> [ebp-0x2F0] spill-single-def "arr expr"
; V323 tmp310 [V323,T22] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V324 tmp311 [V324,T23] ( 3, 24 ) ref -> [ebp-0x2F8] spill-single-def "arr expr"
+; V324 tmp311 [V324,T23] ( 3, 24 ) ref -> [ebp-0x2F4] spill-single-def "arr expr"
; V325 tmp312 [V325,T24] ( 3, 24 ) byref -> ecx "BlockOp address local"
-; V326 tmp313 [V326,T25] ( 3, 24 ) ref -> [ebp-0x2FC] spill-single-def "arr expr"
+; V326 tmp313 [V326,T25] ( 3, 24 ) ref -> [ebp-0x2F8] spill-single-def "arr expr"
; V327 tmp314 [V327,T39] ( 3, 24 ) int -> eax "index expr" ; V328 tmp315 [V328,T26] ( 3, 24 ) byref -> ecx "BlockOp address local"
-; V329 tmp316 [V329,T27] ( 3, 24 ) ref -> [ebp-0x300] spill-single-def "arr expr"
+; V329 tmp316 [V329,T27] ( 3, 24 ) ref -> [ebp-0x2FC] spill-single-def "arr expr"
; V330 tmp317 [V330,T40] ( 3, 24 ) int -> eax "index expr" ; V331 tmp318 [V331,T28] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V332 tmp319 [V332,T29] ( 3, 24 ) ref -> [ebp-0x304] spill-single-def "arr expr"
+; V332 tmp319 [V332,T29] ( 3, 24 ) ref -> [ebp-0x300] spill-single-def "arr expr"
; V333 tmp320 [V333,T41] ( 3, 24 ) int -> ecx "index expr" ; V334 tmp321 [V334,T30] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V335 tmp322 [V335,T31] ( 3, 24 ) ref -> [ebp-0x308] spill-single-def "arr expr"
+; V335 tmp322 [V335,T31] ( 3, 24 ) ref -> [ebp-0x304] spill-single-def "arr expr"
; V336 tmp323 [V336,T42] ( 3, 24 ) int -> edx "index expr" ; V337 tmp324 [V337,T32] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V338 tmp325 [V338,T33] ( 3, 24 ) ref -> [ebp-0x30C] spill-single-def "arr expr"
+; V338 tmp325 [V338,T33] ( 3, 24 ) ref -> [ebp-0x308] spill-single-def "arr expr"
; V339 tmp326 [V339,T43] ( 3, 24 ) int -> edx "index expr" ; V340 tmp327 [V340,T34] ( 3, 24 ) byref -> ecx "BlockOp address local" ; V341 tmp328 [V341,T85] ( 3, 12 ) ref -> edx "arr expr" @@ -370,11 +370,11 @@ ; V359 tmp346 [V359,T115] ( 3, 12 ) int -> [ebp-0x1BC] spill-single-def "fgMakeTemp is creating a new local variable" ; V360 tmp347 [V360,T116] ( 3, 12 ) int -> [ebp-0x1C0] spill-single-def "fgMakeTemp is creating a new local variable" ; V361 tmp348 [V361,T91] ( 3, 12 ) ref -> edx "arr expr"
-; V362 tmp349 [V362,T92] ( 3, 12 ) ref -> [ebp-0x310] spill-single-def "arr expr" -; V363 tmp350 [V363,T93] ( 3, 12 ) ref -> [ebp-0x314] spill-single-def "arr expr"
+; V362 tmp349 [V362,T92] ( 3, 12 ) ref -> [ebp-0x30C] spill-single-def "arr expr" +; V363 tmp350 [V363,T93] ( 3, 12 ) ref -> [ebp-0x310] spill-single-def "arr expr"
; V364 tmp351 [V364,T94] ( 3, 12 ) ref -> eax "arr expr"
-; V365 tmp352 [V365,T95] ( 3, 12 ) ref -> [ebp-0x318] spill-single-def "arr expr" -; V366 tmp353 [V366,T96] ( 3, 12 ) ref -> [ebp-0x31C] spill-single-def "arr expr"
+; V365 tmp352 [V365,T95] ( 3, 12 ) ref -> [ebp-0x314] spill-single-def "arr expr" +; V366 tmp353 [V366,T96] ( 3, 12 ) ref -> [ebp-0x318] spill-single-def "arr expr"
; V367 tmp354 [V367,T97] ( 3, 12 ) ref -> ecx "arr expr" ; V368 tmp355 [V368,T98] ( 3, 12 ) ref -> ecx "arr expr" ; V369 tmp356 [V369,T99] ( 3, 12 ) ref -> ecx "arr expr" @@ -393,11 +393,11 @@ ; V382 tmp369 [V382,T117] ( 3, 12 ) int -> [ebp-0x1CC] spill-single-def "fgMakeTemp is creating a new local variable" ; V383 tmp370 [V383,T118] ( 3, 12 ) int -> [ebp-0x1D0] spill-single-def "fgMakeTemp is creating a new local variable" ; V384 tmp371 [V384,T100] ( 3, 12 ) ref -> edx "arr expr"
-; V385 tmp372 [V385,T101] ( 3, 12 ) ref -> [ebp-0x320] spill-single-def "arr expr" -; V386 tmp373 [V386,T102] ( 3, 12 ) ref -> [ebp-0x324] spill-single-def "arr expr"
+; V385 tmp372 [V385,T101] ( 3, 12 ) ref -> [ebp-0x31C] spill-single-def "arr expr" +; V386 tmp373 [V386,T102] ( 3, 12 ) ref -> [ebp-0x320] spill-single-def "arr expr"
; V387 tmp374 [V387,T103] ( 3, 12 ) ref -> edx "arr expr"
-; V388 tmp375 [V388,T104] ( 3, 12 ) ref -> [ebp-0x328] spill-single-def "arr expr" -; V389 tmp376 [V389,T105] ( 3, 12 ) ref -> [ebp-0x32C] spill-single-def "arr expr"
+; V388 tmp375 [V388,T104] ( 3, 12 ) ref -> [ebp-0x324] spill-single-def "arr expr" +; V389 tmp376 [V389,T105] ( 3, 12 ) ref -> [ebp-0x328] spill-single-def "arr expr"
; V390 tmp377 [V390,T106] ( 3, 12 ) ref -> edx "arr expr" ; V391 tmp378 [V391,T107] ( 3, 12 ) ref -> edx "arr expr" ; V392 tmp379 [V392,T108] ( 3, 12 ) ref -> edx "arr expr" @@ -421,76 +421,76 @@ ;* V410 cse17 [V410 ] ( 0, 0 ) long -> zero-ref "CSE - conservative" ; V411 cse18 [V411,T01] (109,396.50) int -> [ebp-0x1E4] multi-def "CSE - aggressive" ; V412 cse19 [V412,T07] ( 38, 54 ) int -> [ebp-0x1E8] multi-def "CSE - moderate"
-; V413 cse20 [V413,T62] ( 4, 16 ) ref -> [ebp-0x330] spill-single-def "CSE - conservative" -; V414 cse21 [V414,T316] ( 4, 2 ) ref -> [ebp-0x334] spill-single-def "CSE - conservative" -; V415 rat0 [V415,T368] ( 3, 1.50) int -> [ebp-0x1EC] spill-single-def "field V51.lo (fldOffset=0x0)" P-INDEP -; V416 rat1 [V416,T369] ( 3, 1.50) int -> eax "field V51.hi (fldOffset=0x4)" P-INDEP -; V417 rat2 [V417,T221] ( 8, 4 ) int -> [ebp-0x1F0] "field V72.lo (fldOffset=0x0)" P-INDEP -; V418 rat3 [V418,T231] ( 7, 3.50) int -> [ebp-0x1F4] "field V72.hi (fldOffset=0x4)" P-INDEP -; V419 rat4 [V419,T213] ( 9, 4.50) int -> [ebp-0x1F8] "field V74.lo (fldOffset=0x0)" P-INDEP -; V420 rat5 [V420,T214] ( 9, 4.50) int -> [ebp-0x1FC] "field V74.hi (fldOffset=0x4)" P-INDEP -; V421 rat6 [V421,T370] ( 2, 1.50) int -> [ebp-0x200] spill-single-def "field V76.lo (fldOffset=0x0)" P-INDEP -; V422 rat7 [V422,T371] ( 2, 1.50) int -> [ebp-0x204] spill-single-def "field V76.hi (fldOffset=0x4)" P-INDEP -; V423 rat8 [V423,T158] ( 3, 10 ) int -> ecx "field V92.lo (fldOffset=0x0)" P-INDEP -; V424 rat9 [V424,T159] ( 3, 10 ) int -> eax "field V92.hi (fldOffset=0x4)" P-INDEP
+; V413 cse20 [V413,T62] ( 4, 16 ) ref -> [ebp-0x32C] spill-single-def "CSE - conservative" +; V414 cse21 [V414,T316] ( 4, 2 ) ref -> [ebp-0x330] spill-single-def "CSE - conservative" +; V415 rat0 [V415,T368] ( 2, 1 ) int -> ecx "field V51.lo (fldOffset=0x0)" P-INDEP +; V416 rat1 [V416,T369] ( 2, 1 ) int -> eax "field V51.hi (fldOffset=0x4)" P-INDEP +; V417 rat2 [V417,T221] ( 8, 4 ) int -> [ebp-0x1EC] "field V72.lo (fldOffset=0x0)" P-INDEP +; V418 rat3 [V418,T231] ( 7, 3.50) int -> [ebp-0x1F0] "field V72.hi (fldOffset=0x4)" P-INDEP +; V419 rat4 [V419,T213] ( 9, 4.50) int -> [ebp-0x1F4] "field V74.lo (fldOffset=0x0)" P-INDEP +; V420 rat5 [V420,T214] ( 9, 4.50) int -> [ebp-0x1F8] "field V74.hi (fldOffset=0x4)" P-INDEP +; V421 rat6 [V421,T370] ( 2, 1.50) int -> [ebp-0x1FC] spill-single-def "field V76.lo (fldOffset=0x0)" P-INDEP +; V422 rat7 [V422,T371] ( 2, 1.50) int -> [ebp-0x200] spill-single-def "field V76.hi (fldOffset=0x4)" P-INDEP +; V423 rat8 [V423,T158] ( 2, 8 ) int -> ecx "field V92.lo (fldOffset=0x0)" P-INDEP +; V424 rat9 [V424,T159] ( 2, 8 ) int -> eax "field V92.hi (fldOffset=0x4)" P-INDEP
; V425 rat10 [V425,T160] ( 3, 10 ) int -> ecx "field V101.lo (fldOffset=0x0)" P-INDEP ; V426 rat11 [V426,T161] ( 3, 10 ) int -> eax "field V101.hi (fldOffset=0x4)" P-INDEP
-; V427 rat12 [V427,T59] ( 8, 16 ) int -> [ebp-0x208] "field V121.lo (fldOffset=0x0)" P-INDEP -; V428 rat13 [V428,T71] ( 7, 14 ) int -> [ebp-0x20C] "field V121.hi (fldOffset=0x4)" P-INDEP -; V429 rat14 [V429,T50] ( 9, 18 ) int -> [ebp-0x210] "field V123.lo (fldOffset=0x0)" P-INDEP -; V430 rat15 [V430,T51] ( 9, 18 ) int -> [ebp-0x214] "field V123.hi (fldOffset=0x4)" P-INDEP -; V431 rat16 [V431,T140] ( 2, 12 ) int -> [ebp-0x218] spill-single-def "field V125.lo (fldOffset=0x0)" P-INDEP -; V432 rat17 [V432,T141] ( 2, 12 ) int -> [ebp-0x21C] spill-single-def "field V125.hi (fldOffset=0x4)" P-INDEP -; V433 rat18 [V433,T64] ( 4, 16 ) int -> [ebp-0x220] spill-single-def "field V409.lo (fldOffset=0x0)" P-INDEP -; V434 rat19 [V434,T65] ( 4, 16 ) int -> [ebp-0x224] spill-single-def "field V409.hi (fldOffset=0x4)" P-INDEP -; V435 rat20 [V435,T319] ( 4, 2 ) int -> [ebp-0x228] spill-single-def "field V410.lo (fldOffset=0x0)" P-INDEP -; V436 rat21 [V436,T320] ( 4, 2 ) int -> [ebp-0x22C] spill-single-def "field V410.hi (fldOffset=0x4)" P-INDEP
+; V427 rat12 [V427,T59] ( 8, 16 ) int -> [ebp-0x204] "field V121.lo (fldOffset=0x0)" P-INDEP +; V428 rat13 [V428,T71] ( 7, 14 ) int -> [ebp-0x208] "field V121.hi (fldOffset=0x4)" P-INDEP +; V429 rat14 [V429,T50] ( 9, 18 ) int -> [ebp-0x20C] "field V123.lo (fldOffset=0x0)" P-INDEP +; V430 rat15 [V430,T51] ( 9, 18 ) int -> [ebp-0x210] "field V123.hi (fldOffset=0x4)" P-INDEP +; V431 rat16 [V431,T140] ( 2, 12 ) int -> [ebp-0x214] spill-single-def "field V125.lo (fldOffset=0x0)" P-INDEP +; V432 rat17 [V432,T141] ( 2, 12 ) int -> [ebp-0x218] spill-single-def "field V125.hi (fldOffset=0x4)" P-INDEP +; V433 rat18 [V433,T64] ( 4, 16 ) int -> [ebp-0x21C] spill-single-def "field V409.lo (fldOffset=0x0)" P-INDEP +; V434 rat19 [V434,T65] ( 4, 16 ) int -> [ebp-0x220] spill-single-def "field V409.hi (fldOffset=0x4)" P-INDEP +; V435 rat20 [V435,T319] ( 4, 2 ) int -> [ebp-0x224] spill-single-def "field V410.lo (fldOffset=0x0)" P-INDEP +; V436 rat21 [V436,T320] ( 4, 2 ) int -> [ebp-0x228] spill-single-def "field V410.hi (fldOffset=0x4)" P-INDEP
; V437 rat22 [V437,T295] ( 3, 3 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ; V438 rat23 [V438,T296] ( 3, 3 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ; V439 rat24 [V439,T122] ( 3, 12 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ; V440 rat25 [V440,T123] ( 3, 12 ) int -> edx "ReplaceWithLclVar is creating a new local variable"
-; V441 rat26 [V441,T279] ( 3, 3 ) byref -> [ebp-0x338] spill-single-def "ReplaceWithLclVar is creating a new local variable" -; V442 rat27 [V442 ] ( 1, 1 ) long -> [ebp-0x234] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V441 rat26 [V441,T279] ( 3, 3 ) byref -> [ebp-0x334] spill-single-def "ReplaceWithLclVar is creating a new local variable" +; V442 rat27 [V442 ] ( 1, 1 ) long -> [ebp-0x230] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V443 rat28 [V443,T322] ( 3, 2 ) int -> ecx "field V442.lo (fldOffset=0x0)" P-INDEP ; V444 rat29 [V444,T388] ( 1, 1 ) int -> edx "field V442.hi (fldOffset=0x4)" P-INDEP
-; V445 rat30 [V445 ] ( 1, 1 ) long -> [ebp-0x23C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V445 rat30 [V445 ] ( 1, 1 ) long -> [ebp-0x238] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V446 rat31 [V446,T372] ( 2, 1.50) int -> eax "field V445.lo (fldOffset=0x0)" P-INDEP ; V447 rat32 [V447,T373] ( 2, 1.50) int -> edx "field V445.hi (fldOffset=0x4)" P-INDEP
-; V448 rat33 [V448 ] ( 1, 1 ) long -> [ebp-0x244] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V448 rat33 [V448 ] ( 1, 1 ) long -> [ebp-0x240] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V449 rat34 [V449,T374] ( 2, 1.50) int -> eax "field V448.lo (fldOffset=0x0)" P-INDEP ; V450 rat35 [V450,T375] ( 2, 1.50) int -> edx "field V448.hi (fldOffset=0x4)" P-INDEP
-; V451 rat36 [V451 ] ( 1, 1 ) long -> [ebp-0x24C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V451 rat36 [V451 ] ( 1, 1 ) long -> [ebp-0x248] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V452 rat37 [V452,T323] ( 3, 2 ) int -> ecx "field V451.lo (fldOffset=0x0)" P-INDEP ; V453 rat38 [V453,T389] ( 1, 1 ) int -> edx "field V451.hi (fldOffset=0x4)" P-INDEP
-; V454 rat39 [V454 ] ( 1, 1 ) long -> [ebp-0x254] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V454 rat39 [V454 ] ( 1, 1 ) long -> [ebp-0x250] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V455 rat40 [V455,T376] ( 2, 1.50) int -> eax "field V454.lo (fldOffset=0x0)" P-INDEP ; V456 rat41 [V456,T377] ( 2, 1.50) int -> edx "field V454.hi (fldOffset=0x4)" P-INDEP
-; V457 rat42 [V457 ] ( 1, 1 ) long -> [ebp-0x25C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V457 rat42 [V457 ] ( 1, 1 ) long -> [ebp-0x258] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V458 rat43 [V458,T378] ( 2, 1.50) int -> eax "field V457.lo (fldOffset=0x0)" P-INDEP ; V459 rat44 [V459,T379] ( 2, 1.50) int -> edx "field V457.hi (fldOffset=0x4)" P-INDEP
-; V460 rat45 [V460 ] ( 1, 1 ) long -> [ebp-0x264] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V460 rat45 [V460 ] ( 1, 1 ) long -> [ebp-0x260] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V461 rat46 [V461,T380] ( 2, 1.50) int -> eax "field V460.lo (fldOffset=0x0)" P-INDEP ...

benchmarks.run_tiered.windows.x86.checked.mch

-14 (-9.21%) : 44520.dasm - System.Collections.IterateForEach`1[System.Canon]:ImmutableStack():System.Canon:this (Tier0-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,T02] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
+; V00 this [V00,T02] ( 3, 3 ) ref -> esi this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
; V01 loc0 [V01,T05] ( 3, 4 ) ref -> edi 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 ( 8) [ebp-0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]> @@ -22,9 +22,9 @@ ; V11 tmp6 [V11 ] ( 2, 3 ) ref -> [ebp-0x10] do-not-enreg[X] addr-exposed "field V03._originalStack (fldOffset=0x0)" P-DEP ; V12 tmp7 [V12 ] ( 9, 29 ) ref -> [ebp-0x0C] do-not-enreg[X] addr-exposed "field V03._remainingStack (fldOffset=0x4)" P-DEP ;* V13 cse0 [V13,T08] ( 0, 0 ) int -> zero-ref hoist "CSE - aggressive"
-; V14 rat0 [V14,T04] ( 2, 4 ) int -> ecx "Spilling to split statement for tree"
+;* V14 rat0 [V14,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V15 rat1 [V15,T06] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V16 rat2 [V16,T03] ( 2, 4 ) int -> ecx "fgMakeTemp is creating a new local variable"
+;* V16 rat2 [V16,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 @@ -49,14 +49,8 @@ G_M64146_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 cmp dword ptr [ecx], ecx call [System.Collections.Immutable.ImmutableStack`1[System.__Canon]:GetEnumerator():System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]:this] ; gcrRegs -[ecx]
- mov ecx, dword ptr [esi] - mov ecx, dword ptr [ecx+0x24] - mov ecx, dword ptr [ecx] - mov ecx, dword ptr [ecx+0x10] - test ecx, ecx - jne SHORT G_M64146_IG04
jmp SHORT G_M64146_IG04
- ;; size=32 bbWeight=1 PerfScore 20.00
+ ;; size=18 bbWeight=1 PerfScore 10.75
G_M64146_IG03: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edi] cmp gword ptr [ebp-0x0C], 0 @@ -129,6 +123,6 @@ G_M64146_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi} int3 ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 152, prolog size 16, PerfScore 147.75, instruction count 56, allocated bytes for code 152 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
+; Total bytes of code 138, prolog size 16, PerfScore 138.50, instruction count 50, allocated bytes for code 138 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
; ============================================================

-14 (-6.57%) : 45444.dasm - System.Collections.IterateForEach`1[System.Canon]:FrozenSet():System.Canon:this (Tier0-FullOpts)

@@ -23,10 +23,10 @@ ; V12 tmp7 [V12,T02] ( 3, 6 ) ref -> ecx single-def "argument with side effect" ; V13 EHSlots [V13 ] ( 1, 1 ) struct (16) [ebp-0x18] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar" ;* V14 cse0 [V14,T10] ( 0, 0 ) int -> zero-ref hoist "CSE - aggressive"
-; V15 cse1 [V15,T09] ( 6, 3.20) int -> ecx multi-def "CSE - aggressive" -; V16 rat0 [V16,T05] ( 2, 4 ) int -> edx "Spilling to split statement for tree"
+; V15 cse1 [V15,T09] ( 5, 2.20) int -> ecx multi-def "CSE - aggressive" +;* V16 rat0 [V16,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V17 rat1 [V17,T08] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V18 rat2 [V18,T03] ( 2, 4 ) int -> edx "fgMakeTemp is creating a new local variable"
+;* V18 rat2 [V18,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; V19 rat3 [V19,T04] ( 3, 5.60) int -> eax "fgMakeTemp is creating a new local variable" ; V20 rat4 [V20,T11] ( 3, 0 ) int -> ecx "Spilling to split statement for tree" ; V21 rat5 [V21,T12] ( 3, 0 ) int -> eax "fgMakeTemp is creating a new local variable" @@ -63,14 +63,8 @@ G_M17622_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs +[ecx] mov ecx, dword ptr [ecx] ; gcrRegs -[ecx]
- mov edx, ecx - mov edx, dword ptr [edx+0x24] - mov edx, dword ptr [edx] - mov edx, dword ptr [edx+0x10] - test edx, edx - jne SHORT G_M17622_IG05
jmp SHORT G_M17622_IG05
- ;; size=21 bbWeight=1 PerfScore 12.50
+ ;; size=7 bbWeight=1 PerfScore 5.00
G_M17622_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[esi] mov edx, dword ptr [ebp-0x1C] @@ -174,7 +168,7 @@ G_M17622_IG18: ; bbWeight=1, epilog, nogc, extend ret ;; size=6 bbWeight=1 PerfScore 2.50
-; Total bytes of code 213, prolog size 27, PerfScore 162.68, instruction count 80, allocated bytes for code 213 (MethodHash=5937bb29) for method System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (Tier0-FullOpts)
+; Total bytes of code 199, prolog size 27, PerfScore 155.18, instruction count 74, allocated bytes for code 199 (MethodHash=5937bb29) for method System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (Tier0-FullOpts)
; ============================================================ *************** EH table for System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this

-6 (-6.12%) : 30155.dasm - System.Collections.Generic.PriorityQueue2[int,int]:MoveUpDefaultComparer(System.ValueTuple2[int,int],int):this (Tier0-FullOpts)

@@ -15,11 +15,11 @@ ; V04 loc1 [V04,T05] ( 4, 16 ) int -> ecx ;* V05 loc2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.ValueTuple`2[int,int]> ;* V06 tmp0 [V06 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V07 tmp1 [V07,T03] ( 3, 20 ) int -> ebx ld-addr-op "Inlining Arg"
+; V07 tmp1 [V07,T03] ( 2, 16 ) int -> ebx ld-addr-op "Inlining Arg"
;* V08 tmp2 [V08 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V09 tmp3 [V09,T08] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V10 tmp4 [V10,T07] ( 2, 8 ) int -> edi "field V05.Item1 (fldOffset=0x0)" P-INDEP
-; V11 tmp5 [V11,T06] ( 4, 14 ) int -> esi "field V05.Item2 (fldOffset=0x4)" P-INDEP
+; V11 tmp5 [V11,T06] ( 3, 12 ) int -> esi "field V05.Item2 (fldOffset=0x4)" P-INDEP
; V12 tmp6 [V12,T01] ( 3, 24 ) byref -> esi "BlockOp address local" ; V13 tmp7 [V13,T02] ( 3, 24 ) byref -> edx "BlockOp address local" ; @@ -37,14 +37,14 @@ G_M9068_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 mov eax, gword ptr [ecx+0x04] ; gcrRegs +[eax] test edx, edx
- jle SHORT G_M9068_IG06
+ jle SHORT G_M9068_IG04
;; size=7 bbWeight=1 PerfScore 3.25 G_M9068_IG03: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[ecx] lea ecx, [edx-0x01] sar ecx, 2 cmp ecx, dword ptr [eax+0x04]
- jae SHORT G_M9068_IG08
+ jae SHORT G_M9068_IG06
lea esi, bword ptr [eax+8*ecx+0x08] ; byrRegs +[esi] mov edi, dword ptr [esi] @@ -52,16 +52,9 @@ G_M9068_IG03: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 ; byrRegs -[esi] mov ebx, dword ptr [ebp+0x0C] cmp ebx, esi
- jl SHORT G_M9068_IG05 - ;; size=27 bbWeight=4 PerfScore 49.00 -G_M9068_IG04: ; bbWeight=2, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - cmp ebx, esi - jle SHORT G_M9068_IG06 - jmp SHORT G_M9068_IG06 - ;; size=6 bbWeight=2 PerfScore 6.50 -G_M9068_IG05: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+ jge SHORT G_M9068_IG04
cmp edx, dword ptr [eax+0x04]
- jae SHORT G_M9068_IG08
+ jae SHORT G_M9068_IG06
lea edx, bword ptr [eax+8*edx+0x08] ; byrRegs +[edx] mov dword ptr [edx], edi @@ -70,28 +63,28 @@ G_M9068_IG05: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 ; byrRegs -[edx] test edx, edx jg SHORT G_M9068_IG03
- ;; size=20 bbWeight=4 PerfScore 34.00 -G_M9068_IG06: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+ ;; size=47 bbWeight=4 PerfScore 83.00 +G_M9068_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
cmp edx, dword ptr [eax+0x04]
- jae SHORT G_M9068_IG08
+ jae SHORT G_M9068_IG06
mov ecx, dword ptr [ebp+0x08] mov dword ptr [eax+8*edx+0x08], ecx mov ecx, dword ptr [ebp+0x0C] mov dword ptr [eax+8*edx+0x0C], ecx ;; size=19 bbWeight=1 PerfScore 8.00
-G_M9068_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M9068_IG05: ; bbWeight=1, epilog, nogc, extend
pop ebx pop esi pop edi pop ebp ret 8 ;; size=7 bbWeight=1 PerfScore 4.00
-G_M9068_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M9068_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 98, prolog size 6, PerfScore 109.00, instruction count 42, allocated bytes for code 98 (MethodHash=d4dadc93) for method System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (Tier0-FullOpts)
+; Total bytes of code 92, prolog size 6, PerfScore 102.50, instruction count 39, allocated bytes for code 92 (MethodHash=d4dadc93) for method System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (Tier0-FullOpts)
; ============================================================

-2 (-0.28%) : 23969.dasm - System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)

@@ -17,12 +17,12 @@ ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> ;* V07 tmp0 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> ; V08 tmp1 [V08,T04] ( 3, 3 ) ref -> [ebp-0x30] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.SocketAddress>
-; V09 tmp2 [V09,T17] ( 2, 0 ) ref -> esi class-hnd exact single-def "non-inline candidate call" <System.String> -; V10 tmp3 [V10,T12] ( 3, 0 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> -; V11 tmp4 [V11,T13] ( 3, 0 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> -; V12 tmp5 [V12,T14] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V13 tmp6 [V13,T15] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V14 tmp7 [V14,T16] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V09 tmp2 [V09,T18] ( 2, 0 ) ref -> esi class-hnd exact single-def "non-inline candidate call" <System.String> +; V10 tmp3 [V10,T13] ( 3, 0 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> +; V11 tmp4 [V11,T14] ( 3, 0 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> +; V12 tmp5 [V12,T15] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V13 tmp6 [V13,T16] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V14 tmp7 [V14,T17] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V16 tmp9 [V16,T09] ( 2, 1 ) ubyte -> eax "Inline return value spill temp" ; V17 tmp10 [V17,T05] ( 3, 3 ) int -> eax "Inlining Arg" @@ -31,16 +31,17 @@ ;* V20 tmp13 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ; V21 tmp14 [V21,T07] ( 3, 2.50) int -> eax "Inline return value spill temp" ; V22 tmp15 [V22,T03] ( 3, 5 ) ref -> edi class-hnd exact single-def "Inlining Arg" <System.Net.Sockets.SafeSocketHandle>
-; V23 tmp16 [V23,T11] ( 1, 1 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP -; V24 tmp17 [V24,T18] ( 2, 0 ) ref -> esi single-def "argument with side effect" -; V25 tmp18 [V25,T19] ( 2, 0 ) ref -> edi single-def "argument with side effect" -; V26 tmp19 [V26,T20] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V27 tmp20 [V27,T21] ( 2, 0 ) ref -> edi single-def "argument with side effect"
+; V23 tmp16 [V23,T12] ( 1, 1 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP +; V24 tmp17 [V24,T11] ( 2, 1 ) ref -> eax single-def "Field obj" +; V25 tmp18 [V25,T19] ( 2, 0 ) ref -> esi single-def "argument with side effect" +; V26 tmp19 [V26,T20] ( 2, 0 ) ref -> edi single-def "argument with side effect" +; V27 tmp20 [V27,T21] ( 2, 0 ) ref -> edx single-def "argument with side effect"
; V28 tmp21 [V28,T22] ( 2, 0 ) ref -> edi single-def "argument with side effect"
-; V29 tmp22 [V29,T23] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V30 tmp23 [V30,T24] ( 2, 0 ) ref -> esi single-def "argument with side effect" -; V31 EHSlots [V31 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar" -; V32 cse0 [V32,T10] ( 4, 1.50) int -> [ebp-0x28] spill-single-def "CSE - moderate"
+; V29 tmp22 [V29,T23] ( 2, 0 ) ref -> edi single-def "argument with side effect" +; V30 tmp23 [V30,T24] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V31 tmp24 [V31,T25] ( 2, 0 ) ref -> esi single-def "argument with side effect" +; V32 EHSlots [V32 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar" +; V33 cse0 [V33,T10] ( 4, 1.50) int -> [ebp-0x28] spill-single-def "CSE - moderate"
; ; Lcl frame size = 44 @@ -166,10 +167,10 @@ G_M11429_IG06: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= G_M11429_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax]
- movsx eax, byte ptr [eax+0x59] - ; gcrRegs -[eax] - ;; size=9 bbWeight=0.50 PerfScore 3.00
+ cmp byte ptr [eax], al + ;; size=7 bbWeight=0.50 PerfScore 2.50
G_M11429_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
mov edx, gword ptr [esi+0x60] ; gcrRegs +[edx] lea edx, bword ptr [edx+0x04] @@ -398,7 +399,7 @@ G_M11429_IG21: ; bbWeight=0, gcVars=00000001 {V01}, gcrefRegs=00000040 {e int3 ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 703, prolog size 14, PerfScore 110.50, instruction count 201, allocated bytes for code 703 (MethodHash=8b1ad35a) for method System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
+; Total bytes of code 701, prolog size 14, PerfScore 110.00, instruction count 201, allocated bytes for code 701 (MethodHash=8b1ad35a) for method System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
; ============================================================ *************** EH table for System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this

-6 (-0.20%) : 43972.dasm - System.IO.Strategies.BufferedFileStreamStrategy+d__37:MoveNext():this (Tier1)

@@ -69,12 +69,12 @@ ; V58 tmp39 [V58,T40] ( 3, 6 ) int -> ebx "Inlining Arg" ; V59 tmp40 [V59,T41] ( 3, 6 ) int -> edx "Inlining Arg" ; V60 tmp41 [V60,T05] ( 5, 10 ) ref -> edx class-hnd single-def "Inlining Arg" <ubyte[]>
-; V61 tmp42 [V61,T15] ( 5, 8 ) int -> ecx "Inlining Arg"
+; V61 tmp42 [V61,T18] ( 4, 8 ) int -> ecx "Inlining Arg"
;* V62 tmp43 [V62 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V63 tmp44 [V63 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V64 tmp45 [V64,T26] ( 6, 6 ) byref -> [ebp-0xA8] "Inline stloc first use temp" ; V65 tmp46 [V65,T13] ( 8, 8 ) int -> [ebp-0x68] "Inline stloc first use temp"
-; V66 tmp47 [V66,T16] ( 4, 8 ) byref -> [ebp-0xAC] spill-single-def "Inlining Arg"
+; V66 tmp47 [V66,T15] ( 4, 8 ) byref -> [ebp-0xAC] spill-single-def "Inlining Arg"
; V67 tmp48 [V67,T11] ( 9, 9 ) ref -> [ebp-0xB0] class-hnd spill-single-def "Inline stloc first use temp" <System.Object> ;* V68 tmp49 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V69 tmp50 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -90,7 +90,7 @@ ;* V79 tmp60 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V80 tmp61 [V80 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V81 tmp62 [V81 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V82 tmp63 [V82,T17] ( 4, 8 ) byref -> edx single-def "Inlining Arg"
+; V82 tmp63 [V82,T16] ( 4, 8 ) byref -> edx single-def "Inlining Arg"
;* V83 tmp64 [V83 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]> ; V84 tmp65 [V84,T06] ( 5, 10 ) ref -> [ebp-0xB4] class-hnd spill-single-def "Inlining Arg" <System.Object> ; V85 tmp66 [V85,T76] ( 3, 3 ) int -> registers @@ -173,7 +173,7 @@ ;* V162 tmp143 [V162 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V163 tmp144 [V163,T29] ( 6, 6 ) byref -> [ebp-0xC0] "Inline stloc first use temp" ; V164 tmp145 [V164,T14] ( 8, 8 ) int -> [ebp-0x84] "Inline stloc first use temp"
-; V165 tmp146 [V165,T18] ( 4, 8 ) byref -> [ebp-0xC4] spill-single-def "Inlining Arg"
+; V165 tmp146 [V165,T17] ( 4, 8 ) byref -> [ebp-0xC4] spill-single-def "Inlining Arg"
; V166 tmp147 [V166,T12] ( 9, 9 ) ref -> ebx class-hnd single-def "Inline stloc first use temp" <System.Object> ;* V167 tmp148 [V167 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V168 tmp149 [V168 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -371,7 +371,7 @@ G_M33324_IG06: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00 lea ecx, [ebp-0x30] call [<unknown method>] ; gcrRegs -[eax edx]
- jmp G_M33324_IG86
+ jmp G_M33324_IG85
;; size=49 bbWeight=1 PerfScore 15.25 G_M33324_IG07: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref ; GC ptr vars +{V01 V02} @@ -428,7 +428,7 @@ G_M33324_IG10: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov edx, gword ptr [edi+0x10] ; gcrRegs +[edx] test edx, edx
- je G_M33324_IG71
+ je G_M33324_IG70
cmp dword ptr [edx+0x04], ecx jb G_M33324_IG70 mov eax, dword ptr [edx+0x04] @@ -538,7 +538,7 @@ G_M33324_IG13: ; bbWeight=1, gcVars=00000000200000000000000004000003 {V00 mov ecx, dword ptr [ebp-0x90] mov edx, dword ptr [ebp-0x68] cmp ecx, edx
- ja G_M33324_IG72
+ ja G_M33324_IG71
push ecx mov ecx, bword ptr [ebp-0xA8] ; byrRegs +[ecx] @@ -555,8 +555,8 @@ G_M33324_IG14: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov dword ptr [ebp-0x28], ebx mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG78 - jmp G_M33324_IG76
+ push G_M33324_IG77 + jmp G_M33324_IG75
;; size=32 bbWeight=1 PerfScore 10.00 G_M33324_IG15: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref test ebx, ebx @@ -566,7 +566,7 @@ G_M33324_IG15: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov eax, dword ptr [edx+0x08] mov dword ptr [ebp-0x9C], eax cmp ebx, eax
- ja G_M33324_IG73
+ ja G_M33324_IG72
mov ecx, gword ptr [edx] ; gcrRegs +[ecx] mov gword ptr [ebp-0xB4], ecx @@ -827,8 +827,8 @@ G_M33324_IG28: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e mov dword ptr [ebp-0x28], eax mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG81 - jmp G_M33324_IG76
+ push G_M33324_IG80 + jmp G_M33324_IG75
;; size=30 bbWeight=1 PerfScore 9.00 G_M33324_IG29: ; bbWeight=0.50, gcVars=00000000000000000000000000000043 {V00 V02 V84}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref ; gcrRegs +[edi] @@ -893,8 +893,8 @@ G_M33324_IG34: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e ; gcrRegs -[eax edx] mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG79 - jmp G_M33324_IG76
+ push G_M33324_IG78 + jmp G_M33324_IG75
;; size=78 bbWeight=1 PerfScore 18.50 G_M33324_IG35: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref add esi, 48 @@ -975,8 +975,8 @@ G_M33324_IG41: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e ; gcrRegs -[eax edx] mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG80 - jmp G_M33324_IG76
+ push G_M33324_IG79 + jmp G_M33324_IG75
;; size=79 bbWeight=1 PerfScore 19.50 G_M33324_IG42: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref add esi, 56 @@ -1176,8 +1176,8 @@ G_M33324_IG55: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e ; gcrRegs -[eax edx] mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG82 - jmp G_M33324_IG76
+ push G_M33324_IG81 + jmp G_M33324_IG75
;; size=79 bbWeight=1 PerfScore 19.50 G_M33324_IG56: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref add esi, 56 @@ -1409,7 +1409,7 @@ G_M33324_IG69: ; bbWeight=1, gcVars=00000000000004000000000020000003 {V00 mov ebx, dword ptr [ebp-0x98] mov ecx, dword ptr [ebp-0x84] cmp ebx, ecx
- ja SHORT G_M33324_IG72
+ ja SHORT G_M33324_IG71
push ebx mov ecx, bword ptr [ebp-0xC0] ; byrRegs +[ecx] @@ -1418,7 +1418,7 @@ G_M33324_IG69: ; bbWeight=1, gcVars=00000000000004000000000020000003 {V00 ; GC ptr vars -{V163 V236} call [<unknown method>] ; byrRegs -[ecx edx]
- jmp SHORT G_M33324_IG74
+ jmp SHORT G_M33324_IG73
;; size=54 bbWeight=1 PerfScore 16.00 G_M33324_IG70: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref ; gcrRegs -[edi] @@ -1427,29 +1427,24 @@ G_M33324_IG70: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000040 {e call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] int3 ;; size=13 bbWeight=0 PerfScore 0.00
-G_M33324_IG71: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - test ecx, ecx - jne SHORT G_M33324_IG70 - jmp SHORT G_M33324_IG70 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M33324_IG72: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M33324_IG71: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
call [System.ThrowHelper:ThrowArgumentException_DestinationTooShort()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M33324_IG73: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M33324_IG72: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov ecx, 33 call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M33324_IG74: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M33324_IG73: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov ebx, dword ptr [ebp-0x80] add dword ptr [edi+0x1C], ebx add ebx, dword ptr [esi+0x0C] mov dword ptr [ebp-0x28], ebx ;; size=12 bbWeight=1 PerfScore 8.00
-G_M33324_IG75: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
+G_M33324_IG74: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
cmp dword ptr [ebp-0x24], 0
- jge G_M33324_IG84
+ jge G_M33324_IG83
mov ecx, gword ptr [edi+0x04] ; gcrRegs +[ecx] cmp byte ptr [ecx], cl @@ -1457,13 +1452,13 @@ G_M33324_IG75: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 ; GC ptr vars -{V02} call [<unknown method>] ; gcrRegs -[ecx edi]
- jmp SHORT G_M33324_IG84
+ jmp SHORT G_M33324_IG83
;; size=28 bbWeight=1 PerfScore 13.25
-G_M33324_IG76: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33324_IG75: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[esi] ; GC ptr vars +{V01 V02} cmp dword ptr [ebp-0x24], 0
- jge SHORT G_M33324_IG77
+ jge SHORT G_M33324_IG76
mov edi, gword ptr [ebp-0xA4] ; gcrRegs +[edi] mov ecx, gword ptr [edi+0x04] @@ -1474,40 +1469,40 @@ G_M33324_IG76: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 call [<unknown method>] ; gcrRegs -[ecx edi] ;; size=28 bbWeight=1 PerfScore 12.25
-G_M33324_IG77: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M33324_IG76: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
pop eax jmp eax ;; size=3 bbWeight=1 PerfScore 2.50
-G_M33324_IG78: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M33324_IG77: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x18], 0 mov esi, bword ptr [ebp-0xA0] ; byrRegs +[esi]
- jmp SHORT G_M33324_IG84
+ jmp SHORT G_M33324_IG83
;; size=15 bbWeight=1 PerfScore 4.00
-G_M33324_IG79: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33324_IG78: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[esi] ; GC ptr vars -{V00} mov dword ptr [ebp-0x18], 0
- jmp SHORT G_M33324_IG86
+ jmp SHORT G_M33324_IG85
;; size=9 bbWeight=1 PerfScore 3.00
-G_M33324_IG80: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M33324_IG79: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x18], 0
- jmp SHORT G_M33324_IG86
+ jmp SHORT G_M33324_IG85
;; size=9 bbWeight=1 PerfScore 3.00
-G_M33324_IG81: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33324_IG80: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars +{V00} mov dword ptr [ebp-0x18], 0 mov esi, bword ptr [ebp-0xA0] ; byrRegs +[esi]
- jmp SHORT G_M33324_IG84
+ jmp SHORT G_M33324_IG83
;; size=15 bbWeight=1 PerfScore 4.00
-G_M33324_IG82: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33324_IG81: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[esi] ; GC ptr vars -{V00} mov dword ptr [ebp-0x18], 0
- jmp SHORT G_M33324_IG86
+ jmp SHORT G_M33324_IG85
;; size=9 bbWeight=1 PerfScore 3.00
-G_M33324_IG83: ; bbWeight=0, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33324_IG82: ; bbWeight=0, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[eax] ; GC ptr vars +{V00} mov edx, eax @@ -1522,16 +1517,16 @@ G_M33324_IG83: ; bbWeight=0, gcVars=00000000000000000000000000000001 {V00 ; gcrRegs -[eax edx] ; byrRegs -[ecx esi] ...

-10 (-0.08%) : 27527.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)

@@ -9,18 +9,18 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] (145,450.50) ref -> ebx class-hnd single-def <System.IO.TextWriter>
-; V01 arg1 [V01,T198] ( 7, 5 ) ref -> [ebp-0x2A0] class-hnd single-def <MicroBenchmarks.Serializers.CollectionsOfPrimitives>
+; V01 arg1 [V01,T198] ( 7, 5 ) ref -> [ebp-0x29C] class-hnd single-def <MicroBenchmarks.Serializers.CollectionsOfPrimitives>
;* V02 arg2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
-; V03 loc0 [V03,T02] (133,212 ) ref -> [ebp-0x2A4] class-hnd exact spill-single-def <ushort[]> -; V04 loc1 [V04,T154] ( 7, 10.50) ref -> [ebp-0x2A8] class-hnd spill-single-def <ubyte[]>
+; V03 loc0 [V03,T02] (133,212 ) ref -> [ebp-0x2A0] class-hnd exact spill-single-def <ushort[]> +; V04 loc1 [V04,T154] ( 7, 10.50) ref -> [ebp-0x2A4] class-hnd spill-single-def <ubyte[]>
; V05 loc2 [V05,T17] ( 10, 29.50) int -> [ebp-0x10] ; V06 loc3 [V06,T13] ( 13, 41.50) int -> [ebp-0x14]
-; V07 loc4 [V07,T155] ( 7, 10.50) ref -> [ebp-0x2AC] class-hnd exact spill-single-def <System.DateTime[]>
+; V07 loc4 [V07,T155] ( 7, 10.50) ref -> [ebp-0x2A8] class-hnd exact spill-single-def <System.DateTime[]>
;* V08 loc5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.DateTime>
-; V09 loc6 [V09,T314] ( 4, 2 ) ref -> [ebp-0x2B0] class-hnd spill-single-def <System.Collections.Generic.Dictionary`2[int,System.String]>
+; V09 loc6 [V09,T314] ( 4, 2 ) ref -> [ebp-0x2AC] class-hnd spill-single-def <System.Collections.Generic.Dictionary`2[int,System.String]>
; V10 loc7 [V10 ] ( 11, 16 ) struct (24) [ebp-0x2C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[int,System.String]> ;* V11 loc8 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Generic.KeyValuePair`2[int,System.String]>
-; V12 loc9 [V12,T200] ( 6, 6.50) ref -> [ebp-0x2B4] class-hnd spill-single-def <System.Collections.Generic.List`1[int]>
+; V12 loc9 [V12,T200] ( 6, 6.50) ref -> [ebp-0x2B0] class-hnd spill-single-def <System.Collections.Generic.List`1[int]>
; V13 tmp0 [V13,T18] ( 5, 28 ) int -> [ebp-0x30] spill-single-def "impAppendStmt" ;* V14 tmp1 [V14 ] ( 0, 0 ) ref -> zero-ref single-def ; V15 tmp2 [V15 ] ( 3, 3 ) struct ( 8) [ebp-0x38] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <System.DateTime> @@ -107,7 +107,7 @@ ;* V96 tmp83 [V96 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V97 tmp84 [V97 ] ( 4, 12 ) struct ( 8) [ebp-0xA0] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.DateTime> ;* V98 tmp85 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
-; V99 tmp86 [V99,T163] ( 4, 8 ) ref -> [ebp-0x2B8] class-hnd exact spill-single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
+; V99 tmp86 [V99,T163] ( 4, 8 ) ref -> [ebp-0x2B4] class-hnd exact spill-single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
;* V100 tmp87 [V100 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.DateTime> ;* V101 tmp88 [V101 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V102 tmp89 [V102,T202] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -231,7 +231,7 @@ ; V220 tmp207 [V220,T194] ( 2, 8 ) int -> edx "Strict ordering of exceptions for Array store" ; V221 tmp208 [V221,T195] ( 2, 8 ) int -> edx "Strict ordering of exceptions for Array store" ; V222 tmp209 [V222,T15] ( 18, 34 ) long -> [ebp-0x154] do-not-enreg[F] "field V08._dateData (fldOffset=0x0)" P-INDEP
-; V223 tmp210 [V223,T44] ( 10, 22.50) ref -> [ebp-0x2BC] "field V11.value (fldOffset=0x0)" P-INDEP
+; V223 tmp210 [V223,T44] ( 10, 22.50) ref -> [ebp-0x2B8] "field V11.value (fldOffset=0x0)" P-INDEP
; V224 tmp211 [V224,T52] ( 10, 16.50) int -> [ebp-0x158] "field V11.key (fldOffset=0x4)" P-INDEP ; V225 tmp212 [V225,T321] ( 3, 2 ) long -> [ebp-0x38] do-not-enreg[H] hidden-struct-arg "field V15._dateData (fldOffset=0x0)" P-DEP ; V226 tmp213 [V226,T61] ( 5, 16 ) long -> [ebp-0x160] do-not-enreg[F] "field V16._dateData (fldOffset=0x0)" P-INDEP @@ -245,7 +245,7 @@ ; V234 tmp221 [V234,T359] ( 3, 1.50) long -> [ebp-0x178] do-not-enreg[F] single-def "field V70._dateData (fldOffset=0x0)" P-INDEP ;* V235 tmp222 [V235 ] ( 0, 0 ) long -> zero-ref single-def "field V71._ticks (fldOffset=0x0)" P-INDEP ;* V236 tmp223 [V236 ] ( 0, 0 ) long -> zero-ref "field V77._dateData (fldOffset=0x0)" P-INDEP
-; V237 tmp224 [V237,T315] ( 4, 2 ) byref -> [ebp-0x2C0] "field V78._reference (fldOffset=0x0)" P-INDEP
+; V237 tmp224 [V237,T315] ( 4, 2 ) byref -> [ebp-0x2BC] "field V78._reference (fldOffset=0x0)" P-INDEP
;* V238 tmp225 [V238,T386] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x4)" P-INDEP ;* V239 tmp226 [V239 ] ( 0, 0 ) byref -> zero-ref single-def "field V79._reference (fldOffset=0x0)" P-INDEP ;* V240 tmp227 [V240 ] ( 0, 0 ) int -> zero-ref single-def "field V79._length (fldOffset=0x4)" P-INDEP @@ -268,7 +268,7 @@ ; V257 tmp244 [V257,T112] ( 3, 12 ) long -> [ebp-0x198] do-not-enreg[F] "field V119._dateData (fldOffset=0x0)" P-INDEP ;* V258 tmp245 [V258 ] ( 0, 0 ) long -> zero-ref "field V120._ticks (fldOffset=0x0)" P-INDEP ;* V259 tmp246 [V259 ] ( 0, 0 ) long -> zero-ref "field V126._dateData (fldOffset=0x0)" P-INDEP
-; V260 tmp247 [V260,T75] ( 4, 12 ) byref -> [ebp-0x2C4] "field V127._reference (fldOffset=0x0)" P-INDEP
+; V260 tmp247 [V260,T75] ( 4, 12 ) byref -> [ebp-0x2C0] "field V127._reference (fldOffset=0x0)" P-INDEP
;* V261 tmp248 [V261,T226] ( 0, 0 ) int -> zero-ref "field V127._length (fldOffset=0x4)" P-INDEP ;* V262 tmp249 [V262 ] ( 0, 0 ) byref -> zero-ref "field V128._reference (fldOffset=0x0)" P-INDEP ;* V263 tmp250 [V263 ] ( 0, 0 ) int -> zero-ref "field V128._length (fldOffset=0x4)" P-INDEP @@ -297,31 +297,31 @@ ; V286 tmp273 [V286,T113] ( 3, 12 ) int -> [ebp-0x1AC] spill-single-def "fgMakeTemp is creating a new local variable" ; V287 tmp274 [V287,T114] ( 3, 12 ) int -> [ebp-0x1B0] spill-single-def "fgMakeTemp is creating a new local variable" ; V288 tmp275 [V288,T76] ( 3, 12 ) ref -> edx "arr expr"
-; V289 tmp276 [V289,T77] ( 3, 12 ) ref -> [ebp-0x2C8] spill-single-def "arr expr" -; V290 tmp277 [V290,T78] ( 3, 12 ) ref -> [ebp-0x2CC] spill-single-def "arr expr"
+; V289 tmp276 [V289,T77] ( 3, 12 ) ref -> [ebp-0x2C4] spill-single-def "arr expr" +; V290 tmp277 [V290,T78] ( 3, 12 ) ref -> [ebp-0x2C8] spill-single-def "arr expr"
; V291 tmp278 [V291,T79] ( 3, 12 ) ref -> eax "arr expr"
-; V292 tmp279 [V292,T80] ( 3, 12 ) ref -> [ebp-0x2D0] spill-single-def "arr expr" -; V293 tmp280 [V293,T81] ( 3, 12 ) ref -> [ebp-0x2D4] spill-single-def "arr expr"
+; V292 tmp279 [V292,T80] ( 3, 12 ) ref -> [ebp-0x2CC] spill-single-def "arr expr" +; V293 tmp280 [V293,T81] ( 3, 12 ) ref -> [ebp-0x2D0] spill-single-def "arr expr"
; V294 tmp281 [V294,T82] ( 3, 12 ) ref -> edx "arr expr" ; V295 tmp282 [V295,T83] ( 3, 12 ) ref -> edx "arr expr" ; V296 tmp283 [V296,T84] ( 3, 12 ) ref -> edx "arr expr"
-; V297 tmp284 [V297,T241] ( 3, 3 ) ref -> [ebp-0x2D8] spill-single-def "arr expr"
+; V297 tmp284 [V297,T241] ( 3, 3 ) ref -> [ebp-0x2D4] spill-single-def "arr expr"
; V298 tmp285 [V298,T242] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V299 tmp286 [V299,T243] ( 3, 3 ) ref -> [ebp-0x2DC] spill-single-def "arr expr"
+; V299 tmp286 [V299,T243] ( 3, 3 ) ref -> [ebp-0x2D8] spill-single-def "arr expr"
; V300 tmp287 [V300,T244] ( 3, 3 ) byref -> ecx single-def "BlockOp address local"
-; V301 tmp288 [V301,T245] ( 3, 3 ) ref -> [ebp-0x2E0] spill-single-def "arr expr"
+; V301 tmp288 [V301,T245] ( 3, 3 ) ref -> [ebp-0x2DC] spill-single-def "arr expr"
; V302 tmp289 [V302,T285] ( 3, 3 ) int -> eax "index expr" ; V303 tmp290 [V303,T246] ( 3, 3 ) byref -> ecx single-def "BlockOp address local"
-; V304 tmp291 [V304,T247] ( 3, 3 ) ref -> [ebp-0x2E4] spill-single-def "arr expr"
+; V304 tmp291 [V304,T247] ( 3, 3 ) ref -> [ebp-0x2E0] spill-single-def "arr expr"
; V305 tmp292 [V305,T286] ( 3, 3 ) int -> eax "index expr" ; V306 tmp293 [V306,T248] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V307 tmp294 [V307,T249] ( 3, 3 ) ref -> [ebp-0x2E8] spill-single-def "arr expr"
+; V307 tmp294 [V307,T249] ( 3, 3 ) ref -> [ebp-0x2E4] spill-single-def "arr expr"
; V308 tmp295 [V308,T287] ( 3, 3 ) int -> ecx "index expr" ; V309 tmp296 [V309,T250] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V310 tmp297 [V310,T251] ( 3, 3 ) ref -> [ebp-0x2EC] spill-single-def "arr expr"
+; V310 tmp297 [V310,T251] ( 3, 3 ) ref -> [ebp-0x2E8] spill-single-def "arr expr"
; V311 tmp298 [V311,T288] ( 3, 3 ) int -> edx "index expr" ; V312 tmp299 [V312,T252] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V313 tmp300 [V313,T253] ( 3, 3 ) ref -> [ebp-0x2F0] spill-single-def "arr expr"
+; V313 tmp300 [V313,T253] ( 3, 3 ) ref -> [ebp-0x2EC] spill-single-def "arr expr"
; V314 tmp301 [V314,T289] ( 3, 3 ) int -> edx "index expr" ; V315 tmp302 [V315,T254] ( 3, 3 ) byref -> ecx single-def "BlockOp address local" ; V316 tmp303 [V316,T255] ( 3, 3 ) ref -> edx single-def "arr expr" @@ -330,23 +330,23 @@ ; V319 tmp306 [V319,T258] ( 3, 3 ) byref -> eax single-def "BlockOp address local" ; V320 tmp307 [V320,T259] ( 3, 3 ) ref -> ecx single-def "arr expr" ; V321 tmp308 [V321,T260] ( 3, 3 ) byref -> ecx single-def "BlockOp address local"
-; V322 tmp309 [V322,T21] ( 3, 24 ) ref -> [ebp-0x2F4] spill-single-def "arr expr"
+; V322 tmp309 [V322,T21] ( 3, 24 ) ref -> [ebp-0x2F0] spill-single-def "arr expr"
; V323 tmp310 [V323,T22] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V324 tmp311 [V324,T23] ( 3, 24 ) ref -> [ebp-0x2F8] spill-single-def "arr expr"
+; V324 tmp311 [V324,T23] ( 3, 24 ) ref -> [ebp-0x2F4] spill-single-def "arr expr"
; V325 tmp312 [V325,T24] ( 3, 24 ) byref -> ecx "BlockOp address local"
-; V326 tmp313 [V326,T25] ( 3, 24 ) ref -> [ebp-0x2FC] spill-single-def "arr expr"
+; V326 tmp313 [V326,T25] ( 3, 24 ) ref -> [ebp-0x2F8] spill-single-def "arr expr"
; V327 tmp314 [V327,T39] ( 3, 24 ) int -> eax "index expr" ; V328 tmp315 [V328,T26] ( 3, 24 ) byref -> ecx "BlockOp address local"
-; V329 tmp316 [V329,T27] ( 3, 24 ) ref -> [ebp-0x300] spill-single-def "arr expr"
+; V329 tmp316 [V329,T27] ( 3, 24 ) ref -> [ebp-0x2FC] spill-single-def "arr expr"
; V330 tmp317 [V330,T40] ( 3, 24 ) int -> eax "index expr" ; V331 tmp318 [V331,T28] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V332 tmp319 [V332,T29] ( 3, 24 ) ref -> [ebp-0x304] spill-single-def "arr expr"
+; V332 tmp319 [V332,T29] ( 3, 24 ) ref -> [ebp-0x300] spill-single-def "arr expr"
; V333 tmp320 [V333,T41] ( 3, 24 ) int -> ecx "index expr" ; V334 tmp321 [V334,T30] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V335 tmp322 [V335,T31] ( 3, 24 ) ref -> [ebp-0x308] spill-single-def "arr expr"
+; V335 tmp322 [V335,T31] ( 3, 24 ) ref -> [ebp-0x304] spill-single-def "arr expr"
; V336 tmp323 [V336,T42] ( 3, 24 ) int -> edx "index expr" ; V337 tmp324 [V337,T32] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V338 tmp325 [V338,T33] ( 3, 24 ) ref -> [ebp-0x30C] spill-single-def "arr expr"
+; V338 tmp325 [V338,T33] ( 3, 24 ) ref -> [ebp-0x308] spill-single-def "arr expr"
; V339 tmp326 [V339,T43] ( 3, 24 ) int -> edx "index expr" ; V340 tmp327 [V340,T34] ( 3, 24 ) byref -> ecx "BlockOp address local" ; V341 tmp328 [V341,T85] ( 3, 12 ) ref -> edx "arr expr" @@ -370,11 +370,11 @@ ; V359 tmp346 [V359,T115] ( 3, 12 ) int -> [ebp-0x1BC] spill-single-def "fgMakeTemp is creating a new local variable" ; V360 tmp347 [V360,T116] ( 3, 12 ) int -> [ebp-0x1C0] spill-single-def "fgMakeTemp is creating a new local variable" ; V361 tmp348 [V361,T91] ( 3, 12 ) ref -> edx "arr expr"
-; V362 tmp349 [V362,T92] ( 3, 12 ) ref -> [ebp-0x310] spill-single-def "arr expr" -; V363 tmp350 [V363,T93] ( 3, 12 ) ref -> [ebp-0x314] spill-single-def "arr expr"
+; V362 tmp349 [V362,T92] ( 3, 12 ) ref -> [ebp-0x30C] spill-single-def "arr expr" +; V363 tmp350 [V363,T93] ( 3, 12 ) ref -> [ebp-0x310] spill-single-def "arr expr"
; V364 tmp351 [V364,T94] ( 3, 12 ) ref -> eax "arr expr"
-; V365 tmp352 [V365,T95] ( 3, 12 ) ref -> [ebp-0x318] spill-single-def "arr expr" -; V366 tmp353 [V366,T96] ( 3, 12 ) ref -> [ebp-0x31C] spill-single-def "arr expr"
+; V365 tmp352 [V365,T95] ( 3, 12 ) ref -> [ebp-0x314] spill-single-def "arr expr" +; V366 tmp353 [V366,T96] ( 3, 12 ) ref -> [ebp-0x318] spill-single-def "arr expr"
; V367 tmp354 [V367,T97] ( 3, 12 ) ref -> ecx "arr expr" ; V368 tmp355 [V368,T98] ( 3, 12 ) ref -> ecx "arr expr" ; V369 tmp356 [V369,T99] ( 3, 12 ) ref -> ecx "arr expr" @@ -393,11 +393,11 @@ ; V382 tmp369 [V382,T117] ( 3, 12 ) int -> [ebp-0x1CC] spill-single-def "fgMakeTemp is creating a new local variable" ; V383 tmp370 [V383,T118] ( 3, 12 ) int -> [ebp-0x1D0] spill-single-def "fgMakeTemp is creating a new local variable" ; V384 tmp371 [V384,T100] ( 3, 12 ) ref -> edx "arr expr"
-; V385 tmp372 [V385,T101] ( 3, 12 ) ref -> [ebp-0x320] spill-single-def "arr expr" -; V386 tmp373 [V386,T102] ( 3, 12 ) ref -> [ebp-0x324] spill-single-def "arr expr"
+; V385 tmp372 [V385,T101] ( 3, 12 ) ref -> [ebp-0x31C] spill-single-def "arr expr" +; V386 tmp373 [V386,T102] ( 3, 12 ) ref -> [ebp-0x320] spill-single-def "arr expr"
; V387 tmp374 [V387,T103] ( 3, 12 ) ref -> edx "arr expr"
-; V388 tmp375 [V388,T104] ( 3, 12 ) ref -> [ebp-0x328] spill-single-def "arr expr" -; V389 tmp376 [V389,T105] ( 3, 12 ) ref -> [ebp-0x32C] spill-single-def "arr expr"
+; V388 tmp375 [V388,T104] ( 3, 12 ) ref -> [ebp-0x324] spill-single-def "arr expr" +; V389 tmp376 [V389,T105] ( 3, 12 ) ref -> [ebp-0x328] spill-single-def "arr expr"
; V390 tmp377 [V390,T106] ( 3, 12 ) ref -> edx "arr expr" ; V391 tmp378 [V391,T107] ( 3, 12 ) ref -> edx "arr expr" ; V392 tmp379 [V392,T108] ( 3, 12 ) ref -> edx "arr expr" @@ -421,76 +421,76 @@ ;* V410 cse17 [V410 ] ( 0, 0 ) long -> zero-ref "CSE - conservative" ; V411 cse18 [V411,T01] (109,396.50) int -> [ebp-0x1E4] multi-def "CSE - aggressive" ; V412 cse19 [V412,T07] ( 38, 54 ) int -> [ebp-0x1E8] multi-def "CSE - moderate"
-; V413 cse20 [V413,T62] ( 4, 16 ) ref -> [ebp-0x330] spill-single-def "CSE - conservative" -; V414 cse21 [V414,T316] ( 4, 2 ) ref -> [ebp-0x334] spill-single-def "CSE - conservative" -; V415 rat0 [V415,T368] ( 3, 1.50) int -> [ebp-0x1EC] spill-single-def "field V51.lo (fldOffset=0x0)" P-INDEP -; V416 rat1 [V416,T369] ( 3, 1.50) int -> eax "field V51.hi (fldOffset=0x4)" P-INDEP -; V417 rat2 [V417,T221] ( 8, 4 ) int -> [ebp-0x1F0] "field V72.lo (fldOffset=0x0)" P-INDEP -; V418 rat3 [V418,T231] ( 7, 3.50) int -> [ebp-0x1F4] "field V72.hi (fldOffset=0x4)" P-INDEP -; V419 rat4 [V419,T213] ( 9, 4.50) int -> [ebp-0x1F8] "field V74.lo (fldOffset=0x0)" P-INDEP -; V420 rat5 [V420,T214] ( 9, 4.50) int -> [ebp-0x1FC] "field V74.hi (fldOffset=0x4)" P-INDEP -; V421 rat6 [V421,T370] ( 2, 1.50) int -> [ebp-0x200] spill-single-def "field V76.lo (fldOffset=0x0)" P-INDEP -; V422 rat7 [V422,T371] ( 2, 1.50) int -> [ebp-0x204] spill-single-def "field V76.hi (fldOffset=0x4)" P-INDEP -; V423 rat8 [V423,T158] ( 3, 10 ) int -> ecx "field V92.lo (fldOffset=0x0)" P-INDEP -; V424 rat9 [V424,T159] ( 3, 10 ) int -> eax "field V92.hi (fldOffset=0x4)" P-INDEP
+; V413 cse20 [V413,T62] ( 4, 16 ) ref -> [ebp-0x32C] spill-single-def "CSE - conservative" +; V414 cse21 [V414,T316] ( 4, 2 ) ref -> [ebp-0x330] spill-single-def "CSE - conservative" +; V415 rat0 [V415,T368] ( 2, 1 ) int -> ecx "field V51.lo (fldOffset=0x0)" P-INDEP +; V416 rat1 [V416,T369] ( 2, 1 ) int -> eax "field V51.hi (fldOffset=0x4)" P-INDEP +; V417 rat2 [V417,T221] ( 8, 4 ) int -> [ebp-0x1EC] "field V72.lo (fldOffset=0x0)" P-INDEP +; V418 rat3 [V418,T231] ( 7, 3.50) int -> [ebp-0x1F0] "field V72.hi (fldOffset=0x4)" P-INDEP +; V419 rat4 [V419,T213] ( 9, 4.50) int -> [ebp-0x1F4] "field V74.lo (fldOffset=0x0)" P-INDEP +; V420 rat5 [V420,T214] ( 9, 4.50) int -> [ebp-0x1F8] "field V74.hi (fldOffset=0x4)" P-INDEP +; V421 rat6 [V421,T370] ( 2, 1.50) int -> [ebp-0x1FC] spill-single-def "field V76.lo (fldOffset=0x0)" P-INDEP +; V422 rat7 [V422,T371] ( 2, 1.50) int -> [ebp-0x200] spill-single-def "field V76.hi (fldOffset=0x4)" P-INDEP +; V423 rat8 [V423,T158] ( 2, 8 ) int -> ecx "field V92.lo (fldOffset=0x0)" P-INDEP +; V424 rat9 [V424,T159] ( 2, 8 ) int -> eax "field V92.hi (fldOffset=0x4)" P-INDEP
; V425 rat10 [V425,T160] ( 3, 10 ) int -> ecx "field V101.lo (fldOffset=0x0)" P-INDEP ; V426 rat11 [V426,T161] ( 3, 10 ) int -> eax "field V101.hi (fldOffset=0x4)" P-INDEP
-; V427 rat12 [V427,T59] ( 8, 16 ) int -> [ebp-0x208] "field V121.lo (fldOffset=0x0)" P-INDEP -; V428 rat13 [V428,T71] ( 7, 14 ) int -> [ebp-0x20C] "field V121.hi (fldOffset=0x4)" P-INDEP -; V429 rat14 [V429,T50] ( 9, 18 ) int -> [ebp-0x210] "field V123.lo (fldOffset=0x0)" P-INDEP -; V430 rat15 [V430,T51] ( 9, 18 ) int -> [ebp-0x214] "field V123.hi (fldOffset=0x4)" P-INDEP -; V431 rat16 [V431,T140] ( 2, 12 ) int -> [ebp-0x218] spill-single-def "field V125.lo (fldOffset=0x0)" P-INDEP -; V432 rat17 [V432,T141] ( 2, 12 ) int -> [ebp-0x21C] spill-single-def "field V125.hi (fldOffset=0x4)" P-INDEP -; V433 rat18 [V433,T64] ( 4, 16 ) int -> [ebp-0x220] spill-single-def "field V409.lo (fldOffset=0x0)" P-INDEP -; V434 rat19 [V434,T65] ( 4, 16 ) int -> [ebp-0x224] spill-single-def "field V409.hi (fldOffset=0x4)" P-INDEP -; V435 rat20 [V435,T319] ( 4, 2 ) int -> [ebp-0x228] spill-single-def "field V410.lo (fldOffset=0x0)" P-INDEP -; V436 rat21 [V436,T320] ( 4, 2 ) int -> [ebp-0x22C] spill-single-def "field V410.hi (fldOffset=0x4)" P-INDEP
+; V427 rat12 [V427,T59] ( 8, 16 ) int -> [ebp-0x204] "field V121.lo (fldOffset=0x0)" P-INDEP +; V428 rat13 [V428,T71] ( 7, 14 ) int -> [ebp-0x208] "field V121.hi (fldOffset=0x4)" P-INDEP +; V429 rat14 [V429,T50] ( 9, 18 ) int -> [ebp-0x20C] "field V123.lo (fldOffset=0x0)" P-INDEP +; V430 rat15 [V430,T51] ( 9, 18 ) int -> [ebp-0x210] "field V123.hi (fldOffset=0x4)" P-INDEP +; V431 rat16 [V431,T140] ( 2, 12 ) int -> [ebp-0x214] spill-single-def "field V125.lo (fldOffset=0x0)" P-INDEP +; V432 rat17 [V432,T141] ( 2, 12 ) int -> [ebp-0x218] spill-single-def "field V125.hi (fldOffset=0x4)" P-INDEP +; V433 rat18 [V433,T64] ( 4, 16 ) int -> [ebp-0x21C] spill-single-def "field V409.lo (fldOffset=0x0)" P-INDEP +; V434 rat19 [V434,T65] ( 4, 16 ) int -> [ebp-0x220] spill-single-def "field V409.hi (fldOffset=0x4)" P-INDEP +; V435 rat20 [V435,T319] ( 4, 2 ) int -> [ebp-0x224] spill-single-def "field V410.lo (fldOffset=0x0)" P-INDEP +; V436 rat21 [V436,T320] ( 4, 2 ) int -> [ebp-0x228] spill-single-def "field V410.hi (fldOffset=0x4)" P-INDEP
; V437 rat22 [V437,T295] ( 3, 3 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ; V438 rat23 [V438,T296] ( 3, 3 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ; V439 rat24 [V439,T122] ( 3, 12 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ; V440 rat25 [V440,T123] ( 3, 12 ) int -> edx "ReplaceWithLclVar is creating a new local variable"
-; V441 rat26 [V441,T279] ( 3, 3 ) byref -> [ebp-0x338] spill-single-def "ReplaceWithLclVar is creating a new local variable" -; V442 rat27 [V442 ] ( 1, 1 ) long -> [ebp-0x234] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V441 rat26 [V441,T279] ( 3, 3 ) byref -> [ebp-0x334] spill-single-def "ReplaceWithLclVar is creating a new local variable" +; V442 rat27 [V442 ] ( 1, 1 ) long -> [ebp-0x230] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V443 rat28 [V443,T322] ( 3, 2 ) int -> ecx "field V442.lo (fldOffset=0x0)" P-INDEP ; V444 rat29 [V444,T388] ( 1, 1 ) int -> edx "field V442.hi (fldOffset=0x4)" P-INDEP
-; V445 rat30 [V445 ] ( 1, 1 ) long -> [ebp-0x23C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V445 rat30 [V445 ] ( 1, 1 ) long -> [ebp-0x238] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V446 rat31 [V446,T372] ( 2, 1.50) int -> eax "field V445.lo (fldOffset=0x0)" P-INDEP ; V447 rat32 [V447,T373] ( 2, 1.50) int -> edx "field V445.hi (fldOffset=0x4)" P-INDEP
-; V448 rat33 [V448 ] ( 1, 1 ) long -> [ebp-0x244] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V448 rat33 [V448 ] ( 1, 1 ) long -> [ebp-0x240] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V449 rat34 [V449,T374] ( 2, 1.50) int -> eax "field V448.lo (fldOffset=0x0)" P-INDEP ; V450 rat35 [V450,T375] ( 2, 1.50) int -> edx "field V448.hi (fldOffset=0x4)" P-INDEP
-; V451 rat36 [V451 ] ( 1, 1 ) long -> [ebp-0x24C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V451 rat36 [V451 ] ( 1, 1 ) long -> [ebp-0x248] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V452 rat37 [V452,T323] ( 3, 2 ) int -> ecx "field V451.lo (fldOffset=0x0)" P-INDEP ; V453 rat38 [V453,T389] ( 1, 1 ) int -> edx "field V451.hi (fldOffset=0x4)" P-INDEP
-; V454 rat39 [V454 ] ( 1, 1 ) long -> [ebp-0x254] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V454 rat39 [V454 ] ( 1, 1 ) long -> [ebp-0x250] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V455 rat40 [V455,T376] ( 2, 1.50) int -> eax "field V454.lo (fldOffset=0x0)" P-INDEP ; V456 rat41 [V456,T377] ( 2, 1.50) int -> edx "field V454.hi (fldOffset=0x4)" P-INDEP
-; V457 rat42 [V457 ] ( 1, 1 ) long -> [ebp-0x25C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V457 rat42 [V457 ] ( 1, 1 ) long -> [ebp-0x258] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V458 rat43 [V458,T378] ( 2, 1.50) int -> eax "field V457.lo (fldOffset=0x0)" P-INDEP ; V459 rat44 [V459,T379] ( 2, 1.50) int -> edx "field V457.hi (fldOffset=0x4)" P-INDEP
-; V460 rat45 [V460 ] ( 1, 1 ) long -> [ebp-0x264] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V460 rat45 [V460 ] ( 1, 1 ) long -> [ebp-0x260] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V461 rat46 [V461,T380] ( 2, 1.50) int -> eax "field V460.lo (fldOffset=0x0)" P-INDEP ...

coreclr_tests.run.windows.x86.checked.mch

-43 (-60.56%) : 230250.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_1():float (FullOpts)

@@ -2,58 +2,34 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; esp 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 -; V01 tmp0 [V01,T01] ( 2, 4 ) float -> mm0 "Single return block return value" -; V02 cse0 [V02,T02] ( 5, 3.50) float -> mm1 "CSE - aggressive" -; TEMP_01 float -> [ebp-0x04]
+;* V00 loc0 [V00 ] ( 0, 0 ) float -> zero-ref +; V01 tmp0 [V01,T00] ( 2, 4 ) float -> mm0 "Single return block return value" +; TEMP_01 float -> [esp+0x00]
; ; Lcl frame size = 4 G_M53791_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp
push eax vzeroupper
- ;; size=7 bbWeight=1 PerfScore 3.25 -G_M53791_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=4 bbWeight=1 PerfScore 2.00 +G_M53791_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, 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]
- fstp dword ptr [ebp-0x04] - vmovss xmm0, dword ptr [ebp-0x04] - vmovss xmm1, dword ptr [@RWD00] - vucomiss xmm0, xmm1 - jbe SHORT G_M53791_IG04 - ;; size=28 bbWeight=1 PerfScore 12.50 -G_M53791_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M53791_IG05 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M53791_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, 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=00000000 {}, byrefRegs=00000000 {}, byref - vmovss dword ptr [ebp-0x04], xmm0 - fld dword ptr [ebp-0x04] - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M53791_IG06: ; bbWeight=1, epilog, nogc, extend - mov esp, ebp - pop ebp
+ fstp dword ptr [esp] + vmovss xmm0, dword ptr [esp] + vmovss dword ptr [esp], xmm0 + fld dword ptr [esp] + ;; size=22 bbWeight=1 PerfScore 8.00 +G_M53791_IG03: ; bbWeight=1, epilog, nogc, extend + pop ecx
ret
- ;; size=4 bbWeight=1 PerfScore 1.75 -RWD00 dd 41200000h ; 10
+ ;; size=2 bbWeight=1 PerfScore 1.50
- -; Total bytes of code 71, prolog size 7, PerfScore 27.00, instruction count 24, allocated bytes for code 71 (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 28, prolog size 4, PerfScore 11.50, instruction count 9, allocated bytes for code 32 (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)
; ============================================================

-35 (-55.56%) : 226126.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)

@@ -2,54 +2,36 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; esp 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 cse0 [V03,T01] ( 4, 3 ) float -> mm1 "CSE - aggressive" -; TEMP_01 float -> [ebp-0x04]
+;* V03 cse0 [V03,T01] ( 0, 0 ) float -> zero-ref "CSE - aggressive" +; TEMP_01 float -> [esp+0x00]
; ; Lcl frame size = 4 G_M53663_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp
push eax vzeroupper
- ;; size=7 bbWeight=1 PerfScore 3.25 -G_M53663_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=4 bbWeight=1 PerfScore 2.00 +G_M53663_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, 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]
- fstp dword ptr [ebp-0x04] - vmovss xmm0, dword ptr [ebp-0x04] - vmovss xmm1, dword ptr [@RWD00] - vucomiss xmm1, xmm0 - jbe SHORT G_M53663_IG05 - ;; size=28 bbWeight=1 PerfScore 12.50 -G_M53663_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - vmovss dword ptr [ebp-0x04], xmm0 - fld dword ptr [ebp-0x04] - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M53663_IG04: ; bbWeight=1, epilog, nogc, extend - mov esp, ebp - pop ebp
+ fstp dword ptr [esp] + vmovss xmm0, dword ptr [esp] + vmovss dword ptr [esp], xmm0 + fld dword ptr [esp] + ;; size=22 bbWeight=1 PerfScore 8.00 +G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend + pop ecx
ret
- ;; size=4 bbWeight=1 PerfScore 1.75 -G_M53663_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, 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=2 bbWeight=1 PerfScore 1.50
- -; Total bytes of code 63, prolog size 7, PerfScore 23.50, instruction count 21, allocated bytes for code 63 (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 28, prolog size 4, PerfScore 11.50, instruction count 9, allocated bytes for code 32 (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)
; ============================================================

-29 (-50.88%) : 230198.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)

@@ -2,50 +2,33 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; esp 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 -; V01 cse0 [V01,T01] ( 3, 2.50) float -> mm1 "CSE - aggressive" -; TEMP_01 float -> [ebp-0x04]
+;* V00 loc0 [V00 ] ( 0, 0 ) float -> zero-ref +; TEMP_01 float -> [esp+0x00]
; ; Lcl frame size = 4 G_M53663_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp
push eax vzeroupper
- ;; size=7 bbWeight=1 PerfScore 3.25 -G_M53663_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=4 bbWeight=1 PerfScore 2.00 +G_M53663_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, 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]
- fstp dword ptr [ebp-0x04] - vmovss xmm0, dword ptr [ebp-0x04] - vmovss xmm1, dword ptr [@RWD00] - vucomiss xmm1, xmm0 - jbe SHORT G_M53663_IG05 - ;; size=28 bbWeight=1 PerfScore 12.50 -G_M53663_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - vmovss dword ptr [ebp-0x04], xmm0 - fld dword ptr [ebp-0x04] - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M53663_IG04: ; bbWeight=1, epilog, nogc, extend - mov esp, ebp - pop ebp
+ fstp dword ptr [esp] + vmovss xmm0, dword ptr [esp] + vmovss dword ptr [esp], xmm0 + fld dword ptr [esp] + ;; size=22 bbWeight=1 PerfScore 8.00 +G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend + pop ecx
ret
- ;; size=4 bbWeight=1 PerfScore 1.75 -G_M53663_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, 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=2 bbWeight=1 PerfScore 1.50
- -; Total bytes of code 57, prolog size 7, PerfScore 22.00, instruction count 19, allocated bytes for code 57 (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 28, prolog size 4, PerfScore 11.50, instruction count 9, allocated bytes for code 32 (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)
; ============================================================

+7 (+4.90%) : 15776.dasm - testout1:SubFunclet183():int (FullOpts)

@@ -15,55 +15,55 @@ ;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref ; V05 loc5 [V05,T01] ( 4, 4 ) ref -> esi class-hnd exact single-def <testout1> ;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T05] ( 3, 3 ) ref -> eax class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T04] ( 3, 3 ) ref -> eax class-hnd exact single-def <<unknown class>>
; V08 loc8 [V08,T00] ( 6, 6 ) ref -> eax class-hnd exact single-def <<unknown class>> ;* V09 tmp0 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1> ;* V10 tmp1 [V10 ] ( 0, 0 ) int -> zero-ref single-def ;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref ;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
-; V13 tmp4 [V13,T08] ( 2, 2 ) int -> edx single-def
+; V13 tmp4 [V13,T09] ( 2, 2 ) int -> ecx single-def
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref ;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
-; V16 tmp7 [V16,T09] ( 2, 2 ) int -> edx single-def
+; V16 tmp7 [V16,T10] ( 2, 2 ) int -> ecx single-def
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref ;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
-; V19 tmp10 [V19,T10] ( 2, 2 ) int -> edx single-def
+; V19 tmp10 [V19,T11] ( 2, 2 ) int -> ecx single-def
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref ;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
-; V22 tmp13 [V22,T11] ( 2, 2 ) int -> edx single-def
+;* V22 tmp13 [V22,T12] ( 0, 0 ) int -> zero-ref single-def
;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref ;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
-; V25 tmp16 [V25,T12] ( 2, 2 ) int -> edx single-def
+;* V25 tmp16 [V25,T13] ( 0, 0 ) int -> zero-ref single-def
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref ;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
-;* V28 tmp19 [V28,T13] ( 0, 0 ) int -> zero-ref single-def
+;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref ;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref ;* V31 tmp22 [V31,T22] ( 0, 0 ) int -> zero-ref single-def ;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref ;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
-;* V34 tmp25 [V34,T14] ( 0, 0 ) int -> zero-ref single-def
+; V34 tmp25 [V34,T14] ( 2, 2 ) int -> ecx single-def
;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref ;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
-;* V37 tmp28 [V37,T15] ( 0, 0 ) int -> zero-ref single-def
+; V37 tmp28 [V37,T15] ( 2, 2 ) int -> edx single-def
;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref ;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
-;* V40 tmp31 [V40,T16] ( 0, 0 ) int -> zero-ref single-def
+; V40 tmp31 [V40,T16] ( 2, 2 ) int -> edx single-def
;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref ;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
-;* V43 tmp34 [V43,T23] ( 0, 0 ) int -> zero-ref single-def
+; V43 tmp34 [V43,T17] ( 2, 2 ) int -> edx single-def
;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref ;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
-; V46 tmp37 [V46,T17] ( 2, 2 ) int -> edx single-def
+; V46 tmp37 [V46,T18] ( 2, 2 ) int -> eax single-def
;* V47 tmp38 [V47 ] ( 0, 0 ) int -> zero-ref ;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
-; V49 tmp40 [V49,T18] ( 2, 2 ) int -> edx single-def
+; V49 tmp40 [V49,T19] ( 2, 2 ) int -> eax single-def
;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref ;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
-;* V52 tmp43 [V52,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V52 tmp43 [V52,T23] ( 0, 0 ) int -> zero-ref single-def
;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref ;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
-;* V55 tmp46 [V55,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref ;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref ;* V58 tmp49 [V58,T20] ( 0, 0 ) int -> zero-ref single-def @@ -72,17 +72,18 @@ ;* V61 tmp52 [V61,T21] ( 0, 0 ) int -> zero-ref single-def ;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref ;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
-;* V64 tmp55 [V64,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V64 tmp55 [V64,T24] ( 0, 0 ) int -> zero-ref single-def
;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref ;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
-;* V67 tmp58 [V67,T26] ( 0, 0 ) int -> zero-ref single-def
+;* V67 tmp58 [V67,T25] ( 0, 0 ) int -> zero-ref single-def
;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref ;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
-; V70 cse0 [V70,T06] ( 2, 2 ) int -> edx "CSE - aggressive" -; V71 cse1 [V71,T02] ( 2, 2 ) int -> edx "CSE - aggressive"
+; V70 cse0 [V70,T05] ( 2, 2 ) int -> ecx "CSE - aggressive" +; V71 cse1 [V71,T06] ( 2, 2 ) int -> eax "CSE - aggressive"
; V72 cse2 [V72,T07] ( 2, 2 ) int -> eax "CSE - aggressive"
-; V73 cse3 [V73,T03] ( 2, 2 ) int -> ecx "CSE - aggressive" -; V74 cse4 [V74,T04] ( 2, 2 ) int -> edx "CSE - aggressive"
+; V73 cse3 [V73,T02] ( 3, 3 ) int -> esi "CSE - aggressive" +; V74 cse4 [V74,T03] ( 3, 3 ) int -> edx "CSE - aggressive" +; V75 cse5 [V75,T08] ( 3, 3 ) int -> eax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -114,22 +115,27 @@ G_M39164_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov dword ptr [esi+0x04], -13 mov word ptr [esi+0x08], 256 mov edx, dword ptr [esi+0x04]
- add edx, 17 - mov ecx, dword ptr [eax+0x0C] - add edx, ecx - add edx, dword ptr [eax+0x08] - add edx, 3 - add edx, -5 - add edx, 3 - lea eax, [edx-0x05]
+ mov ecx, edx + add ecx, 17 + mov esi, dword ptr [eax+0x0C] + ; gcrRegs -[esi] + add ecx, esi + mov eax, dword ptr [eax+0x08]
; gcrRegs -[eax]
- ;; size=136 bbWeight=1 PerfScore 23.25
+ add ecx, eax + add edx, ecx + add edx, 17 + add edx, esi + add eax, edx + add eax, 3 + add eax, -5 + ;; size=143 bbWeight=1 PerfScore 23.00
G_M39164_IG03: ; bbWeight=1, epilog, nogc, extend pop esi pop ebp ret ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 143, prolog size 4, PerfScore 27.50, instruction count 34, allocated bytes for code 143 (MethodHash=17766703) for method testout1:Sub_Funclet_183():int (FullOpts)
+; Total bytes of code 150, prolog size 4, PerfScore 27.25, instruction count 38, allocated bytes for code 150 (MethodHash=17766703) for method testout1:Sub_Funclet_183():int (FullOpts)
; ============================================================

+7 (+5.11%) : 16117.dasm - testout1:SubFunclet106():int (FullOpts)

@@ -18,7 +18,7 @@ ;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref single-def ;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref ;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref
-;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref single-def
+;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref
;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref ;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref ;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref single-def @@ -30,55 +30,56 @@ ;* V19 tmp14 [V19,T19] ( 0, 0 ) int -> zero-ref single-def ;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref
-; V22 tmp17 [V22,T07] ( 2, 2 ) int -> edx single-def
+; V22 tmp17 [V22,T08] ( 2, 2 ) int -> ecx single-def
;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref ;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref
-; V25 tmp20 [V25,T08] ( 2, 2 ) int -> edx single-def
+; V25 tmp20 [V25,T09] ( 2, 2 ) int -> ecx single-def
;* V26 tmp21 [V26 ] ( 0, 0 ) int -> zero-ref ;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref
-; V28 tmp23 [V28,T09] ( 2, 2 ) int -> edx single-def
+; V28 tmp23 [V28,T10] ( 2, 2 ) int -> ecx single-def
;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref ;* V30 tmp25 [V30 ] ( 0, 0 ) int -> zero-ref
-; V31 tmp26 [V31,T10] ( 2, 2 ) int -> edx single-def
+;* V31 tmp26 [V31,T11] ( 0, 0 ) int -> zero-ref single-def
;* V32 tmp27 [V32 ] ( 0, 0 ) int -> zero-ref ;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref
-; V34 tmp29 [V34,T11] ( 2, 2 ) int -> edx single-def
+;* V34 tmp29 [V34,T12] ( 0, 0 ) int -> zero-ref single-def
;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref ;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref
-;* V37 tmp32 [V37,T12] ( 0, 0 ) int -> zero-ref single-def
+;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref
;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref ;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref ;* V40 tmp35 [V40,T20] ( 0, 0 ) int -> zero-ref single-def ;* V41 tmp36 [V41 ] ( 0, 0 ) int -> zero-ref ;* V42 tmp37 [V42 ] ( 0, 0 ) int -> zero-ref
-;* V43 tmp38 [V43,T13] ( 0, 0 ) int -> zero-ref single-def
+; V43 tmp38 [V43,T13] ( 2, 2 ) int -> ecx single-def
;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref ;* V45 tmp40 [V45 ] ( 0, 0 ) int -> zero-ref
-;* V46 tmp41 [V46,T14] ( 0, 0 ) int -> zero-ref single-def
+; V46 tmp41 [V46,T14] ( 2, 2 ) int -> edx single-def
;* V47 tmp42 [V47 ] ( 0, 0 ) int -> zero-ref ;* V48 tmp43 [V48 ] ( 0, 0 ) int -> zero-ref
-;* V49 tmp44 [V49,T15] ( 0, 0 ) int -> zero-ref single-def
+; V49 tmp44 [V49,T15] ( 2, 2 ) int -> edx single-def
;* V50 tmp45 [V50 ] ( 0, 0 ) int -> zero-ref ;* V51 tmp46 [V51 ] ( 0, 0 ) int -> zero-ref
-;* V52 tmp47 [V52,T21] ( 0, 0 ) int -> zero-ref single-def
+; V52 tmp47 [V52,T16] ( 2, 2 ) int -> edx single-def
;* V53 tmp48 [V53 ] ( 0, 0 ) int -> zero-ref ;* V54 tmp49 [V54 ] ( 0, 0 ) int -> zero-ref
-;* V55 tmp50 [V55,T16] ( 0, 0 ) int -> zero-ref single-def
+;* V55 tmp50 [V55,T17] ( 0, 0 ) int -> zero-ref single-def
;* V56 tmp51 [V56 ] ( 0, 0 ) int -> zero-ref ;* V57 tmp52 [V57 ] ( 0, 0 ) int -> zero-ref
-;* V58 tmp53 [V58,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V58 tmp53 [V58,T18] ( 0, 0 ) int -> zero-ref single-def
;* V59 tmp54 [V59 ] ( 0, 0 ) int -> zero-ref ;* V60 tmp55 [V60 ] ( 0, 0 ) int -> zero-ref
-;* V61 tmp56 [V61,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V61 tmp56 [V61,T21] ( 0, 0 ) int -> zero-ref single-def
;* V62 tmp57 [V62 ] ( 0, 0 ) int -> zero-ref ;* V63 tmp58 [V63 ] ( 0, 0 ) int -> zero-ref
-;* V64 tmp59 [V64,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V64 tmp59 [V64 ] ( 0, 0 ) int -> zero-ref
;* V65 tmp60 [V65 ] ( 0, 0 ) int -> zero-ref ;* V66 tmp61 [V66 ] ( 0, 0 ) int -> zero-ref
-; V67 cse0 [V67,T04] ( 2, 2 ) int -> edx "CSE - aggressive" -; V68 cse1 [V68,T03] ( 2, 2 ) int -> eax "CSE - aggressive" -; V69 cse2 [V69,T05] ( 2, 2 ) int -> edx "CSE - aggressive" -; V70 cse3 [V70,T06] ( 2, 2 ) int -> ecx "CSE - aggressive"
+; V67 cse0 [V67,T03] ( 2, 2 ) int -> ecx "CSE - aggressive" +; V68 cse1 [V68,T04] ( 2, 2 ) int -> eax "CSE - aggressive" +; V69 cse2 [V69,T05] ( 3, 3 ) int -> edx "CSE - aggressive" +; V70 cse3 [V70,T06] ( 3, 3 ) int -> esi "CSE - aggressive" +; V71 cse4 [V71,T07] ( 3, 3 ) int -> eax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -110,20 +111,25 @@ G_M50161_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov dword ptr [esi+0x04], -13 mov word ptr [esi+0x08], 256 mov edx, dword ptr [esi+0x04]
- add edx, 17 - mov ecx, dword ptr [eax+0x0C] - add edx, ecx - add edx, dword ptr [eax+0x08] - add edx, 3 - lea eax, [edx-0x05]
+ mov ecx, edx + add ecx, 17 + mov esi, dword ptr [eax+0x0C] + ; gcrRegs -[esi] + add ecx, esi + mov eax, dword ptr [eax+0x08]
; gcrRegs -[eax]
- ;; size=130 bbWeight=1 PerfScore 22.75
+ add ecx, eax + add edx, ecx + add edx, 17 + add edx, esi + add eax, edx + ;; size=137 bbWeight=1 PerfScore 22.50
G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend pop esi pop ebp ret ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 137, prolog size 4, PerfScore 27.00, instruction count 32, allocated bytes for code 137 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
+; Total bytes of code 144, prolog size 4, PerfScore 26.75, instruction count 36, allocated bytes for code 144 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
; ============================================================

+7 (+5.11%) : 15700.dasm - testout1:SubFunclet106():int (FullOpts)

@@ -15,13 +15,13 @@ ;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref ; V05 loc5 [V05,T01] ( 4, 4 ) ref -> esi 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 -> eax class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T02] ( 3, 3 ) ref -> eax class-hnd exact single-def <<unknown class>>
; V08 loc8 [V08,T00] ( 6, 6 ) ref -> eax class-hnd exact single-def <<unknown class>> ;* V09 tmp0 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1> ;* V10 tmp1 [V10 ] ( 0, 0 ) int -> zero-ref single-def ;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref ;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
-;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref single-def
+;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref ;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref ;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref single-def @@ -33,55 +33,56 @@ ;* V22 tmp13 [V22,T19] ( 0, 0 ) int -> zero-ref single-def ;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref ;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
-; V25 tmp16 [V25,T07] ( 2, 2 ) int -> edx single-def
+; V25 tmp16 [V25,T08] ( 2, 2 ) int -> ecx single-def
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref ;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
-; V28 tmp19 [V28,T08] ( 2, 2 ) int -> edx single-def
+; V28 tmp19 [V28,T09] ( 2, 2 ) int -> ecx single-def
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref ;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
-; V31 tmp22 [V31,T09] ( 2, 2 ) int -> edx single-def
+; V31 tmp22 [V31,T10] ( 2, 2 ) int -> ecx single-def
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref ;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
-; V34 tmp25 [V34,T10] ( 2, 2 ) int -> edx single-def
+;* V34 tmp25 [V34,T11] ( 0, 0 ) int -> zero-ref single-def
;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref ;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
-; V37 tmp28 [V37,T11] ( 2, 2 ) int -> edx single-def
+;* V37 tmp28 [V37,T12] ( 0, 0 ) int -> zero-ref single-def
;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref ;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
-;* V40 tmp31 [V40,T12] ( 0, 0 ) int -> zero-ref single-def
+;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref ;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref ;* V43 tmp34 [V43,T20] ( 0, 0 ) int -> zero-ref single-def ;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref ;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
-;* V46 tmp37 [V46,T13] ( 0, 0 ) int -> zero-ref single-def
+; V46 tmp37 [V46,T13] ( 2, 2 ) int -> ecx single-def
;* V47 tmp38 [V47 ] ( 0, 0 ) int -> zero-ref ;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
-;* V49 tmp40 [V49,T14] ( 0, 0 ) int -> zero-ref single-def
+; V49 tmp40 [V49,T14] ( 2, 2 ) int -> edx single-def
;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref ;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
-;* V52 tmp43 [V52,T15] ( 0, 0 ) int -> zero-ref single-def
+; V52 tmp43 [V52,T15] ( 2, 2 ) int -> edx single-def
;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref ;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
-;* V55 tmp46 [V55,T21] ( 0, 0 ) int -> zero-ref single-def
+; V55 tmp46 [V55,T16] ( 2, 2 ) int -> edx single-def
;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref ;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
-;* V58 tmp49 [V58,T16] ( 0, 0 ) int -> zero-ref single-def
+;* V58 tmp49 [V58,T17] ( 0, 0 ) int -> zero-ref single-def
;* V59 tmp50 [V59 ] ( 0, 0 ) int -> zero-ref ;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
-;* V61 tmp52 [V61,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V61 tmp52 [V61,T18] ( 0, 0 ) int -> zero-ref single-def
;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref ;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
-;* V64 tmp55 [V64,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V64 tmp55 [V64,T21] ( 0, 0 ) int -> zero-ref single-def
;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref ;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
-;* V67 tmp58 [V67,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref ;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
-; V70 cse0 [V70,T04] ( 2, 2 ) int -> edx "CSE - aggressive" -; V71 cse1 [V71,T02] ( 2, 2 ) int -> eax "CSE - aggressive" -; V72 cse2 [V72,T05] ( 2, 2 ) int -> edx "CSE - aggressive" -; V73 cse3 [V73,T06] ( 2, 2 ) int -> ecx "CSE - aggressive"
+; V70 cse0 [V70,T03] ( 2, 2 ) int -> ecx "CSE - aggressive" +; V71 cse1 [V71,T04] ( 2, 2 ) int -> eax "CSE - aggressive" +; V72 cse2 [V72,T05] ( 3, 3 ) int -> edx "CSE - aggressive" +; V73 cse3 [V73,T06] ( 3, 3 ) int -> esi "CSE - aggressive" +; V74 cse4 [V74,T07] ( 3, 3 ) int -> eax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -113,20 +114,25 @@ G_M50161_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov dword ptr [esi+0x04], -13 mov word ptr [esi+0x08], 256 mov edx, dword ptr [esi+0x04]
- add edx, 17 - mov ecx, dword ptr [eax+0x0C] - add edx, ecx - add edx, dword ptr [eax+0x08] - add edx, 3 - lea eax, [edx-0x05]
+ mov ecx, edx + add ecx, 17 + mov esi, dword ptr [eax+0x0C] + ; gcrRegs -[esi] + add ecx, esi + mov eax, dword ptr [eax+0x08]
; gcrRegs -[eax]
- ;; size=130 bbWeight=1 PerfScore 22.75
+ add ecx, eax + add edx, ecx + add edx, 17 + add edx, esi + add eax, edx + ;; size=137 bbWeight=1 PerfScore 22.50
G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend pop esi pop ebp ret ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 137, prolog size 4, PerfScore 27.00, instruction count 32, allocated bytes for code 137 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
+; Total bytes of code 144, prolog size 4, PerfScore 26.75, instruction count 36, allocated bytes for code 144 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
; ============================================================

libraries.crossgen2.windows.x86.checked.mch

-19 (-37.25%) : 223754.dasm - System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)

@@ -8,9 +8,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 3.50) int -> ecx single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) int -> ecx single-def
; V01 loc0 [V01,T02] ( 3, 2 ) ubyte -> eax
-; V02 rat0 [V02,T00] ( 3, 6 ) int -> eax "ReplaceWithLclVar is creating a new local variable"
+; V02 rat0 [V02,T00] ( 3, 6 ) int -> ecx "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0 @@ -19,54 +19,25 @@ G_M3102_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25 G_M3102_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- lea eax, [ecx-0x02] - cmp eax, 19 - ja SHORT G_M3102_IG03 - lea edx, [reloc @RWD00] - mov edx, dword ptr [edx+4*eax] - lea ecx, G_M3102_IG02 - add edx, ecx - jmp edx - ;; size=27 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=00000000 {}, byrefRegs=00000000 {}, 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=00000000 {}, byrefRegs=00000000 {}, 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=00000000 {}, byrefRegs=00000000 {}, byref
+G_M3102_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3102_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M3102_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-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 51, prolog size 3, PerfScore 13.25, instruction count 19, allocated bytes for code 51 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
+; Total bytes of code 32, prolog size 3, PerfScore 7.25, instruction count 13, allocated bytes for code 32 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
; ============================================================

-30 (-22.73%) : 170491.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)

@@ -8,7 +8,7 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 9, 4 ) int -> esi single-def
+; V00 arg0 [V00,T00] ( 6, 4 ) int -> esi single-def
; V01 arg1 [V01,T01] ( 4, 2 ) ref -> edi class-hnd single-def <System.String> ; V02 tmp0 [V02,T02] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V03 tmp1 [V03,T03] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> @@ -28,9 +28,9 @@ G_M20631_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=10 bbWeight=1 PerfScore 4.75 G_M20631_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz cmp esi, 452
- jg SHORT G_M20631_IG07
+ jg SHORT G_M20631_IG04
cmp esi, 250
- jne SHORT G_M20631_IG06
+ jne SHORT G_M20631_IG04
;; size=16 bbWeight=1 PerfScore 2.50 G_M20631_IG03: ; bbWeight=1, epilog, nogc, extend pop ebx @@ -76,22 +76,9 @@ G_M20631_IG05: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 ; gcrRegs +[ecx] call [CORINFO_HELP_THROW] ; gcrRegs -[ecx ebx]
- ;; size=29 bbWeight=0 PerfScore 0.00 -G_M20631_IG06: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[edi] - lea eax, [esi-0x1C3] - cmp eax, 1 - jbe SHORT G_M20631_IG04 - jmp SHORT G_M20631_IG04 - ;; size=13 bbWeight=0 PerfScore 0.00 -G_M20631_IG07: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - cmp esi, 552 - je SHORT G_M20631_IG04 - cmp esi, 554 - je SHORT G_M20631_IG04 - jmp SHORT G_M20631_IG04 - ;; size=18 bbWeight=0 PerfScore 0.00
+ int3 + ;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 132, prolog size 6, PerfScore 10.25, instruction count 45, allocated bytes for code 132 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
+; Total bytes of code 102, prolog size 6, PerfScore 10.25, instruction count 37, allocated bytes for code 102 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
; ============================================================

-20 (-17.54%) : 170326.dasm - System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)

@@ -8,7 +8,7 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 7, 3 ) int -> esi single-def
+; V00 arg0 [V00,T00] ( 5, 3 ) int -> esi single-def
; V01 arg1 [V01,T01] ( 4, 2 ) ref -> edi class-hnd single-def <System.String> ; V02 tmp0 [V02,T02] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V03 tmp1 [V03,T03] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> @@ -28,7 +28,7 @@ G_M8758_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, ;; size=10 bbWeight=1 PerfScore 4.75 G_M8758_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz cmp esi, 250
- jne SHORT G_M8758_IG06
+ jne SHORT G_M8758_IG04
;; size=8 bbWeight=1 PerfScore 1.25 G_M8758_IG03: ; bbWeight=1, epilog, nogc, extend pop ebx @@ -74,17 +74,9 @@ G_M8758_IG05: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 ; gcrRegs +[ecx] call [CORINFO_HELP_THROW] ; gcrRegs -[ecx ebx]
- ;; size=29 bbWeight=0 PerfScore 0.00 -G_M8758_IG06: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[edi] - lea eax, [esi-0x1C3] - cmp eax, 1 - jbe SHORT G_M8758_IG04 - cmp esi, 552 - je SHORT G_M8758_IG04 - jmp SHORT G_M8758_IG04 - ;; size=21 bbWeight=0 PerfScore 0.00
+ int3 + ;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 114, prolog size 6, PerfScore 9.00, instruction count 40, allocated bytes for code 114 (MethodHash=cf4bddc9) for method System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
+; Total bytes of code 94, prolog size 6, PerfScore 9.00, instruction count 35, allocated bytes for code 94 (MethodHash=cf4bddc9) for method System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
; ============================================================

+0 (0.00%) : 88159.dasm - System.Xml.XmlConvert:CreateException(System.String,System.String,int,int,int):System.Exception (FullOpts)

@@ -14,8 +14,8 @@ ; V02 arg2 [V02,T06] ( 1, 1 ) int -> [ebp+0x10] single-def ; V03 arg3 [V03,T07] ( 1, 0.50) int -> [ebp+0x0C] single-def ; V04 arg4 [V04,T08] ( 1, 0.50) int -> [ebp+0x08] single-def
-; V05 tmp0 [V05,T02] ( 3, 3 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V06 tmp1 [V06,T05] ( 2, 2 ) ref -> esi class-hnd single-def "finalizable newobj spill" <System.String>
+; V05 tmp0 [V05,T02] ( 3, 3 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V06 tmp1 [V06,T05] ( 2, 2 ) ref -> edi class-hnd single-def "finalizable newobj spill" <System.String>
; V07 tmp2 [V07,T03] ( 3, 3 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlException> ; V08 tmp3 [V08,T04] ( 3, 3 ) ref -> eax class-hnd exact single-def "dup spill" <System.String[]> ; @@ -34,9 +34,38 @@ G_M23253_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b ;; size=10 bbWeight=1 PerfScore 4.75 G_M23253_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp dword ptr [ebp+0x10], 0
- je SHORT G_M23253_IG05
+ jne SHORT G_M23253_IG05
;; size=6 bbWeight=1 PerfScore 3.00 G_M23253_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ mov ecx, esi + ; gcrRegs +[ecx] + mov edx, edi + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx esi edi] +[eax] + mov edi, eax + ; gcrRegs +[edi] + call [CORINFO_HELP_READYTORUN_NEW] + mov esi, eax + ; gcrRegs +[esi] + mov ecx, esi + ; gcrRegs +[ecx] + mov edx, edi + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[eax ecx edx edi] + mov eax, esi + ; gcrRegs +[eax] + ;; size=32 bbWeight=0.50 PerfScore 5.38 +G_M23253_IG04: ; bbWeight=0.50, epilog, nogc, extend + pop ebx + pop esi + pop edi + pop ebp + ret 12 + ;; size=7 bbWeight=0.50 PerfScore 2.00 +G_M23253_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax] +[edi]
call [CORINFO_HELP_READYTORUN_NEW] ; gcrRegs +[eax] mov ebx, eax @@ -62,35 +91,6 @@ G_M23253_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 mov eax, ebx ; gcrRegs +[eax] ;; size=51 bbWeight=0.50 PerfScore 9.38
-G_M23253_IG04: ; bbWeight=0.50, epilog, nogc, extend - pop ebx - pop esi - pop edi - pop ebp - ret 12 - ;; size=7 bbWeight=0.50 PerfScore 2.00 -G_M23253_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax ebx] +[esi edi] - mov ecx, esi - ; gcrRegs +[ecx] - mov edx, edi - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx esi edi] +[eax] - mov esi, eax - ; gcrRegs +[esi] - call [CORINFO_HELP_READYTORUN_NEW] - mov edi, eax - ; gcrRegs +[edi] - mov ecx, edi - ; gcrRegs +[ecx] - mov edx, esi - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[eax ecx edx esi] - mov eax, edi - ; gcrRegs +[eax] - ;; size=32 bbWeight=0.50 PerfScore 5.38
G_M23253_IG06: ; bbWeight=0.50, epilog, nogc, extend pop ebx pop esi

+16 (+3.80%) : 80049.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)

@@ -48,16 +48,16 @@ G_M57654_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[edi] mov ebx, dword ptr [ebp+0x08] ;; size=14 bbWeight=1 PerfScore 6.75
-G_M57654_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [esi+0x2C] cmp ecx, 10
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG14
lea edx, [reloc @RWD00] mov edx, dword ptr [edx+4*ecx] lea eax, G_M57654_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=1 PerfScore 9.00
+ ;; size=31 bbWeight=1 PerfScore 9.00
G_M57654_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp byte ptr [esi+0x40], 0 jne SHORT G_M57654_IG04 @@ -74,40 +74,27 @@ G_M57654_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 mov eax, dword ptr [eax+0x18] ; gcrRegs -[eax] ;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
dec eax cmp eax, 2
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG14
mov ecx, eax lea edx, [reloc @RWD44] mov edx, dword ptr [edx+4*ecx] lea eax, G_M57654_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=0.50 PerfScore 3.75 -G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi edi] - xor eax, eax - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M57654_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop ecx - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=8 bbWeight=0.50 PerfScore 2.25 -G_M57654_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi]
+ ;; size=31 bbWeight=0.50 PerfScore 3.75 +G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [esi+0x34], -1
- je G_M57654_IG11
+ je G_M57654_IG09
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx] test eax, eax
- je G_M57654_IG11
+ je G_M57654_IG09
push ebx mov ecx, edi ; gcrRegs +[ecx] @@ -115,30 +102,30 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [System.Xml.XmlSubtreeReader:CheckBuffer(System.Array,int,int)] ; gcrRegs -[ecx] test ebx, ebx
- je SHORT G_M57654_IG06
+ je G_M57654_IG14
cmp dword ptr [esi+0x38], 0
- jne SHORT G_M57654_IG10
+ jne SHORT G_M57654_IG08
mov edx, gword ptr [esi+0x1C] ; gcrRegs +[edx] mov gword ptr [ebp-0x10], edx ; GC ptr vars +{V19} test edx, edx
- je SHORT G_M57654_IG09
+ je SHORT G_M57654_IG07
mov ecx, edx ; gcrRegs +[ecx] call [CORINFO_HELP_READYTORUN_ISINSTANCEOF] ; gcrRegs -[ecx edx] +[eax] test eax, eax
- je SHORT G_M57654_IG09
+ je SHORT G_M57654_IG07
mov ecx, gword ptr [ebp-0x10] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx ; GC ptr vars -{V19} call [<unknown method>] ; gcrRegs -[eax ecx]
- jmp SHORT G_M57654_IG10 - ;; size=86 bbWeight=0.50 PerfScore 20.75 -G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M57654_IG08 + ;; size=90 bbWeight=0.50 PerfScore 20.75 +G_M57654_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
call [CORINFO_HELP_READYTORUN_NEW] ; gcrRegs +[eax] lea edx, bword ptr [esi+0x1C] @@ -147,13 +134,13 @@ G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax] ; byrRegs -[edx] ;; size=15 bbWeight=0.50 PerfScore 3.25
-G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x38] mov edx, gword ptr [esi+0x20] ; gcrRegs +[edx] mov edx, gword ptr [edx+0x14] cmp ecx, dword ptr [edx+0x04]
- je SHORT G_M57654_IG06
+ je G_M57654_IG14
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -188,9 +175,9 @@ G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [<unknown method>] ; gcrRegs -[ecx esi] mov edi, eax
- jmp SHORT G_M57654_IG14 - ;; size=82 bbWeight=0.50 PerfScore 25.25 -G_M57654_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M57654_IG12 + ;; size=86 bbWeight=0.50 PerfScore 25.25 +G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi edi] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] @@ -202,13 +189,13 @@ G_M57654_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [<unknown method>] ; gcrRegs -[ecx edx esi edi] mov edi, eax
- jmp SHORT G_M57654_IG14
+ jmp SHORT G_M57654_IG12
;; size=21 bbWeight=0.50 PerfScore 6.25
-G_M57654_IG12: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi edi] mov dword ptr [esi+0x2C], 10 ;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M57654_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -220,16 +207,27 @@ G_M57654_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[ecx edx edi] mov edi, eax test edi, edi
- jne SHORT G_M57654_IG14
+ jne SHORT G_M57654_IG12
mov dword ptr [esi+0x2C], 1 mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx esi] ;; size=38 bbWeight=0.50 PerfScore 8.00
-G_M57654_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M57654_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, edi ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=8 bbWeight=0.50 PerfScore 2.25 +G_M57654_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M57654_IG15: ; bbWeight=0.50, epilog, nogc, extend pop ecx pop ebx @@ -272,22 +270,22 @@ G_M57654_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs -[ecx edi] int3 ;; size=35 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M57654_IG06 - G_M57654_IG02 - dd G_M57654_IG12 - G_M57654_IG02 - dd G_M57654_IG06 - G_M57654_IG02 - dd G_M57654_IG06 - G_M57654_IG02 - dd G_M57654_IG06 - G_M57654_IG02
+RWD00 dd G_M57654_IG14 - G_M57654_IG02 + dd G_M57654_IG10 - G_M57654_IG02 + dd G_M57654_IG14 - G_M57654_IG02 + dd G_M57654_IG14 - G_M57654_IG02 + dd G_M57654_IG14 - G_M57654_IG02
dd G_M57654_IG03 - G_M57654_IG02 dd G_M57654_IG03 - G_M57654_IG02 dd G_M57654_IG17 - G_M57654_IG02 dd G_M57654_IG17 - G_M57654_IG02 dd G_M57654_IG17 - G_M57654_IG02
- dd G_M57654_IG13 - G_M57654_IG02 -RWD44 dd G_M57654_IG16 - G_M57654_IG02 - dd G_M57654_IG08 - G_M57654_IG02
dd G_M57654_IG11 - G_M57654_IG02
+RWD44 dd G_M57654_IG16 - G_M57654_IG02 + dd G_M57654_IG06 - G_M57654_IG02 + dd G_M57654_IG09 - G_M57654_IG02
-; Total bytes of code 421, prolog size 7, PerfScore 97.25, instruction count 145, allocated bytes for code 421 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
+; Total bytes of code 437, prolog size 7, PerfScore 97.25, instruction count 145, allocated bytes for code 437 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
; ============================================================

+16 (+3.80%) : 80047.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)

@@ -48,16 +48,16 @@ G_M11729_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[edi] mov ebx, dword ptr [ebp+0x08] ;; size=14 bbWeight=1 PerfScore 6.75
-G_M11729_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [esi+0x2C] cmp ecx, 10
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG14
lea edx, [reloc @RWD00] mov edx, dword ptr [edx+4*ecx] lea eax, G_M11729_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=1 PerfScore 9.00
+ ;; size=31 bbWeight=1 PerfScore 9.00
G_M11729_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp byte ptr [esi+0x40], 0 jne SHORT G_M11729_IG04 @@ -74,40 +74,27 @@ G_M11729_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 mov eax, dword ptr [eax+0x18] ; gcrRegs -[eax] ;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
dec eax cmp eax, 2
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG14
mov ecx, eax lea edx, [reloc @RWD44] mov edx, dword ptr [edx+4*ecx] lea eax, G_M11729_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=0.50 PerfScore 3.75 -G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi edi] - xor eax, eax - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M11729_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop ecx - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=8 bbWeight=0.50 PerfScore 2.25 -G_M11729_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi]
+ ;; size=31 bbWeight=0.50 PerfScore 3.75 +G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [esi+0x34], -1
- je G_M11729_IG11
+ je G_M11729_IG09
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx] test eax, eax
- je G_M11729_IG11
+ je G_M11729_IG09
push ebx mov ecx, edi ; gcrRegs +[ecx] @@ -115,30 +102,30 @@ G_M11729_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [System.Xml.XmlSubtreeReader:CheckBuffer(System.Array,int,int)] ; gcrRegs -[ecx] test ebx, ebx
- je SHORT G_M11729_IG06
+ je G_M11729_IG14
cmp dword ptr [esi+0x38], 0
- jne SHORT G_M11729_IG10
+ jne SHORT G_M11729_IG08
mov edx, gword ptr [esi+0x1C] ; gcrRegs +[edx] mov gword ptr [ebp-0x10], edx ; GC ptr vars +{V19} test edx, edx
- je SHORT G_M11729_IG09
+ je SHORT G_M11729_IG07
mov ecx, edx ; gcrRegs +[ecx] call [CORINFO_HELP_READYTORUN_ISINSTANCEOF] ; gcrRegs -[ecx edx] +[eax] test eax, eax
- je SHORT G_M11729_IG09
+ je SHORT G_M11729_IG07
mov ecx, gword ptr [ebp-0x10] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx ; GC ptr vars -{V19} call [<unknown method>] ; gcrRegs -[eax ecx]
- jmp SHORT G_M11729_IG10 - ;; size=86 bbWeight=0.50 PerfScore 20.75 -G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M11729_IG08 + ;; size=90 bbWeight=0.50 PerfScore 20.75 +G_M11729_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
call [CORINFO_HELP_READYTORUN_NEW] ; gcrRegs +[eax] lea edx, bword ptr [esi+0x1C] @@ -147,13 +134,13 @@ G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax] ; byrRegs -[edx] ;; size=15 bbWeight=0.50 PerfScore 3.25
-G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x38] mov edx, gword ptr [esi+0x20] ; gcrRegs +[edx] mov edx, gword ptr [edx+0x14] cmp ecx, dword ptr [edx+0x04]
- je SHORT G_M11729_IG06
+ je G_M11729_IG14
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -188,9 +175,9 @@ G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [<unknown method>] ; gcrRegs -[ecx esi] mov edi, eax
- jmp SHORT G_M11729_IG14 - ;; size=82 bbWeight=0.50 PerfScore 25.25 -G_M11729_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M11729_IG12 + ;; size=86 bbWeight=0.50 PerfScore 25.25 +G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi edi] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] @@ -202,13 +189,13 @@ G_M11729_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [<unknown method>] ; gcrRegs -[ecx edx esi edi] mov edi, eax
- jmp SHORT G_M11729_IG14
+ jmp SHORT G_M11729_IG12
;; size=21 bbWeight=0.50 PerfScore 6.25
-G_M11729_IG12: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi edi] mov dword ptr [esi+0x2C], 9 ;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M11729_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -220,16 +207,27 @@ G_M11729_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[ecx edx edi] mov edi, eax test edi, edi
- jne SHORT G_M11729_IG14
+ jne SHORT G_M11729_IG12
mov dword ptr [esi+0x2C], 1 mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx esi] ;; size=38 bbWeight=0.50 PerfScore 8.00
-G_M11729_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M11729_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, edi ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M11729_IG13: ; bbWeight=0.50, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=8 bbWeight=0.50 PerfScore 2.25 +G_M11729_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M11729_IG15: ; bbWeight=0.50, epilog, nogc, extend pop ecx pop ebx @@ -272,22 +270,22 @@ G_M11729_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs -[ecx edi] int3 ;; size=35 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M11729_IG06 - G_M11729_IG02 - dd G_M11729_IG12 - 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_IG14 - G_M11729_IG02 + dd G_M11729_IG10 - G_M11729_IG02 + dd G_M11729_IG14 - G_M11729_IG02 + dd G_M11729_IG14 - G_M11729_IG02 + dd G_M11729_IG14 - G_M11729_IG02
dd G_M11729_IG03 - G_M11729_IG02 dd G_M11729_IG03 - G_M11729_IG02 dd G_M11729_IG17 - G_M11729_IG02 dd G_M11729_IG17 - G_M11729_IG02
- dd G_M11729_IG13 - G_M11729_IG02
+ dd G_M11729_IG11 - G_M11729_IG02
dd G_M11729_IG17 - G_M11729_IG02 RWD44 dd G_M11729_IG16 - G_M11729_IG02
- dd G_M11729_IG08 - G_M11729_IG02 - dd G_M11729_IG11 - G_M11729_IG02
+ dd G_M11729_IG06 - G_M11729_IG02 + dd G_M11729_IG09 - G_M11729_IG02
-; Total bytes of code 421, prolog size 7, PerfScore 97.25, instruction count 145, allocated bytes for code 421 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
+; Total bytes of code 437, prolog size 7, PerfScore 97.25, instruction count 145, allocated bytes for code 437 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
; ============================================================

libraries.pmi.windows.x86.checked.mch

-7 (-41.18%) : 243535.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)

@@ -2,7 +2,7 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible ; No matching PGO data ; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data @@ -15,9 +15,7 @@ ; Lcl frame size = 0 G_M40773_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp - ;; size=3 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M40773_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx] test dl, dl @@ -25,16 +23,14 @@ G_M40773_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 ;; size=4 bbWeight=1 PerfScore 1.25 G_M40773_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc ; gcrRegs -[ecx]
- pop ebp
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M40773_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs +[ecx]
- cmp gword ptr [ecx+0x08], 0 - je SHORT G_M40773_IG03
+ mov eax, dword ptr [ecx+0x08]
jmp SHORT G_M40773_IG03
- ;; size=8 bbWeight=0.50 PerfScore 3.00
+ ;; size=5 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 17, prolog size 3, PerfScore 7.00, instruction count 9, allocated bytes for code 17 (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)
; ============================================================

-19 (-37.25%) : 255496.dasm - System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 3.50) int -> ecx single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) int -> ecx single-def
; V01 loc0 [V01,T02] ( 3, 2 ) ubyte -> eax
-; V02 rat0 [V02,T00] ( 3, 6 ) int -> eax "ReplaceWithLclVar is creating a new local variable"
+; V02 rat0 [V02,T00] ( 3, 6 ) int -> ecx "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0 @@ -18,54 +18,25 @@ G_M3102_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25 G_M3102_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- lea eax, [ecx-0x02] - cmp eax, 19 - ja SHORT G_M3102_IG03 - lea edx, [@RWD00] - mov edx, dword ptr [edx+4*eax] - lea ecx, G_M3102_IG02 - add edx, ecx - jmp edx - ;; size=27 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=00000000 {}, byrefRegs=00000000 {}, 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=00000000 {}, byrefRegs=00000000 {}, 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=00000000 {}, byrefRegs=00000000 {}, byref
+G_M3102_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3102_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M3102_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-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 51, prolog size 3, PerfScore 13.25, instruction count 19, allocated bytes for code 51 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
+; Total bytes of code 32, prolog size 3, PerfScore 7.25, instruction count 13, allocated bytes for code 32 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
; ============================================================

-30 (-21.74%) : 260685.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 -> esi single-def
+; V00 arg0 [V00,T00] ( 6, 4 ) int -> esi single-def
; V01 arg1 [V01,T01] ( 4, 2 ) ref -> edi class-hnd single-def <System.String> ; V02 tmp0 [V02,T02] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V03 tmp1 [V03,T03] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> @@ -27,9 +27,9 @@ G_M20631_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=10 bbWeight=1 PerfScore 4.75 G_M20631_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz cmp esi, 452
- jg SHORT G_M20631_IG07
+ jg SHORT G_M20631_IG04
cmp esi, 250
- jne SHORT G_M20631_IG06
+ jne SHORT G_M20631_IG04
;; size=16 bbWeight=1 PerfScore 2.50 G_M20631_IG03: ; bbWeight=1, epilog, nogc, extend pop ebx @@ -77,22 +77,9 @@ G_M20631_IG05: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 ; gcrRegs +[ecx] call CORINFO_HELP_THROW ; gcrRegs -[ecx ebx]
- ;; size=32 bbWeight=0 PerfScore 0.00 -G_M20631_IG06: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[edi] - lea ecx, [esi-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=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - cmp esi, 552 - je SHORT G_M20631_IG04 - cmp esi, 554 - je SHORT G_M20631_IG04 - jmp SHORT G_M20631_IG04 - ;; size=18 bbWeight=0 PerfScore 0.00
+ int3 + ;; size=33 bbWeight=0 PerfScore 0.00
-; Total bytes of code 138, prolog size 6, PerfScore 10.25, instruction count 47, allocated bytes for code 138 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
+; Total bytes of code 108, prolog size 6, PerfScore 10.25, instruction count 39, allocated bytes for code 108 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
; ============================================================

+14 (+2.11%) : 82904.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertyAccessorSymbol:GetReturnType(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceModuleSymbol,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)

@@ -66,7 +66,7 @@ ; V55 tmp47 [V55,T12] ( 5, 2.50) ref -> eax ; V56 tmp48 [V56,T02] ( 5, 5 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V57 tmp49 [V57,T07] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V58 tmp50 [V58,T44] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V58 tmp50 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V59 tmp51 [V59,T30] ( 2, 1 ) ubyte -> eax "Inline return value spill temp" ;* V60 tmp52 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.DiagnosticInfo> ;* V61 tmp53 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>> @@ -99,8 +99,8 @@ ;* V88 tmp80 [V88 ] ( 0, 0 ) int -> zero-ref single-def "field V51.<Start>k__BackingField (fldOffset=0x0)" P-INDEP ;* V89 tmp81 [V89 ] ( 0, 0 ) int -> zero-ref single-def "field V51.<Length>k__BackingField (fldOffset=0x4)" P-INDEP ; V90 tmp82 [V90,T16] ( 4, 2 ) ref -> [ebp-0x24] spill-single-def "field V54.DiagnosticInfo (fldOffset=0x0)" P-INDEP
-; V91 tmp83 [V91,T25] ( 3, 1.50) ref -> [ebp-0x28] spill-single-def "field V54.PrimaryDependency (fldOffset=0x4)" P-INDEP -; V92 tmp84 [V92,T37] ( 2, 1 ) ref -> edi single-def "field V54.SecondaryDependencies (fldOffset=0x8)" P-INDEP
+; V91 tmp83 [V91,T25] ( 3, 1.50) ref -> [ebp-0x28] single-def "field V54.PrimaryDependency (fldOffset=0x4)" P-INDEP +; V92 tmp84 [V92,T37] ( 2, 1 ) ref -> registers single-def "field V54.SecondaryDependencies (fldOffset=0x8)" P-INDEP
;* V93 tmp85 [V93 ] ( 0, 0 ) ref -> zero-ref single-def "V13.[000..004)" ;* V94 tmp86 [V94 ] ( 0, 0 ) ref -> zero-ref single-def "V13.[004..008)" ;* V95 tmp87 [V95 ] ( 0, 0 ) int -> zero-ref single-def "V13.[008..012)" @@ -112,7 +112,7 @@ ;* V101 tmp93 [V101,T42] ( 0, 0 ) ref -> zero-ref single-def "V34.[000..004)" ;* V102 tmp94 [V102,T43] ( 0, 0 ) ref -> zero-ref single-def "V34.[004..008)" ;* V103 tmp95 [V103 ] ( 0, 0 ) int -> zero-ref single-def "V34.[008..012)"
-;* V104 tmp96 [V104,T45] ( 0, 0 ) int -> zero-ref single-def "V34.[012..016)"
+;* V104 tmp96 [V104,T44] ( 0, 0 ) int -> zero-ref single-def "V34.[012..016)"
;* V105 tmp97 [V105 ] ( 0, 0 ) ref -> zero-ref single-def "V22.[000..004)" ;* V106 tmp98 [V106 ] ( 0, 0 ) ref -> zero-ref single-def "V22.[004..008)" ;* V107 tmp99 [V107 ] ( 0, 0 ) int -> zero-ref single-def "V22.[008..012)" @@ -124,8 +124,8 @@ ; V113 tmp105 [V113,T21] ( 2, 2 ) int -> edx "argument with side effect" ; V114 tmp106 [V114,T20] ( 2, 2 ) ref -> edi single-def "argument with side effect" ; V115 tmp107 [V115,T08] ( 3, 3 ) ref -> ecx single-def "argument with side effect"
-; V116 tmp108 [V116,T47] ( 2, 0 ) ref -> ecx single-def "argument with side effect" -;* V117 cse0 [V117,T46] ( 0, 0 ) int -> zero-ref "CSE - conservative"
+; V116 tmp108 [V116,T46] ( 2, 0 ) ref -> ecx single-def "argument with side effect" +;* V117 cse0 [V117,T45] ( 0, 0 ) int -> zero-ref "CSE - conservative"
; V118 cse1 [V118,T32] ( 3, 1.50) int -> edi "CSE - conservative" ; V119 cse2 [V119,T27] ( 3, 1.50) ref -> ecx "CSE - conservative" ; V120 cse3 [V120,T28] ( 3, 1.50) ref -> ecx "CSE - conservative" @@ -162,7 +162,7 @@ G_M60394_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= ;; size=19 bbWeight=1 PerfScore 7.50 G_M60394_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref cmp eax, 12
- jne G_M60394_IG30
+ jne G_M60394_IG31
mov ecx, gword ptr [esi+0x14] ; gcrRegs +[ecx] test ecx, ecx @@ -232,7 +232,7 @@ G_M60394_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe cmp dword ptr [ebp-0x1C], 0 jl G_M60394_IG25 test byte ptr [D1FFAB1EH], 1 ; global ptr
- je G_M60394_IG31
+ je G_M60394_IG32
;; size=67 bbWeight=0.50 PerfScore 11.38 G_M60394_IG07: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref ; gcrRegs -[ecx esi] @@ -264,7 +264,7 @@ G_M60394_IG08: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=0 mov ecx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ecx] test ecx, ecx
- je G_M60394_IG32
+ je G_M60394_IG33
lea edx, bword ptr [eax+0x04] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_ECX @@ -482,17 +482,30 @@ G_M60394_IG28: ; bbWeight=0.50, gcVars=0000000002810000 {V26 V90 V91}, gc mov edi, gword ptr [ebp-0x20] jmp G_M60394_IG12 ;; size=21 bbWeight=0.50 PerfScore 4.00
-G_M60394_IG29: ; bbWeight=0.50, gcVars=0000000002800000 {V26 V91}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M60394_IG29: ; bbWeight=0.50, gcVars=0000000002800000 {V26 V91}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[edx] ; GC ptr vars -{V16 V90} test eax, eax
- je G_M60394_IG10
+ jne SHORT G_M60394_IG30 + mov ecx, edi + ; gcrRegs +[ecx] + mov esi, gword ptr [ebp-0x28] + ; gcrRegs +[esi]
mov edi, gword ptr [ebp-0x20]
+ mov gword ptr [ebp-0x28], esi + mov edi, ecx + jmp G_M60394_IG10 + ;; size=22 bbWeight=0.50 PerfScore 3.38 +G_M60394_IG30: ; bbWeight=0.25, gcVars=0000000000800000 {V26}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[ecx ebx esi edi] + ; GC ptr vars -{V91} + mov edi, gword ptr [ebp-0x20] + ; gcrRegs +[edi]
jmp G_M60394_IG12
- ;; size=16 bbWeight=0.50 PerfScore 2.12 -G_M60394_IG30: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[ebx edi] - ; GC ptr vars -{V26 V91}
+ ;; size=8 bbWeight=0.25 PerfScore 0.75 +G_M60394_IG31: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[edi] + ; GC ptr vars -{V26}
mov ecx, 0x3070 mov edx, 0xD1FFAB1E call CORINFO_HELP_STRCNS @@ -507,7 +520,7 @@ G_M60394_IG30: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=000000 call CORINFO_HELP_THROW ; gcrRegs -[eax ecx] ;; size=35 bbWeight=0 PerfScore 0.00
-G_M60394_IG31: ; bbWeight=0, gcVars=0000000000800000 {V26}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+G_M60394_IG32: ; bbWeight=0, gcVars=0000000000800000 {V26}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ebx] ; GC ptr vars +{V26} mov ecx, 0xD1FFAB1E @@ -515,13 +528,13 @@ G_M60394_IG31: ; bbWeight=0, gcVars=0000000000800000 {V26}, gcrefRegs=000 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE jmp G_M60394_IG07 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M60394_IG32: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M60394_IG33: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx] ; GC ptr vars -{V26} call [System.MulticastDelegate:ThrowNullThisInDelegateToInstance()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 665, prolog size 20, PerfScore 123.00, instruction count 205, allocated bytes for code 665 (MethodHash=89851415) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertyAccessorSymbol:GetReturnType(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceModuleSymbol,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
+; Total bytes of code 679, prolog size 20, PerfScore 125.00, instruction count 211, allocated bytes for code 679 (MethodHash=89851415) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertyAccessorSymbol:GetReturnType(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceModuleSymbol,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
; ============================================================

+16 (+3.80%) : 167237.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)

@@ -54,16 +54,16 @@ G_M11729_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[edi] mov ebx, dword ptr [ebp+0x08] ;; size=13 bbWeight=1 PerfScore 5.75
-G_M11729_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [esi+0x2C] cmp ecx, 10
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG14
lea edx, [@RWD00] mov edx, dword ptr [edx+4*ecx] lea eax, G_M11729_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=1 PerfScore 9.00
+ ;; size=31 bbWeight=1 PerfScore 9.00
G_M11729_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp byte ptr [esi+0x40], 0 jne SHORT G_M11729_IG04 @@ -81,32 +81,20 @@ G_M11729_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 mov eax, dword ptr [eax+0x18] ; gcrRegs -[eax] ;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
dec eax cmp eax, 2
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG14
mov ecx, eax lea edx, [@RWD44] mov edx, dword ptr [edx+4*ecx] lea eax, G_M11729_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=0.50 PerfScore 3.75 -G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi edi] - xor eax, eax - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M11729_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=7 bbWeight=0.50 PerfScore 2.00 -G_M11729_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi]
+ ;; size=31 bbWeight=0.50 PerfScore 3.75 +G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [esi+0x34], -1
- je G_M11729_IG11
+ je G_M11729_IG09
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] mov eax, dword ptr [ecx] @@ -114,7 +102,7 @@ G_M11729_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [eax+0x0C]<unknown method> ; gcrRegs -[ecx] test eax, eax
- je G_M11729_IG11
+ je G_M11729_IG09
push ebx mov ecx, edi ; gcrRegs +[ecx] @@ -122,25 +110,25 @@ G_M11729_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [System.Xml.XmlSubtreeReader:CheckBuffer(System.Array,int,int)] ; gcrRegs -[ecx] test ebx, ebx
- je SHORT G_M11729_IG06
+ je G_M11729_IG14
cmp dword ptr [esi+0x38], 0
- jne SHORT G_M11729_IG10
+ jne SHORT G_M11729_IG08
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M11729_IG09
+ je SHORT G_M11729_IG07
mov edx, ecx ; gcrRegs +[edx] mov edx, dword ptr [edx] ; gcrRegs -[edx] cmp edx, 0xD1FFAB1E
- jne SHORT G_M11729_IG09
+ jne SHORT G_M11729_IG07
mov edx, dword ptr [edx+0x30] call [edx+0x04]<unknown method> ; gcrRegs -[ecx]
- jmp SHORT G_M11729_IG10 - ;; size=78 bbWeight=0.50 PerfScore 19.25 -G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M11729_IG08 + ;; size=82 bbWeight=0.50 PerfScore 19.25 +G_M11729_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; System.Xml.Base64Decoder call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] @@ -150,13 +138,13 @@ G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax] ; byrRegs -[edx] ;; size=18 bbWeight=0.50 PerfScore 1.38
-G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x38] mov edx, gword ptr [esi+0x20] ; gcrRegs +[edx] mov edx, gword ptr [edx+0x14] cmp ecx, dword ptr [edx+0x04]
- je SHORT G_M11729_IG06
+ je G_M11729_IG14
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -195,9 +183,9 @@ G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [eax+0x10]<unknown method> ; gcrRegs -[ecx esi] mov edi, eax
- jmp SHORT G_M11729_IG14 - ;; size=81 bbWeight=0.50 PerfScore 26.75 -G_M11729_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M11729_IG12 + ;; size=85 bbWeight=0.50 PerfScore 26.75 +G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi edi] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] @@ -210,13 +198,13 @@ G_M11729_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [eax+0x10]<unknown method> ; gcrRegs -[ecx edx esi edi] mov edi, eax
- jmp SHORT G_M11729_IG14
+ jmp SHORT G_M11729_IG12
;; size=21 bbWeight=0.50 PerfScore 6.75
-G_M11729_IG12: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi edi] mov dword ptr [esi+0x2C], 9 ;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M11729_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -229,16 +217,26 @@ G_M11729_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[ecx edx edi] mov edi, eax test edi, edi
- jne SHORT G_M11729_IG14
+ jne SHORT G_M11729_IG12
mov dword ptr [esi+0x2C], 1 mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx esi] ;; size=38 bbWeight=0.50 PerfScore 8.50
-G_M11729_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M11729_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, edi ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M11729_IG13: ; bbWeight=0.50, epilog, nogc, extend + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=7 bbWeight=0.50 PerfScore 2.00 +G_M11729_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M11729_IG15: ; bbWeight=0.50, epilog, nogc, extend pop ebx pop esi @@ -282,22 +280,22 @@ G_M11729_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs -[ecx esi] int3 ;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M11729_IG06 - G_M11729_IG02 - dd G_M11729_IG12 - 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_IG14 - G_M11729_IG02 + dd G_M11729_IG10 - G_M11729_IG02 + dd G_M11729_IG14 - G_M11729_IG02 + dd G_M11729_IG14 - G_M11729_IG02 + dd G_M11729_IG14 - G_M11729_IG02
dd G_M11729_IG03 - G_M11729_IG02 dd G_M11729_IG03 - G_M11729_IG02 dd G_M11729_IG17 - G_M11729_IG02 dd G_M11729_IG17 - G_M11729_IG02
- dd G_M11729_IG13 - G_M11729_IG02
+ dd G_M11729_IG11 - G_M11729_IG02
dd G_M11729_IG17 - G_M11729_IG02 RWD44 dd G_M11729_IG16 - G_M11729_IG02
- dd G_M11729_IG08 - G_M11729_IG02 - dd G_M11729_IG11 - G_M11729_IG02
+ dd G_M11729_IG06 - G_M11729_IG02 + dd G_M11729_IG09 - G_M11729_IG02
-; Total bytes of code 421, prolog size 6, PerfScore 95.38, instruction count 150, allocated bytes for code 421 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
+; Total bytes of code 437, prolog size 6, PerfScore 95.38, instruction count 150, allocated bytes for code 437 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
; ============================================================

+16 (+3.80%) : 167239.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)

@@ -54,16 +54,16 @@ G_M57654_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[edi] mov ebx, dword ptr [ebp+0x08] ;; size=13 bbWeight=1 PerfScore 5.75
-G_M57654_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [esi+0x2C] cmp ecx, 10
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG14
lea edx, [@RWD00] mov edx, dword ptr [edx+4*ecx] lea eax, G_M57654_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=1 PerfScore 9.00
+ ;; size=31 bbWeight=1 PerfScore 9.00
G_M57654_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp byte ptr [esi+0x40], 0 jne SHORT G_M57654_IG04 @@ -81,32 +81,20 @@ G_M57654_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 mov eax, dword ptr [eax+0x18] ; gcrRegs -[eax] ;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
dec eax cmp eax, 2
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG14
mov ecx, eax lea edx, [@RWD44] mov edx, dword ptr [edx+4*ecx] lea eax, G_M57654_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=0.50 PerfScore 3.75 -G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi edi] - xor eax, eax - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M57654_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=7 bbWeight=0.50 PerfScore 2.00 -G_M57654_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi]
+ ;; size=31 bbWeight=0.50 PerfScore 3.75 +G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [esi+0x34], -1
- je G_M57654_IG11
+ je G_M57654_IG09
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] mov eax, dword ptr [ecx] @@ -114,7 +102,7 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [eax+0x0C]<unknown method> ; gcrRegs -[ecx] test eax, eax
- je G_M57654_IG11
+ je G_M57654_IG09
push ebx mov ecx, edi ; gcrRegs +[ecx] @@ -122,25 +110,25 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [System.Xml.XmlSubtreeReader:CheckBuffer(System.Array,int,int)] ; gcrRegs -[ecx] test ebx, ebx
- je SHORT G_M57654_IG06
+ je G_M57654_IG14
cmp dword ptr [esi+0x38], 0
- jne SHORT G_M57654_IG10
+ jne SHORT G_M57654_IG08
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M57654_IG09
+ je SHORT G_M57654_IG07
mov edx, ecx ; gcrRegs +[edx] mov edx, dword ptr [edx] ; gcrRegs -[edx] cmp edx, 0xD1FFAB1E
- jne SHORT G_M57654_IG09
+ jne SHORT G_M57654_IG07
mov edx, dword ptr [edx+0x30] call [edx+0x04]<unknown method> ; gcrRegs -[ecx]
- jmp SHORT G_M57654_IG10 - ;; size=78 bbWeight=0.50 PerfScore 19.25 -G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M57654_IG08 + ;; size=82 bbWeight=0.50 PerfScore 19.25 +G_M57654_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; System.Xml.BinHexDecoder call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] @@ -150,13 +138,13 @@ G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax] ; byrRegs -[edx] ;; size=18 bbWeight=0.50 PerfScore 1.38
-G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x38] mov edx, gword ptr [esi+0x20] ; gcrRegs +[edx] mov edx, gword ptr [edx+0x14] cmp ecx, dword ptr [edx+0x04]
- je SHORT G_M57654_IG06
+ je G_M57654_IG14
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -195,9 +183,9 @@ G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [eax+0x10]<unknown method> ; gcrRegs -[ecx esi] mov edi, eax
- jmp SHORT G_M57654_IG14 - ;; size=81 bbWeight=0.50 PerfScore 26.75 -G_M57654_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M57654_IG12 + ;; size=85 bbWeight=0.50 PerfScore 26.75 +G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi edi] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] @@ -210,13 +198,13 @@ G_M57654_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [eax+0x18]<unknown method> ; gcrRegs -[ecx edx esi edi] mov edi, eax
- jmp SHORT G_M57654_IG14
+ jmp SHORT G_M57654_IG12
;; size=21 bbWeight=0.50 PerfScore 6.75
-G_M57654_IG12: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi edi] mov dword ptr [esi+0x2C], 10 ;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M57654_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -229,16 +217,26 @@ G_M57654_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[ecx edx edi] mov edi, eax test edi, edi
- jne SHORT G_M57654_IG14
+ jne SHORT G_M57654_IG12
mov dword ptr [esi+0x2C], 1 mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx esi] ;; size=38 bbWeight=0.50 PerfScore 8.50
-G_M57654_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M57654_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, edi ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=7 bbWeight=0.50 PerfScore 2.00 +G_M57654_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M57654_IG15: ; bbWeight=0.50, epilog, nogc, extend pop ebx pop esi @@ -282,22 +280,22 @@ G_M57654_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs -[ecx esi] int3 ;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M57654_IG06 - G_M57654_IG02 - dd G_M57654_IG12 - G_M57654_IG02 - dd G_M57654_IG06 - G_M57654_IG02 - dd G_M57654_IG06 - G_M57654_IG02 - dd G_M57654_IG06 - G_M57654_IG02
+RWD00 dd G_M57654_IG14 - G_M57654_IG02 + dd G_M57654_IG10 - G_M57654_IG02 + dd G_M57654_IG14 - G_M57654_IG02 + dd G_M57654_IG14 - G_M57654_IG02 + dd G_M57654_IG14 - G_M57654_IG02
dd G_M57654_IG03 - G_M57654_IG02 dd G_M57654_IG03 - G_M57654_IG02 dd G_M57654_IG17 - G_M57654_IG02 dd G_M57654_IG17 - G_M57654_IG02 dd G_M57654_IG17 - G_M57654_IG02
- dd G_M57654_IG13 - G_M57654_IG02 -RWD44 dd G_M57654_IG16 - G_M57654_IG02 - dd G_M57654_IG08 - G_M57654_IG02
dd G_M57654_IG11 - G_M57654_IG02
+RWD44 dd G_M57654_IG16 - G_M57654_IG02 + dd G_M57654_IG06 - G_M57654_IG02 + dd G_M57654_IG09 - G_M57654_IG02
-; Total bytes of code 421, prolog size 6, PerfScore 95.38, instruction count 150, allocated bytes for code 421 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
+; Total bytes of code 437, prolog size 6, PerfScore 95.38, instruction count 150, allocated bytes for code 437 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
; ============================================================

libraries_tests.run.windows.x86.Release.mch

-35 (-48.61%) : 548654.dasm - System.Text.Json.JsonSerializerOptions:ConfigureForJsonSerializer():this (Tier1)

@@ -10,14 +10,13 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 5.91) ref -> esi this class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-; V01 loc0 [V01,T02] ( 2, 1.91) ref -> eax class-hnd single-def <System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver>
+; V01 loc0 [V01,T01] ( 2, 1.91) ref -> eax 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] ( 4, 2.10) ref -> edx 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 tmp0 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver[]>
-; V08 rat0 [V08,T03] ( 6, 0.71) ref -> eax class-hnd "replacement local" <<unknown class>>
; ; Lcl frame size = 0 @@ -31,13 +30,10 @@ G_M49072_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} G_M49072_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz call [System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:get_DefaultInstance():System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver] ; gcrRegs +[eax]
- mov edx, gword ptr [esi+0x10] - ; gcrRegs +[edx] - test edx, edx - jne SHORT G_M49072_IG06 - ;; size=13 bbWeight=1 PerfScore 6.25
+ cmp gword ptr [esi+0x10], 0 + jne SHORT G_M49072_IG04 + ;; size=12 bbWeight=1 PerfScore 7.00
G_M49072_IG03: ; bbWeight=0.91, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
lea edx, bword ptr [esi+0x10] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EAX @@ -53,38 +49,7 @@ G_M49072_IG05: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=3 bbWeight=1 PerfScore 2.00
-G_M49072_IG06: ; bbWeight=0.09, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[edx] - mov eax, edx - ; gcrRegs +[eax] - test eax, eax - je SHORT G_M49072_IG10 - ;; size=6 bbWeight=0.09 PerfScore 0.13 -G_M49072_IG07: ; bbWeight=0.04, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz - cmp dword ptr [eax], 0xD1FFAB1E - je SHORT G_M49072_IG09 - ;; size=8 bbWeight=0.04 PerfScore 0.18 -G_M49072_IG08: ; bbWeight=0.01, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] - mov ecx, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[edx] +[eax] - jmp SHORT G_M49072_IG10 - ;; size=12 bbWeight=0.01 PerfScore 0.05 -G_M49072_IG09: ; bbWeight=0.03, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax] - xor eax, eax - ; gcrRegs +[eax] - ;; size=2 bbWeight=0.03 PerfScore 0.01 -G_M49072_IG10: ; bbWeight=0.09, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz - test eax, eax - jne SHORT G_M49072_IG04 - ;; size=4 bbWeight=0.09 PerfScore 0.11 -G_M49072_IG11: ; bbWeight=0.09, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] - jmp SHORT G_M49072_IG04 - ;; size=2 bbWeight=0.09 PerfScore 0.17
-; Total bytes of code 72, prolog size 4, PerfScore 14.77, instruction count 27, allocated bytes for code 72 (MethodHash=7b2a404f) for method System.Text.Json.JsonSerializerOptions:ConfigureForJsonSerializer():this (Tier1)
+; Total bytes of code 37, prolog size 4, PerfScore 14.87, instruction count 14, allocated bytes for code 37 (MethodHash=7b2a404f) for method System.Text.Json.JsonSerializerOptions:ConfigureForJsonSerializer():this (Tier1)
; ============================================================

-37 (-37.76%) : 153769.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)

@@ -11,29 +11,28 @@ ; ; V00 this [V00,T00] ( 7, 6 ) ref -> ecx this class-hnd single-def <Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]> ; V01 arg1 [V01,T01] ( 5, 5 ) ref -> eax class-hnd single-def <System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]>
-; V02 tmp0 [V02,T02] ( 8, 4 ) int -> esi "Inline stloc first use temp"
+; V02 tmp0 [V02,T02] ( 4, 4 ) int -> edx "Inline stloc first use temp"
;* V03 tmp1 [V03,T03] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; ; Lcl frame size = 0
-G_M46606_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M46606_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
- push esi
mov eax, edx ; gcrRegs +[eax]
- ;; size=6 bbWeight=1 PerfScore 2.50
+ ;; size=5 bbWeight=1 PerfScore 1.50
G_M46606_IG02: ; bbWeight=1, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx] cmp gword ptr [ecx+0x0C], 0 jne SHORT G_M46606_IG05
- mov esi, dword ptr [eax+0x1C] - test esi, 0xD1FFAB1E
+ mov edx, dword ptr [eax+0x1C] + test edx, 0xD1FFAB1E
jne SHORT G_M46606_IG04
- test esi, 0xD1FFAB1E
+ test edx, 0xD1FFAB1E
jne SHORT G_M46606_IG04
- test esi, 0xD1FFAB1E - je SHORT G_M46606_IG07
+ test edx, 0xD1FFAB1E + je SHORT G_M46606_IG04
lea edx, bword ptr [ecx+0x0C] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EAX @@ -48,33 +47,19 @@ G_M46606_IG03: ; bbWeight=1, gcrefRegs=00000003 {eax ecx}, byrefRegs=0000 ;; size=3 bbWeight=1 PerfScore 1.00 G_M46606_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc ; gcrRegs -[ecx]
- pop esi
pop ebp ret
- ;; size=3 bbWeight=1 PerfScore 2.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
G_M46606_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[eax] +[ecx] mov eax, gword ptr [ecx+0x0C] ; gcrRegs +[eax] ;; size=3 bbWeight=0 PerfScore 0.00 G_M46606_IG06: ; bbWeight=0, epilog, nogc, extend
- pop esi
pop ebp ret
- ;; size=3 bbWeight=0 PerfScore 0.00 -G_M46606_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[ecx] - test esi, 0xD1FFAB1E - jne SHORT G_M46606_IG04 - test esi, 0x20000 - jne SHORT G_M46606_IG04 - test esi, 0x10000 - jne SHORT G_M46606_IG04 - test esi, 0xD1FFAB1E - je SHORT G_M46606_IG04 - jmp SHORT G_M46606_IG04 - ;; size=34 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 98, prolog size 4, PerfScore 18.00, instruction count 34, allocated bytes for code 98 (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 61, prolog size 3, PerfScore 16.50, instruction count 22, allocated bytes for code 61 (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)
; ============================================================

-37 (-37.76%) : 80870.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)

@@ -11,29 +11,28 @@ ; ; V00 this [V00,T00] ( 7, 6 ) ref -> ecx this class-hnd single-def <Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]> ; V01 arg1 [V01,T01] ( 5, 5 ) ref -> eax class-hnd single-def <System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]>
-; V02 tmp0 [V02,T02] ( 8, 4.22) int -> esi "Inline stloc first use temp"
+; V02 tmp0 [V02,T02] ( 4, 4 ) int -> edx "Inline stloc first use temp"
;* V03 tmp1 [V03,T03] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; ; Lcl frame size = 0
-G_M46606_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M46606_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
- push esi
mov eax, edx ; gcrRegs +[eax]
- ;; size=6 bbWeight=1 PerfScore 2.50
+ ;; size=5 bbWeight=1 PerfScore 1.50
G_M46606_IG02: ; bbWeight=1, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx] cmp gword ptr [ecx+0x0C], 0
- jne SHORT G_M46606_IG06 - mov esi, dword ptr [eax+0x1C] - test esi, 0xD1FFAB1E
+ jne SHORT G_M46606_IG05 + mov edx, dword ptr [eax+0x1C] + test edx, 0xD1FFAB1E
jne SHORT G_M46606_IG04
- test esi, 0xD1FFAB1E
+ test edx, 0xD1FFAB1E
jne SHORT G_M46606_IG04
- test esi, 0xD1FFAB1E - je SHORT G_M46606_IG05
+ test edx, 0xD1FFAB1E + je SHORT G_M46606_IG04
lea edx, bword ptr [ecx+0x0C] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EAX @@ -48,32 +47,19 @@ G_M46606_IG03: ; bbWeight=1, gcrefRegs=00000003 {eax ecx}, byrefRegs=0000 ;; size=3 bbWeight=1 PerfScore 1.00 G_M46606_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc ; gcrRegs -[ecx]
- pop esi
pop ebp ret
- ;; size=3 bbWeight=1 PerfScore 2.00 -G_M46606_IG05: ; bbWeight=0.06, gcVars=00000000 {}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz - test esi, 0xD1FFAB1E - jne SHORT G_M46606_IG04 - test esi, 0x20000 - jne SHORT G_M46606_IG04 - test esi, 0x10000 - jne SHORT G_M46606_IG04 - test esi, 0xD1FFAB1E - je SHORT G_M46606_IG04 - jmp SHORT G_M46606_IG04 - ;; size=34 bbWeight=0.06 PerfScore 0.39 -G_M46606_IG06: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+ ;; size=2 bbWeight=1 PerfScore 1.50 +G_M46606_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] +[ecx] mov eax, gword ptr [ecx+0x0C] ; gcrRegs +[eax] ;; size=3 bbWeight=0 PerfScore 0.00
-G_M46606_IG07: ; bbWeight=0, epilog, nogc, extend - pop esi
+G_M46606_IG06: ; bbWeight=0, epilog, nogc, extend
pop ebp ret
- ;; size=3 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 98, prolog size 4, PerfScore 18.39, instruction count 34, allocated bytes for code 98 (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 61, prolog size 3, PerfScore 16.50, instruction count 22, allocated bytes for code 61 (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)
; ============================================================

+20 (+2.07%) : 589058.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29496_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -16,7 +16,7 @@ ;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V06 loc4 [V06,T04] ( 18, 69 ) int -> [ebp-0x18] ;* V07 loc5 [V07 ] ( 0, 0 ) int -> zero-ref
-; V08 loc6 [V08,T12] ( 8, 25 ) int -> [ebp-0x1C]
+; V08 loc6 [V08,T12] ( 7, 24.50) int -> [ebp-0x1C]
; V09 loc7 [V09,T30] ( 4, 12.01) int -> [ebp-0x20] spill-single-def ; V10 loc8 [V10,T07] ( 12, 54 ) int -> [ebp-0x24] ; V11 tmp0 [V11,T14] ( 3, 24 ) ref -> edi class-hnd "impAppendStmt" <<unknown class>> @@ -40,14 +40,14 @@ ; V29 tmp18 [V29,T27] ( 2, 16 ) byref -> [ebp-0x58] spill-single-def "Inlining Arg" ; V30 tmp19 [V30,T08] ( 3, 48 ) int -> ecx "Inline stloc first use temp" ; V31 tmp20 [V31,T05] ( 4, 64 ) int -> ecx "Inline stloc first use temp"
-; V32 tmp21 [V32,T01] ( 3, 96 ) ref -> edx class-hnd "impAppendStmt" <<unknown class>>
+; V32 tmp21 [V32,T01] ( 3, 96 ) ref -> eax class-hnd "impAppendStmt" <<unknown class>>
;* V33 tmp22 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match> ; V34 tmp23 [V34,T02] ( 3, 96 ) byref -> ecx "dup spill" ; V35 tmp24 [V35,T47] ( 4, 3.00) int -> [ebp-0x40] "Inlining Arg" ; V36 tmp25 [V36,T45] ( 5, 4.00) int -> registers "Inlining Arg" ;* V37 tmp26 [V37 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V38 tmp27 [V38,T49] ( 4, 2 ) int -> eax single-def "Inline stloc first use temp" -; V39 tmp28 [V39,T48] ( 3, 3 ) ref -> edx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V38 tmp27 [V38,T49] ( 4, 2 ) int -> edx single-def "Inline stloc first use temp" +; V39 tmp28 [V39,T48] ( 3, 3 ) ref -> ecx class-hnd single-def "impAppendStmt" <<unknown class>>
; V40 tmp29 [V40,T43] ( 3, 6 ) int -> ecx "Inline stloc first use temp" ; V41 tmp30 [V41,T36] ( 4, 8 ) int -> edx "Inline stloc first use temp" ; V42 tmp31 [V42,T31] ( 3, 12 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>> @@ -66,10 +66,10 @@ ; V55 tmp44 [V55,T38] ( 2, 8 ) byref -> edx "field V27._reference (fldOffset=0x0)" P-INDEP ; V56 tmp45 [V56,T40] ( 2, 8 ) int -> eax "field V27._length (fldOffset=0x4)" P-INDEP ; V57 tmp46 [V57,T16] ( 3, 24 ) ref -> edi "arr expr"
-; V58 tmp47 [V58,T17] ( 3, 24 ) ref -> eax "arr expr" -; V59 tmp48 [V59,T03] ( 3, 96 ) ref -> edx "arr expr"
+; V58 tmp47 [V58,T17] ( 3, 24 ) ref -> edx "arr expr" +; V59 tmp48 [V59,T03] ( 3, 96 ) ref -> eax "arr expr"
; V60 tmp49 [V60,T18] ( 3, 24 ) ref -> ecx "arr expr"
-; V61 tmp50 [V61,T51] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V61 tmp50 [V61,T51] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
; V62 tmp51 [V62,T33] ( 3, 12 ) ref -> edx "arr expr" ; V63 tmp52 [V63,T28] ( 2, 16 ) ref -> edx "argument with side effect" ; V64 cse0 [V64,T09] ( 4, 40 ) ref -> [ebp-0x64] spill-single-def "CSE - moderate" @@ -102,7 +102,7 @@ G_M47527_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 xor ecx, ecx mov dword ptr [ebp-0x18], ecx cmp edx, ebx
- ja G_M47527_IG36
+ ja G_M47527_IG33
lea edx, bword ptr [edi+2*edx] ; byrRegs +[edx] mov bword ptr [ebp-0x4C], edx @@ -123,7 +123,7 @@ G_M47527_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; GC ptr vars +{V47} mov dword ptr [ebp-0x48], ecx cmp dword ptr [ebp-0x10], 0
- jne G_M47527_IG34
+ jne G_M47527_IG31
;; size=85 bbWeight=1 PerfScore 26.50 G_M47527_IG03: ; bbWeight=0.50, gcVars=0000000800400000 {V45 V47}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; byrRegs -[eax] @@ -163,12 +163,12 @@ G_M47527_IG06: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[eax] sub eax, dword ptr [esi+0x3C] cmp ebx, dword ptr [edi+0x04]
- jae G_M47527_IG35
+ jae G_M47527_IG34
mov dword ptr [edi+4*ebx+0x08], eax inc ebx mov edi, gword ptr [ebp-0x68] cmp ebx, dword ptr [edi+0x04]
- jae G_M47527_IG35
+ jae G_M47527_IG34
mov eax, dword ptr [ebp-0x14] mov dword ptr [edi+4*ebx+0x08], eax inc ebx @@ -206,7 +206,7 @@ G_M47527_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 test eax, eax jle G_M47527_IG17 cmp eax, ecx
- ja G_M47527_IG36
+ ja G_M47527_IG33
mov edi, bword ptr [ebp-0x60] ; byrRegs +[edi] lea edi, bword ptr [edi+2*eax] @@ -228,7 +228,7 @@ G_M47527_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov edi, dword ptr [ebp-0x44] ; byrRegs -[edi] cmp edx, edi
- ja G_M47527_IG36
+ ja G_M47527_IG33
mov ecx, bword ptr [ebp-0x5C] ; byrRegs +[ecx] lea ecx, bword ptr [ecx+2*edx] @@ -274,7 +274,7 @@ G_M47527_IG10: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov eax, gword ptr [ebp-0x54] ; gcrRegs +[eax] cmp edx, dword ptr [eax+0x04]
- jae G_M47527_IG35
+ jae G_M47527_IG34
mov dword ptr [eax+4*edx+0x08], 1 mov edx, gword ptr [esi+0x1C] ; gcrRegs +[edx] @@ -342,7 +342,7 @@ G_M47527_IG17: ; bbWeight=4, gcVars=0000000800000000 {V45}, gcrefRegs=000 dec edx mov dword ptr [ebp-0x1C], edx test edx, edx
- jl G_M47527_IG34
+ jl G_M47527_IG31
jmp SHORT G_M47527_IG19 ;; size=17 bbWeight=4 PerfScore 22.00 G_M47527_IG18: ; bbWeight=0.01, gcVars=0000000800400000 {V45 V47}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref @@ -360,11 +360,11 @@ G_M47527_IG19: ; bbWeight=4, gcVars=0000000800000000 {V45}, gcrefRegs=000 mov ecx, gword ptr [esi+0x14] ; gcrRegs +[ecx] cmp ebx, dword ptr [ecx+0x04]
- jae G_M47527_IG35
+ jae G_M47527_IG34
mov edi, dword ptr [ecx+4*ebx+0x08] mov eax, dword ptr [ebp-0x44] cmp edi, eax
- ja G_M47527_IG36
+ ja G_M47527_IG33
mov ecx, bword ptr [ebp-0x5C] ; gcrRegs -[ecx] ; byrRegs +[ecx] @@ -385,106 +385,127 @@ G_M47527_IG19: ; bbWeight=4, gcVars=0000000800000000 {V45}, gcrefRegs=000 ; GC ptr vars +{V47} mov dword ptr [ebp-0x48], eax dec ebx
- mov eax, gword ptr [esi+0x14] - ; gcrRegs +[eax] - cmp ebx, dword ptr [eax+0x04] - jae G_M47527_IG35 - mov eax, dword ptr [eax+4*ebx+0x08] - ; gcrRegs -[eax]
+ mov edx, gword ptr [esi+0x14] + ; gcrRegs +[edx] + ; byrRegs -[edx] + cmp ebx, dword ptr [edx+0x04] + jae G_M47527_IG34 + mov edx, dword ptr [edx+4*ebx+0x08] + ; gcrRegs -[edx]
mov ecx, gword ptr [esi+0x18] ; gcrRegs +[ecx] mov gword ptr [ebp-0x64], ecx ; GC ptr vars +{V64}
- mov edx, dword ptr [ecx+0x04] - ; byrRegs -[edx] - sub edx, dword ptr [esi+0x3C] - mov dword ptr [ebp-0x24], eax - cmp edx, eax
+ mov eax, dword ptr [ecx+0x04] + sub eax, dword ptr [esi+0x3C] + mov dword ptr [ebp-0x24], edx + cmp eax, edx
jle SHORT G_M47527_IG21 ;; size=103 bbWeight=4 PerfScore 163.00 G_M47527_IG20: ; bbWeight=16, gcVars=0000000800400200 {V45 V47 V64}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz ; GC ptr vars -{V29}
- mov edx, ecx - ; gcrRegs +[edx]
+ mov eax, ecx + ; gcrRegs +[eax]
mov ecx, dword ptr [esi+0x3C] ; gcrRegs -[ecx]
- lea eax, [ecx+0x01] - mov dword ptr [esi+0x3C], eax - cmp ecx, dword ptr [edx+0x04] - jae G_M47527_IG35 - mov ecx, dword ptr [edx+4*ecx+0x08] - mov edx, gword ptr [esi+0x1C] - mov edx, gword ptr [edx+0x2C] - cmp ecx, dword ptr [edx+0x04] - jae G_M47527_IG35 - lea ecx, bword ptr [edx+4*ecx+0x08]
+ lea edx, [ecx+0x01] + mov dword ptr [esi+0x3C], edx + cmp ecx, dword ptr [eax+0x04] + jae G_M47527_IG34 + mov ecx, dword ptr [eax+4*ecx+0x08] + mov eax, gword ptr [esi+0x1C] + mov eax, gword ptr [eax+0x2C] + cmp ecx, dword ptr [eax+0x04] + jae G_M47527_IG34 + lea ecx, bword ptr [eax+4*ecx+0x08]
; byrRegs +[ecx] dec dword ptr [ecx] mov ecx, gword ptr [ebp-0x64] ; gcrRegs +[ecx] ; byrRegs -[ecx]
- mov edx, dword ptr [ecx+0x04] - ; gcrRegs -[edx] - sub edx, dword ptr [esi+0x3C] - mov eax, dword ptr [ebp-0x24] - cmp edx, eax - mov dword ptr [ebp-0x24], eax
+ mov eax, dword ptr [ecx+0x04] + ; gcrRegs -[eax] + sub eax, dword ptr [esi+0x3C] + mov edx, dword ptr [ebp-0x24] + cmp eax, edx + mov dword ptr [ebp-0x24], edx
jg SHORT G_M47527_IG20 ;; size=64 bbWeight=16 PerfScore 496.00
-G_M47527_IG21: ; bbWeight=4, gcVars=0000000800400000 {V45 V47}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M47527_IG21: ; bbWeight=4, gcVars=0000000800400000 {V45 V47}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx] ; GC ptr vars -{V64} mov ecx, dword ptr [ebp-0x1C] cmp ecx, 3
- jl SHORT G_M47527_IG30 - cmp dword ptr [ebp-0x48], 0
mov dword ptr [ebp-0x1C], ecx
+ jl G_M47527_IG31 + mov eax, bword ptr [ebp-0x60] + ; byrRegs +[eax] + mov ecx, dword ptr [ebp-0x48] + test ecx, ecx + mov bword ptr [ebp-0x60], eax
je G_M47527_IG17
- mov ecx, bword ptr [ebp-0x60] - ; byrRegs +[ecx] - cmp word ptr [ecx], 100
+ mov eax, bword ptr [ebp-0x60] + cmp word ptr [eax], 100
jne G_M47527_IG17
- ;; size=34 bbWeight=4 PerfScore 45.00 -G_M47527_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; byrRegs -[ecx]
+ ;; size=45 bbWeight=4 PerfScore 50.00 +G_M47527_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref + ; byrRegs -[eax]
; GC ptr vars -{V45 V47} inc edi mov dword ptr [esi+0x30], edi xor ebx, ebx
- mov ecx, edi - cmp ecx, ebx - jl SHORT G_M47527_IG25 - ;; size=12 bbWeight=0.50 PerfScore 1.50
+ mov eax, edi + cmp eax, ebx + jl G_M47527_IG32 + ;; size=16 bbWeight=0.50 PerfScore 1.50
G_M47527_IG23: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz cmp dword ptr [esi+0x3C], 0
- jne SHORT G_M47527_IG32
+ je SHORT G_M47527_IG30
;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M47527_IG24: ; bbWeight=0.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M47527_IG31
...

+32 (+2.11%) : 598762.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33072_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -57,21 +57,21 @@ ;* V46 tmp30 [V46 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ; V47 tmp31 [V47,T21] ( 3, 24 ) int -> [ebp-0x40] spill-single-def "Inlining Arg" ; V48 tmp32 [V48,T31] ( 2, 16 ) byref -> [ebp-0x80] spill-single-def "Inlining Arg"
-; V49 tmp33 [V49,T09] ( 3, 48 ) int -> eax "Inline stloc first use temp"
+; V49 tmp33 [V49,T09] ( 3, 48 ) int -> ecx "Inline stloc first use temp"
; V50 tmp34 [V50,T06] ( 4, 64 ) int -> eax "Inline stloc first use temp" ; V51 tmp35 [V51,T03] ( 3, 96 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>> ;* V52 tmp36 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V53 tmp37 [V53,T04] ( 3, 96 ) byref -> eax "dup spill"
+; V53 tmp37 [V53,T04] ( 3, 96 ) byref -> ecx "dup spill"
; V54 tmp38 [V54,T74] ( 4, 3.00) int -> [ebp-0x44] "Inlining Arg" ; V55 tmp39 [V55,T70] ( 5, 4.00) int -> [ebp-0x48] "Inlining Arg" ;* V56 tmp40 [V56 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ; V57 tmp41 [V57,T81] ( 4, 2 ) int -> edi single-def "Inline stloc first use temp" ; V58 tmp42 [V58,T76] ( 3, 3 ) ref -> ecx class-hnd single-def "impAppendStmt" <<unknown class>>
-; V59 tmp43 [V59,T68] ( 3, 6 ) int -> ecx "Inline stloc first use temp" -; V60 tmp44 [V60,T50] ( 4, 8 ) int -> edx "Inline stloc first use temp" -; V61 tmp45 [V61,T38] ( 3, 12 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>>
+; V59 tmp43 [V59,T68] ( 3, 6 ) int -> edx "Inline stloc first use temp" +; V60 tmp44 [V60,T50] ( 4, 8 ) int -> ecx "Inline stloc first use temp" +; V61 tmp45 [V61,T38] ( 3, 12 ) ref -> edx class-hnd "impAppendStmt" <<unknown class>>
;* V62 tmp46 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V63 tmp47 [V63,T39] ( 3, 12 ) byref -> ecx "dup spill"
+; V63 tmp47 [V63,T39] ( 3, 12 ) byref -> edx "dup spill"
; V64 tmp48 [V64,T16] ( 7, 27 ) byref -> [ebp-0x84] spill-single-def "field V02._reference (fldOffset=0x0)" P-INDEP ; V65 tmp49 [V65,T12] ( 12, 37 ) int -> [ebp-0x4C] spill-single-def "field V02._length (fldOffset=0x4)" P-INDEP ; V66 tmp50 [V66,T15] ( 5, 28.50) byref -> [ebp-0x88] "field V05._reference (fldOffset=0x0)" P-INDEP @@ -103,8 +103,8 @@ ; V92 tmp76 [V92,T18] ( 3, 24 ) ref -> ecx "arr expr" ; V93 tmp77 [V93,T35] ( 2, 16 ) ref -> edi "arr expr" ; V94 tmp78 [V94,T19] ( 3, 24 ) ref -> edi "arr expr"
-; V95 tmp79 [V95,T05] ( 3, 96 ) ref -> ecx "arr expr" -; V96 tmp80 [V96,T40] ( 3, 12 ) ref -> edx "arr expr"
+; V95 tmp79 [V95,T05] ( 3, 96 ) ref -> eax "arr expr" +; V96 tmp80 [V96,T40] ( 3, 12 ) ref -> ecx "arr expr"
; V97 tmp81 [V97,T85] ( 2, 2 ) ref -> ecx single-def "argument with side effect" ; V98 cse0 [V98,T62] ( 3, 7.03) int -> edx "CSE - conservative" ; V99 cse1 [V99,T37] ( 4, 9.51) int -> [ebp-0x58] spill-single-def "CSE - conservative" @@ -145,7 +145,7 @@ G_M9058_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 xor ecx, ecx mov dword ptr [ebp-0x18], ecx cmp edx, ebx
- ja G_M9058_IG47
+ ja G_M9058_IG48
lea eax, bword ptr [edi+2*edx] ; byrRegs +[eax] mov bword ptr [ebp-0x68], eax @@ -159,19 +159,19 @@ G_M9058_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 shr ecx, 31 call [<unknown method>] cmp dword ptr [ebp-0x2C], 0
- je G_M9058_IG21
+ je G_M9058_IG42
;; size=72 bbWeight=1 PerfScore 19.75 G_M9058_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref mov ecx, bword ptr [ebp-0x68] ; byrRegs +[ecx] cmp word ptr [ecx], 89
- jne G_M9058_IG21
+ jne G_M9058_IG42
mov eax, dword ptr [ebp-0x10] lea ecx, [eax+0x01] ; byrRegs -[ecx] mov edx, ecx cmp edx, ebx
- ja G_M9058_IG47
+ ja G_M9058_IG48
lea ecx, bword ptr [edi+2*edx] ; byrRegs +[ecx] mov bword ptr [ebp-0x6C], ecx @@ -190,14 +190,14 @@ G_M9058_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=000000 mov ecx, dword ptr [ebp-0x14] mov eax, ecx cmp eax, edx
- jl G_M9058_IG38
+ jl G_M9058_IG46
;; size=74 bbWeight=0.50 PerfScore 9.75 G_M9058_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref cmp dword ptr [esi+0x3C], 0 mov dword ptr [ebp-0x14], ecx mov dword ptr [ebp-0x38], edx mov dword ptr [ebp-0x34], eax
- je G_M9058_IG34
+ je G_M9058_IG45
;; size=19 bbWeight=0.50 PerfScore 3.50 G_M9058_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref mov eax, gword ptr [esi+0x18] @@ -211,7 +211,7 @@ G_M9058_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=000000 mov edx, gword ptr [ebp-0x70] ; gcrRegs +[edx] cmp eax, dword ptr [edx+0x04]
- jae G_M9058_IG46
+ jae G_M9058_IG47
mov dword ptr [edx+4*eax+0x08], 1 mov edx, gword ptr [esi+0x1C] mov gword ptr [ebp-0x8C], edx @@ -230,15 +230,15 @@ G_M9058_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=000000 call [<unknown method>] ; gcrRegs -[ecx] cmp dword ptr [ebp-0x30], 0
- je G_M9058_IG21
+ je G_M9058_IG42
mov ecx, bword ptr [ebp-0x6C] ; byrRegs +[ecx] cmp word ptr [ecx], 88
- jne G_M9058_IG21
+ jne G_M9058_IG42
mov eax, dword ptr [ebp-0x14] inc eax cmp eax, ebx
- ja G_M9058_IG47
+ ja G_M9058_IG48
lea edx, bword ptr [edi+2*eax] ; byrRegs +[edx] mov bword ptr [ebp-0x74], edx @@ -305,7 +305,7 @@ G_M9058_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov dword ptr [ebp-0x60], edi mov eax, dword ptr [ebp-0x18] cmp eax, edi
- jae G_M9058_IG46
+ jae G_M9058_IG47
mov edi, gword ptr [ebp-0x64] ; gcrRegs +[edi] mov edx, dword ptr [ebp-0x28] @@ -315,7 +315,7 @@ G_M9058_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov edx, edi ; gcrRegs +[edx] cmp eax, dword ptr [ebp-0x60]
- jae G_M9058_IG46
+ jae G_M9058_IG47
mov edi, dword ptr [ebp-0x20] ; gcrRegs -[edi] mov dword ptr [edx+4*eax+0x08], edi @@ -323,7 +323,7 @@ G_M9058_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov edi, gword ptr [ebp-0xA8] ; gcrRegs +[edi] cmp eax, dword ptr [ebp-0x60]
- jae G_M9058_IG46
+ jae G_M9058_IG47
mov edx, dword ptr [ebp-0x14] ; gcrRegs -[edx] mov dword ptr [edi+4*eax+0x08], edx @@ -338,7 +338,7 @@ G_M9058_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; GC ptr vars +{V33} mov edi, gword ptr [edi+0x2C] cmp dword ptr [edi+0x04], 1
- jbe G_M9058_IG31
+ jbe G_M9058_IG35
;; size=135 bbWeight=4 PerfScore 190.00 G_M9058_IG09: ; bbWeight=2, gcVars=000000000000000001018000 {V33 V64 V66}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref ; GC ptr vars -{V16 V103} @@ -346,14 +346,14 @@ G_M9058_IG09: ; bbWeight=2, gcVars=000000000000000001018000 {V33 V64 V66} ; gcrRegs -[edi] mov dword ptr [ebp-0x58], edi test edi, edi
- jle G_M9058_IG30
+ jle G_M9058_IG34
;; size=14 bbWeight=2 PerfScore 8.50 G_M9058_IG10: ; bbWeight=1.51, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov edi, gword ptr [ebp-0x78] ; gcrRegs +[edi] mov edi, gword ptr [edi+0x28] cmp dword ptr [edi+0x04], 1
- jbe G_M9058_IG46
+ jbe G_M9058_IG47
mov edi, gword ptr [edi+0x0C] mov gword ptr [ebp-0xA0], edi ; GC ptr vars +{V100} @@ -370,22 +370,22 @@ G_M9058_IG10: ; bbWeight=1.51, gcrefRegs=00000040 {esi}, byrefRegs=000000 mov dword ptr [ebp-0x5C], edi mov edi, dword ptr [ebp-0x54] cmp edi, dword ptr [ebp-0x5C]
- jae G_M9058_IG46
+ jae G_M9058_IG47
mov edx, gword ptr [ebp-0x90] ; gcrRegs +[edx] mov edx, dword ptr [edx+4*edi+0x08] ; gcrRegs -[edx] cmp edx, -2
- je G_M9058_IG29
+ je G_M9058_IG33
;; size=87 bbWeight=1.51 PerfScore 38.97 G_M9058_IG11: ; bbWeight=4, gcVars=000000000000040000018000 {V64 V66 V100}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; GC ptr vars -{V33 V81} test edx, edx
- jl G_M9058_IG33
+ jl G_M9058_IG44
;; size=8 bbWeight=4 PerfScore 5.00 G_M9058_IG12: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref cmp dword ptr [ebp-0x50], edx
- jl G_M9058_IG28
+ jl G_M9058_IG32
mov edi, gword ptr [ebp-0xA0] ; gcrRegs +[edi] mov gword ptr [ebp-0x98], edi @@ -394,38 +394,38 @@ G_M9058_IG12: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[edi] lea edi, [2*edi-0x02] cmp edi, dword ptr [ebp-0x5C]
- jae G_M9058_IG46
+ jae G_M9058_IG47
mov ecx, gword ptr [ebp-0x98] ; gcrRegs +[ecx] mov ecx, dword ptr [ecx+4*edi+0x08] ; gcrRegs -[ecx] test ecx, ecx
- jl G_M9058_IG32
+ jl G_M9058_IG43
;; size=58 bbWeight=4 PerfScore 55.00 G_M9058_IG13: ; bbWeight=4, gcVars=000000000000000000018000 {V64 V66}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; GC ptr vars -{V88 V100} mov dword ptr [ebp-0x24], ecx xor edi, edi test edx, edx
- jle G_M9058_IG27
+ jle G_M9058_IG31
;; size=13 bbWeight=4 PerfScore 10.00 G_M9058_IG14: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref add ecx, edi cmp ecx, ebx
- jae G_M9058_IG46
+ jae G_M9058_IG47
mov ebx, bword ptr [ebp-0x84] ; byrRegs +[ebx] movzx ecx, word ptr [ebx+2*ecx] cmp edi, dword ptr [ebp-0x50]
- jae G_M9058_IG46
+ jae G_M9058_IG47
mov ebx, bword ptr [ebp-0x88] cmp cx, word ptr [ebx+2*edi]
- jne G_M9058_IG18
+ jne G_M9058_IG19
inc edi cmp edi, edx mov bword ptr [ebp-0x88], ebx mov ecx, dword ptr [ebp-0x24]
- jl G_M9058_IG26
+ jl G_M9058_IG30
;; size=63 bbWeight=16 PerfScore 256.00 G_M9058_IG15: ; bbWeight=4, gcVars=000000000000000000010000 {V64}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz ; byrRegs -[ebx] @@ -434,7 +434,7 @@ G_M9058_IG15: ; bbWeight=4, gcVars=000000000000000000010000 {V64}, gcrefR mov ebx, edx mov edx, dword ptr [ebp-0x4C] cmp ebx, edx
- ja G_M9058_IG47
+ ja G_M9058_IG48
mov ecx, bword ptr [ebp-0x84] ; byrRegs +[ecx] ...

+33 (+2.58%) : 598873.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33117_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -54,21 +54,21 @@ ;* V43 tmp27 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ; V44 tmp28 [V44,T21] ( 3, 24 ) int -> [ebp-0x34] spill-single-def "Inlining Arg" ; V45 tmp29 [V45,T31] ( 2, 16 ) byref -> [ebp-0x64] spill-single-def "Inlining Arg"
-; V46 tmp30 [V46,T09] ( 3, 48 ) int -> eax "Inline stloc first use temp"
+; V46 tmp30 [V46,T09] ( 3, 48 ) int -> ecx "Inline stloc first use temp"
; V47 tmp31 [V47,T06] ( 4, 64 ) int -> eax "Inline stloc first use temp" ; V48 tmp32 [V48,T03] ( 3, 96 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>> ;* V49 tmp33 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V50 tmp34 [V50,T04] ( 3, 96 ) byref -> eax "dup spill"
+; V50 tmp34 [V50,T04] ( 3, 96 ) byref -> ecx "dup spill"
; V51 tmp35 [V51,T73] ( 4, 3.00) int -> [ebp-0x38] "Inlining Arg" ; V52 tmp36 [V52,T69] ( 5, 4.00) int -> registers "Inlining Arg" ;* V53 tmp37 [V53 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ; V54 tmp38 [V54,T78] ( 4, 2 ) int -> edx single-def "Inline stloc first use temp" ; V55 tmp39 [V55,T75] ( 3, 3 ) ref -> ecx class-hnd single-def "impAppendStmt" <<unknown class>>
-; V56 tmp40 [V56,T66] ( 3, 6 ) int -> ecx "Inline stloc first use temp" -; V57 tmp41 [V57,T50] ( 4, 8 ) int -> edx "Inline stloc first use temp" -; V58 tmp42 [V58,T38] ( 3, 12 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>>
+; V56 tmp40 [V56,T66] ( 3, 6 ) int -> edx "Inline stloc first use temp" +; V57 tmp41 [V57,T50] ( 4, 8 ) int -> ecx "Inline stloc first use temp" +; V58 tmp42 [V58,T38] ( 3, 12 ) ref -> edx class-hnd "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V60 tmp44 [V60,T39] ( 3, 12 ) byref -> ecx "dup spill"
+; V60 tmp44 [V60,T39] ( 3, 12 ) byref -> edx "dup spill"
; V61 tmp45 [V61,T16] ( 6, 26.50) byref -> [ebp-0x68] spill-single-def "field V02._reference (fldOffset=0x0)" P-INDEP ; V62 tmp46 [V62,T13] ( 10, 36 ) int -> [ebp-0x3C] spill-single-def "field V02._length (fldOffset=0x4)" P-INDEP ; V63 tmp47 [V63,T15] ( 5, 28.50) byref -> [ebp-0x6C] "field V05._reference (fldOffset=0x0)" P-INDEP @@ -98,8 +98,8 @@ ; V87 tmp71 [V87,T18] ( 3, 24 ) ref -> eax "arr expr" ; V88 tmp72 [V88,T35] ( 2, 16 ) ref -> edi "arr expr" ; V89 tmp73 [V89,T19] ( 3, 24 ) ref -> edi "arr expr"
-; V90 tmp74 [V90,T05] ( 3, 96 ) ref -> ecx "arr expr" -; V91 tmp75 [V91,T40] ( 3, 12 ) ref -> edx "arr expr"
+; V90 tmp74 [V90,T05] ( 3, 96 ) ref -> eax "arr expr" +; V91 tmp75 [V91,T40] ( 3, 12 ) ref -> ecx "arr expr"
; V92 tmp76 [V92,T81] ( 2, 2 ) ref -> ecx single-def "argument with side effect" ; V93 cse0 [V93,T62] ( 3, 7.03) int -> eax "CSE - conservative" ; V94 cse1 [V94,T37] ( 4, 9.51) int -> [ebp-0x48] spill-single-def "CSE - conservative" @@ -139,7 +139,7 @@ G_M62176_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 xor edx, edx mov dword ptr [ebp-0x18], edx cmp eax, ebx
- ja G_M62176_IG43
+ ja G_M62176_IG45
lea ecx, bword ptr [edi+2*eax] ; byrRegs +[ecx] mov bword ptr [ebp-0x54], ecx @@ -152,20 +152,20 @@ G_M62176_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 shr ecx, 31 call [<unknown method>] cmp dword ptr [ebp-0x10], 0
- jne G_M62176_IG20
+ jne G_M62176_IG40
;; size=65 bbWeight=1 PerfScore 19.25 G_M62176_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref cmp dword ptr [ebp-0x2C], 1
- jbe G_M62176_IG20
+ jbe G_M62176_IG40
mov ecx, bword ptr [ebp-0x54] ; byrRegs +[ecx] cmp word ptr [ecx], 10
- je G_M62176_IG20
+ je G_M62176_IG40
cmp word ptr [ecx+0x02], 10
- je G_M62176_IG20
+ je G_M62176_IG40
mov dword ptr [ebp-0x14], 2 cmp ebx, 2
- jb G_M62176_IG43
+ jb G_M62176_IG45
lea edx, bword ptr [edi+0x04] ; byrRegs +[edx] mov bword ptr [ebp-0x58], edx @@ -185,7 +185,7 @@ G_M62176_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; GC ptr vars +{V63} mov dword ptr [ebp-0x40], edx cmp dword ptr [esi+0x3C], 0
- je G_M62176_IG32
+ je G_M62176_IG43
;; size=95 bbWeight=0.50 PerfScore 14.50 G_M62176_IG04: ; bbWeight=0.50, gcVars=000000000000000000018000 {V61 V63}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; byrRegs -[eax] @@ -201,7 +201,7 @@ G_M62176_IG04: ; bbWeight=0.50, gcVars=000000000000000000018000 {V61 V63} mov edi, gword ptr [ebp-0x5C] ; gcrRegs +[edi] cmp ecx, dword ptr [edi+0x04]
- jae G_M62176_IG42
+ jae G_M62176_IG44
mov dword ptr [edi+4*ecx+0x08], 1 mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] @@ -252,7 +252,7 @@ G_M62176_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov dword ptr [ebp-0x50], edx mov ecx, dword ptr [ebp-0x18] cmp ecx, edx
- jae G_M62176_IG42
+ jae G_M62176_IG44
mov edx, dword ptr [ebp-0x28] mov dword ptr [eax+4*ecx+0x08], edx inc ecx @@ -260,7 +260,7 @@ G_M62176_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs +[edx] mov eax, edx cmp ecx, dword ptr [ebp-0x50]
- jae G_M62176_IG42
+ jae G_M62176_IG44
mov edx, dword ptr [ebp-0x20] ; gcrRegs -[edx] mov dword ptr [eax+4*ecx+0x08], edx @@ -268,7 +268,7 @@ G_M62176_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov edx, gword ptr [ebp-0x88] ; gcrRegs +[edx] cmp ecx, dword ptr [ebp-0x50]
- jae G_M62176_IG42
+ jae G_M62176_IG44
mov eax, dword ptr [ebp-0x14] ; gcrRegs -[eax] mov dword ptr [edx+4*ecx+0x08], eax @@ -281,7 +281,7 @@ G_M62176_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs +[eax] mov edx, gword ptr [eax+0x2C] cmp dword ptr [edx+0x04], 1
- jbe G_M62176_IG29
+ jbe G_M62176_IG33
;; size=122 bbWeight=4 PerfScore 171.00 G_M62176_IG08: ; bbWeight=2, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref ; GC ptr vars -{V98} @@ -289,12 +289,12 @@ G_M62176_IG08: ; bbWeight=2, gcrefRegs=00000045 {eax edx esi}, byrefRegs= ; gcrRegs -[edx] mov dword ptr [ebp-0x48], edx test edx, edx
- jle G_M62176_IG28
+ jle G_M62176_IG32
;; size=14 bbWeight=2 PerfScore 8.50 G_M62176_IG09: ; bbWeight=1.51, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref mov eax, gword ptr [eax+0x28] cmp dword ptr [eax+0x04], 1
- jbe G_M62176_IG42
+ jbe G_M62176_IG44
mov eax, gword ptr [eax+0x0C] mov gword ptr [ebp-0x80], eax ; GC ptr vars +{V95} @@ -310,22 +310,22 @@ G_M62176_IG09: ; bbWeight=1.51, gcrefRegs=00000041 {eax esi}, byrefRegs=0 mov dword ptr [ebp-0x4C], eax mov eax, dword ptr [ebp-0x44] cmp eax, dword ptr [ebp-0x4C]
- jae G_M62176_IG42
+ jae G_M62176_IG44
mov edx, gword ptr [ebp-0x70] ; gcrRegs +[edx] mov eax, dword ptr [edx+4*eax+0x08] cmp eax, -2
- je G_M62176_IG27
+ je G_M62176_IG31
;; size=69 bbWeight=1.51 PerfScore 35.94 G_M62176_IG10: ; bbWeight=4, gcVars=000000000000040000018000 {V61 V63 V95}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[edx] ; GC ptr vars -{V76} test eax, eax
- jl G_M62176_IG31
+ jl G_M62176_IG42
;; size=8 bbWeight=4 PerfScore 5.00 G_M62176_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref cmp dword ptr [ebp-0x40], eax
- jl G_M62176_IG26
+ jl G_M62176_IG30
mov edi, gword ptr [ebp-0x80] ; gcrRegs +[edi] mov gword ptr [ebp-0x78], edi @@ -334,38 +334,38 @@ G_M62176_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[edi] lea edi, [2*edi-0x02] cmp edi, dword ptr [ebp-0x4C]
- jae G_M62176_IG42
+ jae G_M62176_IG44
mov edx, gword ptr [ebp-0x78] ; gcrRegs +[edx] mov edx, dword ptr [edx+4*edi+0x08] ; gcrRegs -[edx] test edx, edx
- jl G_M62176_IG30
+ jl G_M62176_IG41
;; size=49 bbWeight=4 PerfScore 55.00 G_M62176_IG12: ; bbWeight=4, gcVars=000000000000000000018000 {V61 V63}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; GC ptr vars -{V83 V95} mov dword ptr [ebp-0x24], edx xor edi, edi test eax, eax
- jle G_M62176_IG25
+ jle G_M62176_IG29
;; size=13 bbWeight=4 PerfScore 10.00 G_M62176_IG13: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref add edx, edi cmp edx, ebx
- jae G_M62176_IG42
+ jae G_M62176_IG44
mov ebx, bword ptr [ebp-0x68] ; byrRegs +[ebx] movzx edx, word ptr [ebx+2*edx] cmp edi, dword ptr [ebp-0x40]
- jae G_M62176_IG42
+ jae G_M62176_IG44
mov ebx, bword ptr [ebp-0x6C] cmp dx, word ptr [ebx+2*edi]
- jne G_M62176_IG17
+ jne G_M62176_IG18
inc edi cmp edi, eax mov bword ptr [ebp-0x6C], ebx mov edx, dword ptr [ebp-0x24]
- jl G_M62176_IG24
+ jl G_M62176_IG28
;; size=54 bbWeight=16 PerfScore 256.00 G_M62176_IG14: ; bbWeight=4, gcVars=000000000000000000010000 {V61}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz ; byrRegs -[ebx] @@ -374,7 +374,7 @@ G_M62176_IG14: ; bbWeight=4, gcVars=000000000000000000010000 {V61}, gcref mov ebx, eax mov eax, dword ptr [ebp-0x3C] cmp ebx, eax
- ja G_M62176_IG43
+ ja G_M62176_IG45
mov edx, bword ptr [ebp-0x68] ; byrRegs +[edx] lea edx, bword ptr [edx+2*ebx] @@ -420,27 +420,33 @@ G_M62176_IG15: ; bbWeight=2, gcVars=000000000000000000018000 {V61 V63}, g G_M62176_IG16: ; bbWeight=0.50, gcVars=000000000000000000010000 {V61}, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, gcvars, byref ; GC ptr vars -{V63} test edi, edi
- mov dword ptr [ebp-0x1C], edx - jne G_M62176_IG34 - ;; size=11 bbWeight=0.50 PerfScore 1.12 -G_M62176_IG17: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x14], ebx + mov bword ptr [ebp-0x6C], eax + ; GC ptr vars +{V63} + jne G_M62176_IG27 + ;; size=14 bbWeight=0.50 PerfScore 1.62 +G_M62176_IG17: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; byrRegs -[eax]
+ ; GC ptr vars -{V63} + mov dword ptr [ebp-0x1C], edx + ;; size=3 bbWeight=0.25 PerfScore 0.25 +G_M62176_IG18: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ebp-0x1C] dec edx mov dword ptr [ebp-0x1C], edx test edx, edx
- jl G_M62176_IG20
+ jl G_M62176_IG40
...

librariestestsnotieredcompilation.run.windows.x86.Release.mch

-19 (-37.25%) : 147577.dasm - System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 3.50) int -> ecx single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) int -> ecx single-def
; V01 loc0 [V01,T02] ( 3, 2 ) ubyte -> eax
-; V02 rat0 [V02,T00] ( 3, 6 ) int -> eax "ReplaceWithLclVar is creating a new local variable"
+; V02 rat0 [V02,T00] ( 3, 6 ) int -> ecx "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0 @@ -18,54 +18,25 @@ G_M3102_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25 G_M3102_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- lea eax, [ecx-0x02] - cmp eax, 19 - ja SHORT G_M3102_IG03 - lea edx, [@RWD00] - mov edx, dword ptr [edx+4*eax] - lea ecx, G_M3102_IG02 - add edx, ecx - jmp edx - ;; size=27 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=00000000 {}, byrefRegs=00000000 {}, 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=00000000 {}, byrefRegs=00000000 {}, 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=00000000 {}, byrefRegs=00000000 {}, byref
+G_M3102_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3102_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M3102_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-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 51, prolog size 3, PerfScore 13.25, instruction count 19, allocated bytes for code 51 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
+; Total bytes of code 32, prolog size 3, PerfScore 7.25, instruction count 13, allocated bytes for code 32 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
; ============================================================

-17 (-25.00%) : 5385.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 -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> edx class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference> ; V02 loc0 [V02,T06] ( 3, 1.50) int -> edx ld-addr-op ;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> @@ -19,9 +19,9 @@ ; V08 tmp3 [V08,T04] ( 3, 2.50) byref -> eax single-def "Inline stloc first use temp" ;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V10 tmp5 [V10,T07] ( 3, 1.50) ref -> ecx single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V11 rat0 [V11,T05] ( 2, 2 ) int -> eax "Spilling to split statement for tree"
+;* V11 rat0 [V11,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V12 rat1 [V12,T09] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V13 rat2 [V13,T03] ( 2, 2 ) int -> eax "fgMakeTemp is creating a new local variable"
+;* V13 rat2 [V13,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -41,51 +41,43 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=0000 ; gcrRegs -[ecx edx] ; byrRegs +[eax] test eax, eax
- je SHORT G_M43979_IG05
+ je SHORT G_M43979_IG04
;; size=15 bbWeight=1 PerfScore 9.25 G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz mov edx, dword ptr [eax] mov ecx, gword ptr [esi+0x44] ; gcrRegs +[ecx]
- mov eax, dword ptr [esi] - ; byrRegs -[eax] - mov eax, dword ptr [eax+0x24] - mov eax, dword ptr [eax] - mov eax, dword ptr [eax+0x80] - test eax, eax - jne SHORT G_M43979_IG07 - ;; size=22 bbWeight=0.50 PerfScore 6.62 -G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M43979_IG07 - ;; size=2 bbWeight=0.10 PerfScore 0.20 -G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M43979_IG06 + ;; size=7 bbWeight=0.50 PerfScore 3.00 +G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
+ ; byrRegs -[eax]
xor eax, eax ; gcrRegs +[eax] ;; 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
pop esi pop ebp ret ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M43979_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M43979_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[ecx] cmp edx, dword ptr [ecx+0x04]
- jae SHORT G_M43979_IG09
+ jae SHORT G_M43979_IG08
mov eax, gword ptr [ecx+4*edx+0x08] ; gcrRegs +[eax] ;; size=9 bbWeight=0.50 PerfScore 3.00
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop ebp ret ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M43979_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M43979_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax ecx] call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 4, PerfScore 23.70, instruction count 30, 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)
+; Total bytes of code 51, prolog size 4, PerfScore 19.88, instruction count 24, allocated bytes for code 51 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
; ============================================================

-30 (-21.74%) : 159041.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 -> esi single-def
+; V00 arg0 [V00,T00] ( 6, 4 ) int -> esi single-def
; V01 arg1 [V01,T01] ( 4, 2 ) ref -> edi class-hnd single-def <System.String> ; V02 tmp0 [V02,T02] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V03 tmp1 [V03,T03] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> @@ -27,9 +27,9 @@ G_M20631_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=10 bbWeight=1 PerfScore 4.75 G_M20631_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz cmp esi, 452
- jg SHORT G_M20631_IG07
+ jg SHORT G_M20631_IG04
cmp esi, 250
- jne SHORT G_M20631_IG06
+ jne SHORT G_M20631_IG04
;; size=16 bbWeight=1 PerfScore 2.50 G_M20631_IG03: ; bbWeight=1, epilog, nogc, extend pop ebx @@ -77,22 +77,9 @@ G_M20631_IG05: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 ; gcrRegs +[ecx] call CORINFO_HELP_THROW ; gcrRegs -[ecx ebx]
- ;; size=32 bbWeight=0 PerfScore 0.00 -G_M20631_IG06: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[edi] - lea ecx, [esi-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=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - cmp esi, 552 - je SHORT G_M20631_IG04 - cmp esi, 554 - je SHORT G_M20631_IG04 - jmp SHORT G_M20631_IG04 - ;; size=18 bbWeight=0 PerfScore 0.00
+ int3 + ;; size=33 bbWeight=0 PerfScore 0.00
-; Total bytes of code 138, prolog size 6, PerfScore 10.25, instruction count 47, allocated bytes for code 138 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
+; Total bytes of code 108, prolog size 6, PerfScore 10.25, instruction count 39, allocated bytes for code 108 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
; ============================================================

+25 (+1.54%) : 280880.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3253_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -8,29 +8,29 @@ ; 7 inlinees with PGO data; 39 single block inlinees; 17 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 60, 890.50) ref -> [ebp-0x78] class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V00 arg0 [V00,T01] ( 60, 890.50) ref -> [ebp-0x80] class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
; V01 arg1 [V01,T89] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]> ;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V03 loc1 [V03,T74] ( 6, 5 ) int -> [ebp-0x10] spill-single-def
-; V04 loc2 [V04,T15] ( 26, 156 ) int -> [ebp-0x14]
+; V04 loc2 [V04,T16] ( 25, 152 ) int -> [ebp-0x14]
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V06 loc4 [V06,T00] ( 60,1049 ) int -> [ebp-0x18] ;* V07 loc5 [V07 ] ( 0, 0 ) int -> zero-ref ; V08 loc6 [V08,T13] ( 10, 169 ) int -> [ebp-0x1C]
-; V09 loc7 [V09,T27] ( 8, 61 ) int -> [ebp-0x20] -; V10 loc8 [V10,T16] ( 5, 154 ) int -> [ebp-0x24]
+; V09 loc7 [V09,T28] ( 7, 57 ) int -> [ebp-0x20] +; V10 loc8 [V10,T15] ( 5, 154 ) int -> [ebp-0x24]
; V11 loc9 [V11,T44] ( 4, 32 ) int -> [ebp-0x28] ; V12 loc10 [V12,T40] ( 7, 38 ) int -> [ebp-0x2C] ; V13 loc11 [V13,T24] ( 3, 80 ) int -> [ebp-0x30] spill-single-def ; V14 loc12 [V14,T17] ( 10, 146 ) int -> [ebp-0x34]
-; V15 loc13 [V15,T41] ( 4, 33.50) int -> [ebp-0x38] spill-single-def -; V16 tmp0 [V16,T30] ( 3, 48 ) ref -> [ebp-0x7C] class-hnd spill-single-def "impAppendStmt" <<unknown class>> -; V17 tmp1 [V17,T55] ( 2, 32 ) int -> [ebp-0x3C] spill-single-def "Strict ordering of exceptions for Array store" -; V18 tmp2 [V18,T48] ( 2, 32 ) ref -> [ebp-0x80] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
+; V15 loc13 [V15,T41] ( 4, 33.50) int -> edi +; V16 tmp0 [V16,T30] ( 3, 48 ) ref -> [ebp-0x84] class-hnd spill-single-def "impAppendStmt" <<unknown class>> +; V17 tmp1 [V17,T55] ( 2, 32 ) int -> [ebp-0x38] spill-single-def "Strict ordering of exceptions for Array store" +; V18 tmp2 [V18,T48] ( 2, 32 ) ref -> [ebp-0x88] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
; V19 tmp3 [V19,T56] ( 2, 32 ) int -> edx "Strict ordering of exceptions for Array store" ;* V20 tmp4 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V21 tmp5 [V21,T72] ( 3, 6 ) int -> [ebp-0x40] spill-single-def "Inlining Arg" -; V22 tmp6 [V22,T79] ( 2, 4 ) byref -> [ebp-0x84] spill-single-def "Inlining Arg"
+; V21 tmp5 [V21,T72] ( 3, 6 ) int -> [ebp-0x3C] spill-single-def "Inlining Arg" +; V22 tmp6 [V22,T79] ( 2, 4 ) byref -> [ebp-0x8C] spill-single-def "Inlining Arg"
;* V23 tmp7 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp8 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V25 tmp9 [V25 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" @@ -55,8 +55,8 @@ ;* V44 tmp28 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V45 tmp29 [V45 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V46 tmp30 [V46 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V47 tmp31 [V47,T38] ( 3, 48 ) int -> [ebp-0x44] spill-single-def "Inlining Arg" -; V48 tmp32 [V48,T49] ( 2, 32 ) byref -> [ebp-0x88] spill-single-def "Inlining Arg"
+; V47 tmp31 [V47,T38] ( 3, 48 ) int -> [ebp-0x40] spill-single-def "Inlining Arg" +; V48 tmp32 [V48,T49] ( 2, 32 ) byref -> [ebp-0x90] spill-single-def "Inlining Arg"
;* V49 tmp33 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V50 tmp34 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V51 tmp35 [V51,T11] ( 3, 192 ) int -> ecx "Inline stloc first use temp" @@ -65,22 +65,22 @@ ;* V54 tmp38 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match> ; V55 tmp39 [V55,T04] ( 3, 384 ) byref -> ecx "dup spill" ;* V56 tmp40 [V56 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V57 tmp41 [V57,T68] ( 3, 12 ) int -> edi "Inlining Arg" -; V58 tmp42 [V58,T70] ( 2, 8 ) byref -> [ebp-0x8C] spill-single-def "Inlining Arg"
+; V57 tmp41 [V57,T68] ( 3, 12 ) int -> [ebp-0x44] spill-single-def "Inlining Arg" +; V58 tmp42 [V58,T70] ( 2, 8 ) byref -> [ebp-0x94] spill-single-def "Inlining Arg"
;* V59 tmp43 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V60 tmp44 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V61 tmp45 [V61,T29] ( 4, 52 ) int -> [ebp-0x48] "Inlining Arg" ; V62 tmp46 [V62,T25] ( 5, 68 ) int -> [ebp-0x4C] "Inlining Arg" ;* V63 tmp47 [V63 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V64 tmp48 [V64,T45] ( 4, 32 ) int -> ecx "Inline stloc first use temp" -; V65 tmp49 [V65,T31] ( 3, 48 ) ref -> [ebp-0x90] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
+; V64 tmp48 [V64,T45] ( 4, 32 ) int -> edx "Inline stloc first use temp" +; V65 tmp49 [V65,T31] ( 3, 48 ) ref -> [ebp-0x98] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
;* V66 tmp50 [V66 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ; V67 tmp51 [V67,T22] ( 3, 96 ) int -> [ebp-0x50] spill-single-def "Inlining Arg"
-; V68 tmp52 [V68,T26] ( 2, 64 ) byref -> [ebp-0x94] spill-single-def "Inlining Arg"
+; V68 tmp52 [V68,T26] ( 2, 64 ) byref -> [ebp-0x9C] spill-single-def "Inlining Arg"
;* V69 tmp53 [V69 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V70 tmp54 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V71 tmp55 [V71,T12] ( 3, 192 ) int -> ecx "Inline stloc first use temp"
-; V72 tmp56 [V72,T10] ( 4, 256 ) int -> edx "Inline stloc first use temp"
+; V72 tmp56 [V72,T10] ( 4, 256 ) int -> edi "Inline stloc first use temp"
; V73 tmp57 [V73,T05] ( 3, 384 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>> ;* V74 tmp58 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match> ; V75 tmp59 [V75,T06] ( 3, 384 ) byref -> ecx "dup spill" @@ -90,26 +90,26 @@ ;* V79 tmp63 [V79 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V80 tmp64 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V81 tmp65 [V81,T77] ( 4, 4 ) int -> [ebp-0x54] "Inlining Arg"
-; V82 tmp66 [V82,T75] ( 5, 5 ) int -> ebx "Inlining Arg"
+; V82 tmp66 [V82,T75] ( 5, 5 ) int -> [ebp-0x58] "Inlining Arg"
;* V83 tmp67 [V83 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V84 tmp68 [V84,T84] ( 4, 2 ) int -> edx single-def "Inline stloc first use temp"
+; V84 tmp68 [V84,T84] ( 4, 2 ) int -> edi single-def "Inline stloc first use temp"
; V85 tmp69 [V85,T82] ( 3, 3 ) ref -> ecx class-hnd single-def "impAppendStmt" <<unknown class>>
-; V86 tmp70 [V86,T78] ( 4, 4 ) int -> [ebp-0x58] "Inlining Arg" -; V87 tmp71 [V87,T76] ( 5, 5 ) int -> [ebp-0x5C] "Inlining Arg"
+; V86 tmp70 [V86,T78] ( 4, 4 ) int -> [ebp-0x5C] "Inlining Arg" +; V87 tmp71 [V87,T76] ( 5, 5 ) int -> [ebp-0x60] "Inlining Arg"
;* V88 tmp72 [V88 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V89 tmp73 [V89,T85] ( 4, 2 ) int -> edi single-def "Inline stloc first use temp"
+; V89 tmp73 [V89,T85] ( 4, 2 ) int -> ebx single-def "Inline stloc first use temp"
; V90 tmp74 [V90,T83] ( 3, 3 ) ref -> ecx class-hnd single-def "impAppendStmt" <<unknown class>> ; V91 tmp75 [V91,T73] ( 3, 6 ) int -> ecx "Inline stloc first use temp" ; V92 tmp76 [V92,T69] ( 4, 8 ) int -> edx "Inline stloc first use temp" ; V93 tmp77 [V93,T65] ( 3, 12 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>> ;* V94 tmp78 [V94 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match> ; V95 tmp79 [V95,T66] ( 3, 12 ) byref -> ecx "dup spill"
-; V96 tmp80 [V96,T59] ( 4, 20 ) byref -> [ebp-0x98] spill-single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V97 tmp81 [V97,T39] ( 9, 40 ) int -> [ebp-0x60] spill-single-def "field V02._length (fldOffset=0x4)" P-INDEP -; V98 tmp82 [V98,T28] ( 7, 59 ) byref -> [ebp-0x9C] "field V05._reference (fldOffset=0x0)" P-INDEP -; V99 tmp83 [V99,T23] ( 9, 85 ) int -> [ebp-0x64] "field V05._length (fldOffset=0x4)" P-INDEP -; V100 tmp84 [V100,T86] ( 2, 2 ) byref -> [ebp-0xA0] spill-single-def "field V20._reference (fldOffset=0x0)" P-INDEP -; V101 tmp85 [V101,T90] ( 2, 2 ) int -> [ebp-0x68] spill-single-def "field V20._length (fldOffset=0x4)" P-INDEP
+; V96 tmp80 [V96,T59] ( 4, 20 ) byref -> [ebp-0xA0] spill-single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V97 tmp81 [V97,T39] ( 9, 40 ) int -> [ebp-0x64] spill-single-def "field V02._length (fldOffset=0x4)" P-INDEP +; V98 tmp82 [V98,T27] ( 7, 59 ) byref -> [ebp-0xA4] "field V05._reference (fldOffset=0x0)" P-INDEP +; V99 tmp83 [V99,T23] ( 9, 85 ) int -> [ebp-0x68] "field V05._length (fldOffset=0x4)" P-INDEP +; V100 tmp84 [V100,T86] ( 2, 2 ) byref -> [ebp-0xA8] spill-single-def "field V20._reference (fldOffset=0x0)" P-INDEP +; V101 tmp85 [V101,T90] ( 2, 2 ) int -> [ebp-0x6C] spill-single-def "field V20._length (fldOffset=0x4)" P-INDEP
;* V102 tmp86 [V102 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP ;* V103 tmp87 [V103 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x4)" P-INDEP ;* V104 tmp88 [V104 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP @@ -118,23 +118,23 @@ ;* V107 tmp91 [V107 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x4)" P-INDEP ; V108 tmp92 [V108,T60] ( 2, 16 ) byref -> ecx "field V46._reference (fldOffset=0x0)" P-INDEP ; V109 tmp93 [V109,T62] ( 2, 16 ) int -> edx "field V46._length (fldOffset=0x4)" P-INDEP
-; V110 tmp94 [V110,T80] ( 2, 4 ) byref -> esi "field V56._reference (fldOffset=0x0)" P-INDEP -; V111 tmp95 [V111,T81] ( 2, 4 ) int -> edi "field V56._length (fldOffset=0x4)" P-INDEP
+; V110 tmp94 [V110,T80] ( 2, 4 ) byref -> [ebp-0xAC] spill-single-def "field V56._reference (fldOffset=0x0)" P-INDEP +; V111 tmp95 [V111,T81] ( 2, 4 ) int -> [ebp-0x70] spill-single-def "field V56._length (fldOffset=0x4)" P-INDEP
; V112 tmp96 [V112,T50] ( 2, 32 ) byref -> ecx "field V66._reference (fldOffset=0x0)" P-INDEP
-; V113 tmp97 [V113,T57] ( 2, 32 ) int -> eax "field V66._length (fldOffset=0x4)" P-INDEP
+; V113 tmp97 [V113,T57] ( 2, 32 ) int -> edx "field V66._length (fldOffset=0x4)" P-INDEP
;* V114 tmp98 [V114 ] ( 0, 0 ) byref -> zero-ref "field V76._reference (fldOffset=0x0)" P-INDEP ;* V115 tmp99 [V115 ] ( 0, 0 ) int -> zero-ref "field V76._length (fldOffset=0x4)" P-INDEP ; V116 tmp100 [V116,T51] ( 2, 32 ) ref -> edi "arr expr" ; V117 tmp101 [V117,T52] ( 2, 32 ) ref -> edx "arr expr"
-; V118 tmp102 [V118,T32] ( 3, 48 ) ref -> [ebp-0xA4] spill-single-def "arr expr"
+; V118 tmp102 [V118,T32] ( 3, 48 ) ref -> [ebp-0xB0] spill-single-def "arr expr"
; V119 tmp103 [V119,T53] ( 2, 32 ) ref -> edx "arr expr"
-; V120 tmp104 [V120,T54] ( 2, 32 ) ref -> [ebp-0xA8] spill-single-def "argument with side effect"
+; V120 tmp104 [V120,T54] ( 2, 32 ) ref -> [ebp-0xB4] spill-single-def "argument with side effect"
; V121 tmp105 [V121,T33] ( 3, 48 ) ref -> ecx "arr expr"
-; V122 tmp106 [V122,T02] ( 3, 768 ) ref -> eax "arr expr" -; V123 tmp107 [V123,T34] ( 3, 48 ) ref -> edx "arr expr"
+; V122 tmp106 [V122,T02] ( 3, 768 ) ref -> ecx "arr expr" +; V123 tmp107 [V123,T34] ( 3, 48 ) ref -> ecx "arr expr"
; V124 tmp108 [V124,T07] ( 3, 384 ) ref -> edx "arr expr" ; V125 tmp109 [V125,T35] ( 3, 48 ) ref -> ecx "arr expr"
-; V126 tmp110 [V126,T36] ( 3, 48 ) ref -> edx "arr expr"
+; V126 tmp110 [V126,T36] ( 3, 48 ) ref -> ecx "arr expr"
; V127 tmp111 [V127,T19] ( 3, 96 ) ref -> ecx "arr expr" ; V128 tmp112 [V128,T20] ( 3, 96 ) ref -> ecx "arr expr" ; V129 tmp113 [V129,T21] ( 3, 96 ) ref -> ecx "arr expr" @@ -142,17 +142,17 @@ ; V131 tmp115 [V131,T67] ( 3, 12 ) ref -> edx "arr expr" ; V132 tmp116 [V132,T87] ( 2, 2 ) ref -> ecx single-def "argument with side effect" ; V133 tmp117 [V133,T88] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V134 cse0 [V134,T18] ( 4, 144 ) ref -> [ebp-0xAC] spill-single-def "CSE - conservative" -; V135 cse1 [V135,T14] ( 4, 160 ) ref -> [ebp-0xB0] spill-single-def "CSE - moderate" -; V136 cse2 [V136,T42] ( 4, 32 ) ref -> [ebp-0xB4] spill-single-def "CSE - conservative" -; V137 cse3 [V137,T43] ( 4, 32 ) ref -> [ebp-0xB8] spill-single-def "CSE - conservative" -; V138 cse4 [V138,T37] ( 3, 48 ) ref -> [ebp-0xBC] spill-single-def "CSE - conservative" -; V139 cse5 [V139,T58] ( 3, 24 ) int -> [ebp-0x6C] spill-single-def "CSE - conservative"
+; V134 cse0 [V134,T18] ( 4, 144 ) ref -> [ebp-0xB8] spill-single-def "CSE - conservative" +; V135 cse1 [V135,T14] ( 4, 160 ) ref -> [ebp-0xBC] spill-single-def "CSE - moderate" +; V136 cse2 [V136,T42] ( 4, 32 ) ref -> [ebp-0xC0] spill-single-def "CSE - conservative" +; V137 cse3 [V137,T43] ( 4, 32 ) ref -> [ebp-0xC4] spill-single-def "CSE - conservative" +; V138 cse4 [V138,T37] ( 3, 48 ) ref -> [ebp-0xC8] spill-single-def "CSE - conservative" +; V139 cse5 [V139,T58] ( 3, 24 ) int -> [ebp-0x74] spill-single-def "CSE - conservative"
; V140 cse6 [V140,T71] ( 3, 7 ) ref -> eax hoist "CSE - conservative"
-; V141 cse7 [V141,T46] ( 4, 32 ) int -> [ebp-0x70] spill-single-def "CSE - conservative" -; V142 cse8 [V142,T47] ( 4, 32 ) int -> [ebp-0x74] spill-single-def "CSE - conservative"
+; V141 cse7 [V141,T46] ( 4, 32 ) int -> [ebp-0x78] spill-single-def "CSE - conservative" +; V142 cse8 [V142,T47] ( 4, 32 ) int -> [ebp-0x7C] spill-single-def "CSE - conservative"
;
-; Lcl frame size = 176
+; Lcl frame size = 188
G_M57776_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -160,17 +160,17 @@ G_M57776_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 176
+ sub esp, 188
mov esi, ecx ; gcrRegs +[esi] ;; size=14 bbWeight=1 PerfScore 4.75 G_M57776_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov edi, bword ptr [ebp+0x08] ; byrRegs +[edi]
- mov bword ptr [ebp-0x98], edi
+ mov bword ptr [ebp-0xA0], edi
; GC ptr vars +{V96} mov ebx, dword ptr [ebp+0x0C]
- mov dword ptr [ebp-0x60], ebx
+ mov dword ptr [ebp-0x64], ebx
mov eax, dword ptr [esi+0x30] mov dword ptr [ebp-0x14], eax mov edx, eax @@ -181,12 +181,12 @@ G_M57776_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ja G_M57776_IG50 lea edx, bword ptr [edi+2*edx] ; byrRegs +[edx]
- mov bword ptr [ebp-0x84], edx
+ mov bword ptr [ebp-0x8C], edx
; GC ptr vars +{V22} mov edx, ebx ; byrRegs -[edx] sub edx, dword ptr [ebp-0x10]
- mov dword ptr [ebp-0x40], edx
+ mov dword ptr [ebp-0x3C], edx
test edx, edx jge SHORT G_M57776_IG04 ;; size=60 bbWeight=1 PerfScore 16.75 @@ -200,25 +200,25 @@ G_M57776_IG03: ; bbWeight=0.50, gcVars=000080000800000000000000 {V22 V96} ; gcrRegs -[ecx edx] ;; size=16 bbWeight=0.50 PerfScore 1.75 G_M57776_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- mov edx, bword ptr [ebp-0x84]
+ mov edx, bword ptr [ebp-0x8C]
; byrRegs +[edx]
- mov bword ptr [ebp-0xA0], edx
+ mov bword ptr [ebp-0xA8], edx
; GC ptr vars +{V100}
- mov edx, dword ptr [ebp-0x40]
+ mov edx, dword ptr [ebp-0x3C]
; byrRegs -[edx]
- mov dword ptr [ebp-0x68], edx - mov edx, bword ptr [ebp-0xA0]
+ mov dword ptr [ebp-0x6C], edx + mov edx, bword ptr [ebp-0xA8]
; byrRegs +[edx]
- mov bword ptr [ebp-0x9C], edx
+ mov bword ptr [ebp-0xA4], edx
; GC ptr vars +{V98}
- mov edi, dword ptr [ebp-0x68] - mov dword ptr [ebp-0x64], edi
+ mov edi, dword ptr [ebp-0x6C] + mov dword ptr [ebp-0x68], edi
xor ebx, ebx xor edx, edx ; byrRegs -[edx] mov dword ptr [ebp-0x20], edx ;; size=43 bbWeight=1 PerfScore 9.50
-G_M57776_IG05: ; bbWeight=8, gcVars=000000000800000010000000 {V96 V98}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M57776_IG05: ; bbWeight=8, gcVars=000000000800000008000000 {V96 V98}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V22 V100} mov edx, gword ptr [esi+0x14] ; gcrRegs +[edx] @@ -242,40 +242,40 @@ G_M57776_IG06: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 G_M57776_IG07: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ...

+16 (+3.80%) : 183213.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)

@@ -54,16 +54,16 @@ G_M57654_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[edi] mov ebx, dword ptr [ebp+0x08] ;; size=13 bbWeight=1 PerfScore 5.75
-G_M57654_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [esi+0x2C] cmp ecx, 10
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG14
lea edx, [@RWD00] mov edx, dword ptr [edx+4*ecx] lea eax, G_M57654_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=1 PerfScore 9.00
+ ;; size=31 bbWeight=1 PerfScore 9.00
G_M57654_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp byte ptr [esi+0x40], 0 jne SHORT G_M57654_IG04 @@ -81,32 +81,20 @@ G_M57654_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 mov eax, dword ptr [eax+0x18] ; gcrRegs -[eax] ;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
dec eax cmp eax, 2
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG14
mov ecx, eax lea edx, [@RWD44] mov edx, dword ptr [edx+4*ecx] lea eax, G_M57654_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=0.50 PerfScore 3.75 -G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi edi] - xor eax, eax - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M57654_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=7 bbWeight=0.50 PerfScore 2.00 -G_M57654_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi]
+ ;; size=31 bbWeight=0.50 PerfScore 3.75 +G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [esi+0x34], -1
- je G_M57654_IG11
+ je G_M57654_IG09
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] mov eax, dword ptr [ecx] @@ -114,7 +102,7 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [eax+0x0C]<unknown method> ; gcrRegs -[ecx] test eax, eax
- je G_M57654_IG11
+ je G_M57654_IG09
push ebx mov ecx, edi ; gcrRegs +[ecx] @@ -122,25 +110,25 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [System.Xml.XmlSubtreeReader:CheckBuffer(System.Array,int,int)] ; gcrRegs -[ecx] test ebx, ebx
- je SHORT G_M57654_IG06
+ je G_M57654_IG14
cmp dword ptr [esi+0x38], 0
- jne SHORT G_M57654_IG10
+ jne SHORT G_M57654_IG08
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M57654_IG09
+ je SHORT G_M57654_IG07
mov edx, ecx ; gcrRegs +[edx] mov edx, dword ptr [edx] ; gcrRegs -[edx] cmp edx, 0xD1FFAB1E
- jne SHORT G_M57654_IG09
+ jne SHORT G_M57654_IG07
mov edx, dword ptr [edx+0x30] call [edx+0x04]<unknown method> ; gcrRegs -[ecx]
- jmp SHORT G_M57654_IG10 - ;; size=78 bbWeight=0.50 PerfScore 19.25 -G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M57654_IG08 + ;; size=82 bbWeight=0.50 PerfScore 19.25 +G_M57654_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; System.Xml.BinHexDecoder call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] @@ -150,13 +138,13 @@ G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax] ; byrRegs -[edx] ;; size=18 bbWeight=0.50 PerfScore 1.38
-G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x38] mov edx, gword ptr [esi+0x20] ; gcrRegs +[edx] mov edx, gword ptr [edx+0x14] cmp ecx, dword ptr [edx+0x04]
- je SHORT G_M57654_IG06
+ je G_M57654_IG14
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -195,9 +183,9 @@ G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [eax+0x10]<unknown method> ; gcrRegs -[ecx esi] mov edi, eax
- jmp SHORT G_M57654_IG14 - ;; size=81 bbWeight=0.50 PerfScore 26.75 -G_M57654_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M57654_IG12 + ;; size=85 bbWeight=0.50 PerfScore 26.75 +G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi edi] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] @@ -210,13 +198,13 @@ G_M57654_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [eax+0x18]<unknown method> ; gcrRegs -[ecx edx esi edi] mov edi, eax
- jmp SHORT G_M57654_IG14
+ jmp SHORT G_M57654_IG12
;; size=21 bbWeight=0.50 PerfScore 6.75
-G_M57654_IG12: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi edi] mov dword ptr [esi+0x2C], 10 ;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M57654_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -229,16 +217,26 @@ G_M57654_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[ecx edx edi] mov edi, eax test edi, edi
- jne SHORT G_M57654_IG14
+ jne SHORT G_M57654_IG12
mov dword ptr [esi+0x2C], 1 mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx esi] ;; size=38 bbWeight=0.50 PerfScore 8.50
-G_M57654_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M57654_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, edi ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=7 bbWeight=0.50 PerfScore 2.00 +G_M57654_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M57654_IG15: ; bbWeight=0.50, epilog, nogc, extend pop ebx pop esi @@ -282,22 +280,22 @@ G_M57654_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs -[ecx esi] int3 ;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M57654_IG06 - G_M57654_IG02 - dd G_M57654_IG12 - G_M57654_IG02 - dd G_M57654_IG06 - G_M57654_IG02 - dd G_M57654_IG06 - G_M57654_IG02 - dd G_M57654_IG06 - G_M57654_IG02
+RWD00 dd G_M57654_IG14 - G_M57654_IG02 + dd G_M57654_IG10 - G_M57654_IG02 + dd G_M57654_IG14 - G_M57654_IG02 + dd G_M57654_IG14 - G_M57654_IG02 + dd G_M57654_IG14 - G_M57654_IG02
dd G_M57654_IG03 - G_M57654_IG02 dd G_M57654_IG03 - G_M57654_IG02 dd G_M57654_IG17 - G_M57654_IG02 dd G_M57654_IG17 - G_M57654_IG02 dd G_M57654_IG17 - G_M57654_IG02
- dd G_M57654_IG13 - G_M57654_IG02 -RWD44 dd G_M57654_IG16 - G_M57654_IG02 - dd G_M57654_IG08 - G_M57654_IG02
dd G_M57654_IG11 - G_M57654_IG02
+RWD44 dd G_M57654_IG16 - G_M57654_IG02 + dd G_M57654_IG06 - G_M57654_IG02 + dd G_M57654_IG09 - G_M57654_IG02
-; Total bytes of code 421, prolog size 6, PerfScore 95.38, instruction count 150, allocated bytes for code 421 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
+; Total bytes of code 437, prolog size 6, PerfScore 95.38, instruction count 150, allocated bytes for code 437 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
; ============================================================

+16 (+3.80%) : 183211.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)

@@ -54,16 +54,16 @@ G_M11729_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[edi] mov ebx, dword ptr [ebp+0x08] ;; size=13 bbWeight=1 PerfScore 5.75
-G_M11729_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [esi+0x2C] cmp ecx, 10
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG14
lea edx, [@RWD00] mov edx, dword ptr [edx+4*ecx] lea eax, G_M11729_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=1 PerfScore 9.00
+ ;; size=31 bbWeight=1 PerfScore 9.00
G_M11729_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp byte ptr [esi+0x40], 0 jne SHORT G_M11729_IG04 @@ -81,32 +81,20 @@ G_M11729_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 mov eax, dword ptr [eax+0x18] ; gcrRegs -[eax] ;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
dec eax cmp eax, 2
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG14
mov ecx, eax lea edx, [@RWD44] mov edx, dword ptr [edx+4*ecx] lea eax, G_M11729_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=0.50 PerfScore 3.75 -G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi edi] - xor eax, eax - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M11729_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=7 bbWeight=0.50 PerfScore 2.00 -G_M11729_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi]
+ ;; size=31 bbWeight=0.50 PerfScore 3.75 +G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [esi+0x34], -1
- je G_M11729_IG11
+ je G_M11729_IG09
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] mov eax, dword ptr [ecx] @@ -114,7 +102,7 @@ G_M11729_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [eax+0x0C]<unknown method> ; gcrRegs -[ecx] test eax, eax
- je G_M11729_IG11
+ je G_M11729_IG09
push ebx mov ecx, edi ; gcrRegs +[ecx] @@ -122,25 +110,25 @@ G_M11729_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [System.Xml.XmlSubtreeReader:CheckBuffer(System.Array,int,int)] ; gcrRegs -[ecx] test ebx, ebx
- je SHORT G_M11729_IG06
+ je G_M11729_IG14
cmp dword ptr [esi+0x38], 0
- jne SHORT G_M11729_IG10
+ jne SHORT G_M11729_IG08
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M11729_IG09
+ je SHORT G_M11729_IG07
mov edx, ecx ; gcrRegs +[edx] mov edx, dword ptr [edx] ; gcrRegs -[edx] cmp edx, 0xD1FFAB1E
- jne SHORT G_M11729_IG09
+ jne SHORT G_M11729_IG07
mov edx, dword ptr [edx+0x30] call [edx+0x04]<unknown method> ; gcrRegs -[ecx]
- jmp SHORT G_M11729_IG10 - ;; size=78 bbWeight=0.50 PerfScore 19.25 -G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M11729_IG08 + ;; size=82 bbWeight=0.50 PerfScore 19.25 +G_M11729_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; System.Xml.Base64Decoder call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] @@ -150,13 +138,13 @@ G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax] ; byrRegs -[edx] ;; size=18 bbWeight=0.50 PerfScore 1.38
-G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x38] mov edx, gword ptr [esi+0x20] ; gcrRegs +[edx] mov edx, gword ptr [edx+0x14] cmp ecx, dword ptr [edx+0x04]
- je SHORT G_M11729_IG06
+ je G_M11729_IG14
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -195,9 +183,9 @@ G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [eax+0x10]<unknown method> ; gcrRegs -[ecx esi] mov edi, eax
- jmp SHORT G_M11729_IG14 - ;; size=81 bbWeight=0.50 PerfScore 26.75 -G_M11729_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M11729_IG12 + ;; size=85 bbWeight=0.50 PerfScore 26.75 +G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi edi] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] @@ -210,13 +198,13 @@ G_M11729_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [eax+0x10]<unknown method> ; gcrRegs -[ecx edx esi edi] mov edi, eax
- jmp SHORT G_M11729_IG14
+ jmp SHORT G_M11729_IG12
;; size=21 bbWeight=0.50 PerfScore 6.75
-G_M11729_IG12: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi edi] mov dword ptr [esi+0x2C], 9 ;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M11729_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -229,16 +217,26 @@ G_M11729_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[ecx edx edi] mov edi, eax test edi, edi
- jne SHORT G_M11729_IG14
+ jne SHORT G_M11729_IG12
mov dword ptr [esi+0x2C], 1 mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx esi] ;; size=38 bbWeight=0.50 PerfScore 8.50
-G_M11729_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M11729_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, edi ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M11729_IG13: ; bbWeight=0.50, epilog, nogc, extend + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=7 bbWeight=0.50 PerfScore 2.00 +G_M11729_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M11729_IG15: ; bbWeight=0.50, epilog, nogc, extend pop ebx pop esi @@ -282,22 +280,22 @@ G_M11729_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs -[ecx esi] int3 ;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M11729_IG06 - G_M11729_IG02 - dd G_M11729_IG12 - 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_IG14 - G_M11729_IG02 + dd G_M11729_IG10 - G_M11729_IG02 + dd G_M11729_IG14 - G_M11729_IG02 + dd G_M11729_IG14 - G_M11729_IG02 + dd G_M11729_IG14 - G_M11729_IG02
dd G_M11729_IG03 - G_M11729_IG02 dd G_M11729_IG03 - G_M11729_IG02 dd G_M11729_IG17 - G_M11729_IG02 dd G_M11729_IG17 - G_M11729_IG02
- dd G_M11729_IG13 - G_M11729_IG02
+ dd G_M11729_IG11 - G_M11729_IG02
dd G_M11729_IG17 - G_M11729_IG02 RWD44 dd G_M11729_IG16 - G_M11729_IG02
- dd G_M11729_IG08 - G_M11729_IG02 - dd G_M11729_IG11 - G_M11729_IG02
+ dd G_M11729_IG06 - G_M11729_IG02 + dd G_M11729_IG09 - G_M11729_IG02
-; Total bytes of code 421, prolog size 6, PerfScore 95.38, instruction count 150, allocated bytes for code 421 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
+; Total bytes of code 437, prolog size 6, PerfScore 95.38, instruction count 150, allocated bytes for code 437 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
; ============================================================

realworld.run.windows.x86.checked.mch

-18 (-24.66%) : 10184.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 -> esi 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 -> esi 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 -> ecx class-hnd exact single-def <<unknown class>> ;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <FSharp.Compiler.TypedTree+ValRef> @@ -34,47 +34,36 @@ G_M3270_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 call CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[edx] +[eax] test eax, eax
- jne SHORT G_M3270_IG04
+ je SHORT G_M3270_IG05
;; size=16 bbWeight=1 PerfScore 2.75 G_M3270_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax]
- mov edx, esi - ; gcrRegs +[edx] - mov ecx, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[edx esi] +[eax] - test eax, eax - jne SHORT G_M3270_IG06 - jmp SHORT G_M3270_IG06 - ;; size=18 bbWeight=0.50 PerfScore 2.38 -G_M3270_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] +[esi]
mov ecx, gword ptr [esi+0x0C] ; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M3270_IG06
+ je SHORT G_M3270_IG05
cmp gword ptr [esi+0x10], 0
- jne SHORT G_M3270_IG06
+ jne SHORT G_M3270_IG05
mov ecx, gword ptr [ecx+0x04] mov edx, gword ptr [esi+0x04] ; gcrRegs +[edx] call [FSharp.Compiler.Infos:ValRef.IsFSharpEventProperty(FSharp.Compiler.TypedTree+ValRef,FSharp.Compiler.TcGlobals+TcGlobals):ubyte] ; gcrRegs -[ecx edx esi] ;; size=25 bbWeight=0.50 PerfScore 7.12
-G_M3270_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M3270_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop ebp ret ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M3270_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3270_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
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
pop esi pop ebp ret ;; size=3 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 73, prolog size 4, PerfScore 16.88, instruction count 30, allocated bytes for code 73 (MethodHash=cb2ef339) for method FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
+; Total bytes of code 55, prolog size 4, PerfScore 14.50, instruction count 24, allocated bytes for code 55 (MethodHash=cb2ef339) for method FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
; ============================================================

-37 (-12.67%) : 28981.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 -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator>
+; V00 this [V00,T01] ( 6, 4 ) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator>
; V01 arg1 [V01,T00] ( 6, 5 ) ref -> edx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator> ; V02 arg2 [V02,T06] ( 4, 2 ) ubyte -> ebx single-def ; V03 loc0 [V03,T05] ( 4, 2 ) ref -> ecx class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> ;* V04 loc1 [V04 ] ( 0, 0 ) byte -> zero-ref
-; V05 loc2 [V05,T01] ( 10, 6 ) int -> ecx single-def
+; V05 loc2 [V05,T02] ( 7, 4.50) int -> ecx single-def
;* V06 tmp0 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V08 tmp2 [V08 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -48,48 +48,37 @@ G_M22690_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=0000 ;; size=23 bbWeight=1 PerfScore 5.75 G_M22690_IG03: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz cmp ecx, 0x1115
- je SHORT G_M22690_IG06
+ je SHORT G_M22690_IG05
cmp ecx, 0x1116
- je SHORT G_M22690_IG07
+ je SHORT G_M22690_IG06
add ecx, -0x1214 cmp ecx, 1
- jbe SHORT G_M22690_IG06 - jmp G_M22690_IG13
+ jbe SHORT G_M22690_IG05 + jmp G_M22690_IG12
;; size=32 bbWeight=0.50 PerfScore 3.00 G_M22690_IG04: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz cmp ecx, 0x1D14
- jg SHORT G_M22690_IG05
+ jg G_M22690_IG12
cmp ecx, 0x1216
- je SHORT G_M22690_IG07 - cmp ecx, 0x1D14 - je G_M22690_IG13 - jmp G_M22690_IG13 - ;; size=33 bbWeight=0.50 PerfScore 2.88 -G_M22690_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[edx esi] - cmp ecx, 0x1E14 - je G_M22690_IG13 - cmp ecx, 0x1F14 - je G_M22690_IG13 - jmp G_M22690_IG13 - ;; size=29 bbWeight=0.50 PerfScore 2.25 -G_M22690_IG06: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[edx esi]
+ je SHORT G_M22690_IG06 + jmp G_M22690_IG12 + ;; size=25 bbWeight=0.50 PerfScore 2.25 +G_M22690_IG05: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [edx+0x10] mov ecx, gword ptr [edx+0x0C] ; gcrRegs +[ecx]
- jmp SHORT G_M22690_IG08
+ jmp SHORT G_M22690_IG07
;; size=8 bbWeight=0.50 PerfScore 3.00
-G_M22690_IG07: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
+G_M22690_IG06: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] mov ecx, gword ptr [edx+0x14] ; gcrRegs +[ecx] mov ecx, gword ptr [ecx+0x0C] ;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M22690_IG08: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M22690_IG07: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx] test ecx, ecx
- je G_M22690_IG13
+ je G_M22690_IG12
call [Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:GetEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol] ; gcrRegs -[ecx] +[eax] mov ecx, eax @@ -101,14 +90,14 @@ G_M22690_IG08: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=0 ; gcrRegs -[ecx] add eax, -9 cmp eax, 3
- ja SHORT G_M22690_IG13
+ ja SHORT G_M22690_IG12
lea ecx, [@RWD00] mov ecx, dword ptr [ecx+4*eax] lea edx, G_M22690_IG02 add ecx, edx jmp ecx ;; size=51 bbWeight=0.50 PerfScore 9.38
-G_M22690_IG09: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M22690_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x10] ; gcrRegs +[ecx] push 12 @@ -118,9 +107,9 @@ G_M22690_IG09: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx esi]
- jmp SHORT G_M22690_IG13
+ jmp SHORT G_M22690_IG12
;; size=24 bbWeight=0.50 PerfScore 6.25
-G_M22690_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M22690_IG09: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi] mov ecx, gword ptr [esi+0x10] ; gcrRegs +[ecx] @@ -131,9 +120,9 @@ G_M22690_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx esi]
- jmp SHORT G_M22690_IG13
+ jmp SHORT G_M22690_IG12
;; size=24 bbWeight=0.50 PerfScore 6.25
-G_M22690_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M22690_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi] mov ecx, gword ptr [esi+0x10] ; gcrRegs +[ecx] @@ -144,9 +133,9 @@ G_M22690_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx esi]
- jmp SHORT G_M22690_IG13
+ jmp SHORT G_M22690_IG12
;; size=24 bbWeight=0.50 PerfScore 6.25
-G_M22690_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M22690_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi] mov ecx, gword ptr [esi+0x10] ; gcrRegs +[ecx] @@ -158,18 +147,18 @@ G_M22690_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [<unknown method>] ; gcrRegs -[ecx esi] ;; size=22 bbWeight=0.50 PerfScore 5.25
-G_M22690_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M22690_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
pop ebx pop esi pop ebp ret 4 ;; size=6 bbWeight=1 PerfScore 3.50
-RWD00 dd G_M22690_IG10 - G_M22690_IG02 - dd G_M22690_IG09 - G_M22690_IG02
+RWD00 dd G_M22690_IG09 - G_M22690_IG02 + dd G_M22690_IG08 - G_M22690_IG02 + dd G_M22690_IG10 - G_M22690_IG02
dd G_M22690_IG11 - G_M22690_IG02
- dd G_M22690_IG12 - G_M22690_IG02
-; Total bytes of code 292, prolog size 5, PerfScore 60.25, instruction count 87, allocated bytes for code 292 (MethodHash=a8a6a75d) for method Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
+; Total bytes of code 255, prolog size 5, PerfScore 57.38, instruction count 80, allocated bytes for code 255 (MethodHash=a8a6a75d) for method Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
; ============================================================

-14 (-9.86%) : 24895.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System._Canon]:getHasAnyApplicableMember():ubyte:this (FullOpts)

@@ -27,10 +27,10 @@ ;* V16 tmp12 [V16 ] ( 0, 0 ) ubyte -> zero-ref "V03.[004..005)" ; V17 tmp13 [V17,T04] ( 2, 8 ) ref -> ecx "argument with side effect" ;* V18 cse0 [V18,T14] ( 0, 0 ) int -> zero-ref hoist "CSE - aggressive"
-; V19 cse1 [V19,T09] ( 2, 2 ) int -> edi "CSE - moderate" -; V20 rat0 [V20,T10] ( 2, 4 ) int -> ecx "Spilling to split statement for tree"
+; V19 cse1 [V19,T09] ( 1, 1 ) int -> edi "CSE - moderate" +;* V20 rat0 [V20,T10] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V21 rat1 [V21,T11] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V22 rat2 [V22,T08] ( 2, 4 ) int -> ecx "fgMakeTemp is creating a new local variable"
+;* V22 rat2 [V22,T08] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
;* V23 rat3 [V23,T13] ( 0, 0 ) int -> zero-ref "runtime lookup" ;* V24 rat4 [V24,T02] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" ; @@ -59,14 +59,8 @@ G_M864_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 { call [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] ; gcrRegs -[ecx] mov edi, dword ptr [esi]
- mov ecx, edi - mov ecx, dword ptr [ecx+0x24] - mov ecx, dword ptr [ecx] - mov ecx, dword ptr [ecx+0x18] - test ecx, ecx - jne SHORT G_M864_IG04
jmp SHORT G_M864_IG04
- ;; size=32 bbWeight=1 PerfScore 20.00
+ ;; size=18 bbWeight=1 PerfScore 12.50
G_M864_IG03: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x10] ; gcrRegs +[ecx] @@ -117,6 +111,6 @@ G_M864_IG08: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=7 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 142, prolog size 28, PerfScore 138.08, instruction count 57, allocated bytes for code 142 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
+; Total bytes of code 128, prolog size 28, PerfScore 130.58, instruction count 51, allocated bytes for code 128 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
; ============================================================

+0 (0.00%) : 23301.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNativeIntegerOverflowingUnaryOperator(int,Microsoft.CodeAnalysis.ConstantValue):System.Object (FullOpts)

@@ -23,21 +23,9 @@ G_M35943_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=7 bbWeight=1 PerfScore 3.50 G_M35943_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, 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=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi] - xor eax, eax - ; gcrRegs +[eax] - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend - pop esi - pop edi - pop ebp - ret - ;; size=4 bbWeight=0.50 PerfScore 1.25 -G_M35943_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] +[esi]
+G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] @@ -57,6 +45,17 @@ G_M35943_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {e mov eax, edi ; gcrRegs +[eax] ;; size=33 bbWeight=0.50 PerfScore 5.75
+G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend + pop esi + pop edi + pop ebp + ret + ;; size=4 bbWeight=0.50 PerfScore 1.25 +G_M35943_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax edi] + xor eax, eax + ; gcrRegs +[eax] + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M35943_IG06: ; bbWeight=0.50, epilog, nogc, extend pop esi pop edi @@ -64,7 +63,7 @@ G_M35943_IG06: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=4 bbWeight=0.50 PerfScore 1.25 G_M35943_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax edi]
+ ; gcrRegs -[eax]
call CORINFO_HELP_OVERFLOW int3 ;; size=6 bbWeight=0 PerfScore 0.00

+0 (0.00%) : 18078.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 -> ecx class-hnd single-def <System.String> ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> edx class-hnd single-def <System.String>
-; V02 loc0 [V02,T02] ( 2, 2 ) ref -> eax class-hnd single-def <System.String>
+;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
; ; Lcl frame size = 0

+1 (+0.02%) : 29513.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)

@@ -104,7 +104,7 @@ ; V93 tmp46 [V93,T107] ( 2, 2 ) ref -> [ebp-0x160] class-hnd spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode> ; V94 tmp47 [V94,T31] ( 8, 8 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundDagTemp> ;* V95 tmp48 [V95 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter+DagTempAllocator>
-;* V96 tmp49 [V96,T210] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V96 tmp49 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V97 tmp50 [V97 ] ( 3, 1.50) struct (12) [ebp-0x34] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations> ; V98 tmp51 [V98,T151] ( 3, 1.50) ref -> [ebp-0x164] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> ; V99 tmp52 [V99,T54] ( 4, 4 ) ref -> ecx class-hnd single-def "dup spill" <<unknown class>> @@ -423,19 +423,19 @@ G_M26377_IG02: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000 cmp edx, 0xD1FFAB1E jne SHORT G_M26377_IG04 ;; size=26 bbWeight=1 PerfScore 13.50
-G_M26377_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M26377_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] mov gword ptr [ebp-0xDC], esi ; GC ptr vars +{V03}
- jmp G_M26377_IG18 - ;; size=11 bbWeight=0.50 PerfScore 1.50
+ jmp SHORT G_M26377_IG10 + ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M26377_IG04: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; GC ptr vars -{V03} cmp edx, 0xD1FFAB1E jne SHORT G_M26377_IG05 mov gword ptr [ebp-0xE0], esi ; GC ptr vars +{V04}
- jmp G_M26377_IG31
+ jmp G_M26377_IG23
;; size=19 bbWeight=0.50 PerfScore 2.12 G_M26377_IG05: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; GC ptr vars -{V04} @@ -443,7 +443,7 @@ G_M26377_IG05: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe jne SHORT G_M26377_IG06 mov gword ptr [ebp-0xE4], esi ; GC ptr vars +{V05}
- jmp G_M26377_IG37
+ jmp G_M26377_IG29
;; size=19 bbWeight=0.50 PerfScore 2.12 G_M26377_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; GC ptr vars -{V05} @@ -451,214 +451,25 @@ G_M26377_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe jne SHORT G_M26377_IG07 mov gword ptr [ebp-0xE8], esi ; GC ptr vars +{V06}
- jmp G_M26377_IG61
+ jmp G_M26377_IG53
;; size=19 bbWeight=0.50 PerfScore 2.12 G_M26377_IG07: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; GC ptr vars -{V06} cmp edx, 0xD1FFAB1E jne SHORT G_M26377_IG08
- jmp G_M26377_IG72
+ jmp G_M26377_IG64
;; size=13 bbWeight=0.50 PerfScore 1.62 G_M26377_IG08: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz cmp edx, 0xD1FFAB1E jne SHORT G_M26377_IG09
- jmp G_M26377_IG74
+ jmp G_M26377_IG66
;; size=13 bbWeight=0.50 PerfScore 1.62
-G_M26377_IG09: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M26377_IG09: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
cmp edx, 0xD1FFAB1E
- jne G_M26377_IG89 - mov eax, gword ptr [esi+0x18] - ; gcrRegs +[eax] - mov gword ptr [ebp-0x124], eax - ; GC ptr vars +{V42} - mov ecx, eax - ; gcrRegs +[ecx] - mov gword ptr [ebp-0x128], ecx - ; GC ptr vars +{V43} - test ecx, ecx - je SHORT G_M26377_IG11 - ;; size=33 bbWeight=0.50 PerfScore 3.38 -G_M26377_IG10: ; bbWeight=0.25, gcVars=00000000000000000001000000000000000000200000000000000000 {V42 V43}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax] - cmp dword ptr [ecx], 0xD1FFAB1E - je G_M26377_IG85 - ;; size=12 bbWeight=0.25 PerfScore 1.00 -G_M26377_IG11: ; bbWeight=0.50, gcVars=00000000000000000000000000000000000000200000000000000000 {V42}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[ecx] - ; GC ptr vars -{V43} - mov ecx, 0xD1FFAB1E - mov edx, 359 - call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS - mov ecx, gword ptr [D1FFAB1EH] ; static handle - ; gcrRegs +[ecx] - cmp dword ptr [ecx], ecx - call [Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this] - ; gcrRegs -[ecx] +[eax] - mov gword ptr [ebp-0x15C], eax - ; GC ptr vars +{V88} - mov edx, gword ptr [esi+0x1C] - ; gcrRegs +[edx] - cmp byte ptr [eax], al - push edi - push 2 - mov ecx, eax - ; gcrRegs +[ecx] - call [<unknown method>] - ; gcrRegs -[eax ecx edx edi] - mov ecx, eax - call [<unknown method>] - mov edi, gword ptr [esi+0x20] - ; gcrRegs +[edi] - mov ecx, ebx - ; gcrRegs +[ecx] - mov edx, esi - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx] +[eax] - push eax - push 2 - mov ecx, gword ptr [ebp-0x15C] - ; gcrRegs +[ecx] - mov edx, edi - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[eax ecx edx edi] - mov ecx, eax - call [<unknown method>] - mov ecx, gword ptr [ebp-0x15C] - ; gcrRegs +[ecx] - mov edx, gword ptr [ebp-0x124] - ; gcrRegs +[edx] - ; GC ptr vars -{V42} - call [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] - ; gcrRegs -[ecx edx] +[eax] - mov edi, eax - ; gcrRegs +[edi] - mov ecx, gword ptr [ebp-0x15C] - ; gcrRegs +[ecx] - call [System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Clear():this] - ; gcrRegs -[eax ecx] - mov eax, gword ptr [ebp-0x15C] - ; gcrRegs +[eax] - mov ecx, gword ptr [eax+0x28] - ; gcrRegs +[ecx] - test ecx, ecx - je SHORT G_M26377_IG12 - cmp gword ptr [ecx+0x04], 0 - jne G_M26377_IG86 - lea edx, bword ptr [ecx+0x04] - ; byrRegs +[edx] - ; GC ptr vars -{V88} - call CORINFO_HELP_ASSIGN_REF_EAX - ; gcrRegs -[eax ecx] - ; byrRegs -[edx] - ;; size=160 bbWeight=0.50 PerfScore 29.00 -G_M26377_IG12: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - mov ecx, gword ptr [ebx+0x04] - ; gcrRegs +[ecx] - mov edx, edi - ; gcrRegs +[edx] - cmp dword ptr [ecx], ecx - call [Microsoft.CodeAnalysis.CSharp.LocalRewriter:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this] - ; gcrRegs -[ecx edx edi] +[eax] - mov edi, eax - ; gcrRegs +[edi] - test edi, edi - je SHORT G_M26377_IG15 - ;; size=19 bbWeight=0.50 PerfScore 4.88 -G_M26377_IG13: ; bbWeight=0.25, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz - mov ecx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundExpression - cmp dword ptr [edi], ecx - je SHORT G_M26377_IG15 - ;; size=9 bbWeight=0.25 PerfScore 1.06 -G_M26377_IG14: ; bbWeight=0.12, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[edi] - mov edx, eax - ; gcrRegs +[edx] - call CORINFO_HELP_CHKCASTCLASS_SPECIAL - ; gcrRegs -[edx] - mov edi, eax - ; gcrRegs +[edi] - ;; size=9 bbWeight=0.12 PerfScore 0.19 -G_M26377_IG15: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] - mov gword ptr [ebp-0x12C], edi - ; GC ptr vars +{V44} - mov eax, gword ptr [esi+0x04] - ; gcrRegs +[eax] - mov gword ptr [ebp-0x160], eax - ; GC ptr vars +{V93} - mov ecx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundDagTemp - call CORINFO_HELP_NEWSFAST - ; gcrRegs -[edi] - mov ecx, gword ptr [esi+0x10] - ; gcrRegs +[ecx] - mov edx, gword ptr [ebp-0x160] - ; gcrRegs +[edx] - mov gword ptr [ebp-0x1A4], edx - ; GC ptr vars +{V292} - movsx edi, word ptr [esi+0x08] - and edi, 1 - mov edx, edi - ; gcrRegs -[edx] - mov dword ptr [ebp-0xC4], edx - mov byte ptr [eax+0x0A], 132 - lea edx, bword ptr [eax+0x04] - ; byrRegs +[edx] - mov edi, gword ptr [ebp-0x1A4] - ; gcrRegs +[edi] - ; GC ptr vars -{V93 V292} - call CORINFO_HELP_ASSIGN_REF_EDI - ; gcrRegs -[edi] - ; byrRegs -[edx] - cmp byte ptr [ebp-0xC4], 0 - je SHORT G_M26377_IG16 - mov word ptr [eax+0x08], 1 - ;; size=88 bbWeight=0.50 PerfScore 11.12 -G_M26377_IG16: ; bbWeight=0.50, gcrefRegs=0000004B {eax ecx ebx esi}, byrefRegs=00000000 {}, byref - lea edx, bword ptr [eax+0x0C] - ; byrRegs +[edx] - call CORINFO_HELP_ASSIGN_REF_ECX - ; gcrRegs -[ecx] - ; byrRegs -[edx] - lea edx, bword ptr [eax+0x10] - ; byrRegs +[edx] - call CORINFO_HELP_ASSIGN_REF_ESI - ; gcrRegs -[esi] - ; byrRegs -[edx] - xor ecx, ecx - mov dword ptr [eax+0x14], ecx - mov ecx, gword ptr [ebx+0x0C] - ; gcrRegs +[ecx] - mov edx, eax - ; gcrRegs +[edx] - cmp dword ptr [ecx], ecx - call [Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter+DagTempAllocator:GetTemp(Microsoft.CodeAnalysis.CSharp.BoundDagTemp):Microsoft.CodeAnalysis.CSharp.BoundExpression:this] - ; gcrRegs -[ecx edx] - mov ecx, gword ptr [ebx+0x08] - ; gcrRegs +[ecx] - mov edx, gword ptr [ecx+0x04] - ; gcrRegs +[edx] - push eax - push gword ptr [ebp-0x12C] - push gword ptr [eax+0x0C] - push 0 - push 0 - push 1 - ; GC ptr vars -{V44} - call [<unknown method>] - ; gcrRegs -[ecx edx ebx] - ;; size=62 bbWeight=0.50 PerfScore 13.25 -G_M26377_IG17: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc - lea esp, [ebp-0x0C]
...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x86.checked.mch 25 25 0 0 -258 +0
benchmarks.run_pgo.windows.x86.checked.mch 91 91 0 0 -1,135 +0
benchmarks.run_tiered.windows.x86.checked.mch 19 19 0 0 -180 +0
coreclr_tests.run.windows.x86.checked.mch 412 229 7 176 -3,805 +38
libraries.crossgen2.windows.x86.checked.mch 57 51 2 4 -1,372 +32
libraries.pmi.windows.x86.checked.mch 168 161 4 3 -2,520 +47
libraries_tests.run.windows.x86.Release.mch 501 483 13 5 -9,212 +185
librariestestsnotieredcompilation.run.windows.x86.Release.mch 263 253 4 6 -3,847 +58
realworld.run.windows.x86.checked.mch 61 58 1 2 -932 +1
1,597 1,370 31 196 -23,261 +361

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 24,491 4 24,487 1 (0.00%) 2 (0.01%)
benchmarks.run_pgo.windows.x86.checked.mch 117,805 41,904 75,901 2 (0.00%) 2 (0.00%)
benchmarks.run_tiered.windows.x86.checked.mch 47,881 28,747 19,134 1 (0.00%) 2 (0.00%)
coreclr_tests.run.windows.x86.checked.mch 574,645 319,847 254,798 20 (0.00%) 23 (0.00%)
libraries.crossgen2.windows.x86.checked.mch 242,618 15 242,603 1 (0.00%) 1 (0.00%)
libraries.pmi.windows.x86.checked.mch 305,766 6 305,760 4 (0.00%) 7 (0.00%)
libraries_tests.run.windows.x86.Release.mch 627,815 427,222 200,593 5 (0.00%) 18 (0.00%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 316,418 21,910 294,508 3 (0.00%) 17 (0.01%)
realworld.run.windows.x86.checked.mch 35,984 3 35,981 1 (0.00%) 1 (0.00%)
2,293,423 839,658 1,453,765 38 (0.00%) 73 (0.00%)

jit-analyze output

benchmarks.run.windows.x86.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 7122447 (overridden on cmd)
Total bytes of diff: 7122189 (overridden on cmd)
Total bytes of delta: -258 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -28 : 19251.dasm (-0.57 % of base)
         -20 : 15171.dasm (-0.83 % of base)
         -18 : 7163.dasm (-4.33 % of base)
         -17 : 14881.dasm (-4.39 % of base)
         -16 : 6764.dasm (-1.42 % of base)
         -14 : 22162.dasm (-9.21 % of base)
         -14 : 23048.dasm (-6.57 % of base)
         -14 : 5594.dasm (-6.19 % of base)
         -13 : 15185.dasm (-1.02 % of base)
         -12 : 14340.dasm (-0.95 % of base)
         -12 : 7887.dasm (-1.81 % of base)
         -10 : 19331.dasm (-1.00 % of base)
         -10 : 13875.dasm (-0.08 % of base)
          -7 : 18679.dasm (-4.02 % of base)
          -7 : 3122.dasm (-1.96 % of base)
          -6 : 15138.dasm (-6.12 % of base)
          -6 : 4259.dasm (-1.36 % of base)
          -6 : 15212.dasm (-1.29 % of base)
          -6 : 7144.dasm (-0.34 % of base)
          -6 : 15167.dasm (-0.20 % of base)

25 total files with Code Size differences (25 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
         -28 (-0.57 % of base) : 19251.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
         -20 (-0.83 % of base) : 15171.dasm - System.Formats.Tar.TarHeader+<ProcessDataBlockAsync>d__52:MoveNext():this (FullOpts)
         -18 (-4.33 % of base) : 7163.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (FullOpts)
         -17 (-4.39 % of base) : 14881.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (FullOpts)
         -16 (-1.42 % of base) : 6764.dasm - System.Xml.EncodingStreamWrapper:.ctor(System.IO.Stream,System.Text.Encoding):this (FullOpts)
         -14 (-6.57 % of base) : 23048.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (FullOpts)
         -14 (-9.21 % of base) : 22162.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
         -14 (-6.19 % of base) : 5594.dasm - System.Uri:get_HostNameType():int:this (FullOpts)
         -13 (-1.02 % of base) : 15185.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (FullOpts)
         -12 (-0.95 % of base) : 14340.dasm - System.Net.Http.Tests.SocketsHttpHandlerPerfTest+<Get_EnumerateHeaders_Unvalidated>d__12:MoveNext():this (FullOpts)
         -12 (-1.81 % of base) : 7887.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (FullOpts)
         -10 (-0.08 % of base) : 13875.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
         -10 (-1.00 % of base) : 19331.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__ensureAllUnderlyingConversionsChecked|210_1(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          -7 (-4.02 % of base) : 18679.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<BuildMembersAndInitializers>g__buildDeclaredMembersAndInitializers|169_1(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializers:this (FullOpts)
          -7 (-1.96 % of base) : 3122.dasm - System.Linq.Enumerable:Min[ulong](System.Collections.Generic.IEnumerable`1[ulong],System.Collections.Generic.IComparer`1[ulong]):ulong (FullOpts)
          -6 (-1.36 % of base) : 4259.dasm - Internal.Cryptography.Helpers:ToLpstrArray(System.Security.Cryptography.OidCollection,byref):System.Runtime.InteropServices.SafeHandle (FullOpts)
          -6 (-6.12 % of base) : 15138.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (FullOpts)
          -6 (-0.34 % of base) : 7144.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<CopyToAsyncCore>d__57:MoveNext():this (FullOpts)
          -6 (-0.20 % of base) : 15167.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__37:MoveNext():this (FullOpts)
          -6 (-1.29 % of base) : 15212.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:InitForReading(System.IO.Stream,System.Text.Encoding):this (FullOpts)

Top method improvements (percentages):
         -14 (-9.21 % of base) : 22162.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
         -14 (-6.57 % of base) : 23048.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (FullOpts)
         -14 (-6.19 % of base) : 5594.dasm - System.Uri:get_HostNameType():int:this (FullOpts)
          -6 (-6.12 % of base) : 15138.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (FullOpts)
         -17 (-4.39 % of base) : 14881.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (FullOpts)
         -18 (-4.33 % of base) : 7163.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (FullOpts)
          -7 (-4.02 % of base) : 18679.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<BuildMembersAndInitializers>g__buildDeclaredMembersAndInitializers|169_1(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializers:this (FullOpts)
          -7 (-1.96 % of base) : 3122.dasm - System.Linq.Enumerable:Min[ulong](System.Collections.Generic.IEnumerable`1[ulong],System.Collections.Generic.IComparer`1[ulong]):ulong (FullOpts)
         -12 (-1.81 % of base) : 7887.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (FullOpts)
          -4 (-1.69 % of base) : 4161.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
          -4 (-1.69 % of base) : 4116.dasm - System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
         -16 (-1.42 % of base) : 6764.dasm - System.Xml.EncodingStreamWrapper:.ctor(System.IO.Stream,System.Text.Encoding):this (FullOpts)
          -6 (-1.36 % of base) : 4259.dasm - Internal.Cryptography.Helpers:ToLpstrArray(System.Security.Cryptography.OidCollection,byref):System.Runtime.InteropServices.SafeHandle (FullOpts)
          -6 (-1.29 % of base) : 15212.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:InitForReading(System.IO.Stream,System.Text.Encoding):this (FullOpts)
         -13 (-1.02 % of base) : 15185.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (FullOpts)
         -10 (-1.00 % of base) : 19331.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__ensureAllUnderlyingConversionsChecked|210_1(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         -12 (-0.95 % of base) : 14340.dasm - System.Net.Http.Tests.SocketsHttpHandlerPerfTest+<Get_EnumerateHeaders_Unvalidated>d__12:MoveNext():this (FullOpts)
          -4 (-0.90 % of base) : 9793.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
         -20 (-0.83 % of base) : 15171.dasm - System.Formats.Tar.TarHeader+<ProcessDataBlockAsync>d__52:MoveNext():this (FullOpts)
          -2 (-0.82 % of base) : 9679.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveDownDefaultComparer(System.ValueTuple`2[int,int],int):this (FullOpts)

25 total methods with Code Size differences (25 improved, 0 regressed).


benchmarks.run_pgo.windows.x86.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 44974277 (overridden on cmd)
Total bytes of diff: 44973142 (overridden on cmd)
Total bytes of delta: -1135 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -52 : 97732.dasm (-6.27 % of base)
         -50 : 81962.dasm (-1.50 % of base)
         -42 : 67032.dasm (-5.15 % of base)
         -42 : 102398.dasm (-5.15 % of base)
         -32 : 81870.dasm (-1.11 % of base)
         -25 : 57304.dasm (-3.13 % of base)
         -25 : 100384.dasm (-3.13 % of base)
         -22 : 79165.dasm (-4.07 % of base)
         -21 : 44086.dasm (-16.94 % of base)
         -21 : 46559.dasm (-16.94 % of base)
         -21 : 91564.dasm (-16.94 % of base)
         -18 : 21555.dasm (-4.33 % of base)
         -17 : 82083.dasm (-4.72 % of base)
         -16 : 76370.dasm (-1.13 % of base)
         -15 : 21155.dasm (-2.19 % of base)
         -14 : 101421.dasm (-6.57 % of base)
         -14 : 12745.dasm (-1.49 % of base)
         -14 : 28582.dasm (-1.48 % of base)
         -14 : 65749.dasm (-1.48 % of base)
         -14 : 111757.dasm (-14.74 % of base)

52 total files with Code Size differences (52 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
         -52 (-6.27 % of base) : 97732.dasm - System.IO.File:WriteAllBytes(System.String,ubyte[]) (Tier1)
         -50 (-1.50 % of base) : 81962.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,Microsoft.CodeAnalysis.CSharp.BoundStatement,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.LambdaDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.ClosureDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.StateMachineStateDebugInfo],Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol,Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.CSharp.ImportChain,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SourceSpan],Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedEntryPointSymbol+AsyncForwardEntryPoint):Microsoft.CodeAnalysis.CodeGen.MethodBody (Tier1)
         -42 (-5.15 % of base) : 67032.dasm - System.IO.File:WriteAllBytes(System.String,ubyte[]) (Tier1)
         -42 (-5.15 % of base) : 102398.dasm - System.IO.File:WriteAllBytes(System.String,ubyte[]) (Tier1)
         -32 (-1.11 % of base) : 81870.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
         -25 (-3.13 % of base) : 57304.dasm - System.IO.File:WriteAllBytes(System.String,ubyte[]) (Tier1)
         -25 (-3.13 % of base) : 100384.dasm - System.IO.File:WriteAllBytes(System.String,ubyte[]) (Tier1)
         -22 (-4.07 % of base) : 79165.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetSignatureForProperty(System.Reflection.Metadata.PropertyDefinitionHandle,byref,byref):Microsoft.CodeAnalysis.ParamInfo`1[System.__Canon][]:this (Tier1)
         -21 (-16.94 % of base) : 44086.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -21 (-16.94 % of base) : 46559.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -21 (-16.94 % of base) : 91564.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -18 (-4.33 % of base) : 21555.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (Tier0-FullOpts)
         -17 (-4.72 % of base) : 82083.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:get_Count():int:this (Tier1)
         -16 (-1.13 % of base) : 76370.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__ensureAllUnderlyingConversionsChecked|210_1(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0-FullOpts)
         -15 (-2.19 % of base) : 21155.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (Tier0-FullOpts)
         -14 (-4.95 % of base) : 4412.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier0-FullOpts)
         -14 (-14.74 % of base) : 111757.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this (Tier1)
         -14 (-19.18 % of base) : 41298.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
         -14 (-19.18 % of base) : 46563.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
         -14 (-19.18 % of base) : 116373.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)

Top method improvements (percentages):
         -14 (-19.18 % of base) : 41298.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
         -14 (-19.18 % of base) : 46563.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
         -14 (-19.18 % of base) : 116373.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
         -14 (-19.18 % of base) : 44097.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
         -14 (-19.18 % of base) : 5879.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
         -21 (-16.94 % of base) : 44086.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -21 (-16.94 % of base) : 46559.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -21 (-16.94 % of base) : 91564.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -14 (-14.74 % of base) : 111757.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this (Tier1)
         -14 (-9.21 % of base) : 93804.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
         -14 (-6.57 % of base) : 101421.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (Tier0-FullOpts)
         -52 (-6.27 % of base) : 97732.dasm - System.IO.File:WriteAllBytes(System.String,ubyte[]) (Tier1)
          -6 (-6.12 % of base) : 56683.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (Tier0-FullOpts)
         -42 (-5.15 % of base) : 67032.dasm - System.IO.File:WriteAllBytes(System.String,ubyte[]) (Tier1)
         -42 (-5.15 % of base) : 102398.dasm - System.IO.File:WriteAllBytes(System.String,ubyte[]) (Tier1)
         -14 (-4.95 % of base) : 4412.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier0-FullOpts)
         -17 (-4.72 % of base) : 82083.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:get_Count():int:this (Tier1)
         -18 (-4.33 % of base) : 21555.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (Tier0-FullOpts)
         -22 (-4.07 % of base) : 79165.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetSignatureForProperty(System.Reflection.Metadata.PropertyDefinitionHandle,byref,byref):Microsoft.CodeAnalysis.ParamInfo`1[System.__Canon][]:this (Tier1)
         -25 (-3.13 % of base) : 57304.dasm - System.IO.File:WriteAllBytes(System.String,ubyte[]) (Tier1)


benchmarks.run_tiered.windows.x86.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 9469950 (overridden on cmd)
Total bytes of diff: 9469770 (overridden on cmd)
Total bytes of delta: -180 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -28 : 41122.dasm (-0.57 % of base)
         -18 : 17944.dasm (-4.33 % of base)
         -14 : 44520.dasm (-9.21 % of base)
         -14 : 45444.dasm (-6.57 % of base)
         -13 : 30939.dasm (-1.02 % of base)
         -12 : 11632.dasm (-1.81 % of base)
         -12 : 28141.dasm (-0.95 % of base)
         -10 : 27527.dasm (-0.08 % of base)
         -10 : 38330.dasm (-1.00 % of base)
          -8 : 22994.dasm (-3.76 % of base)
          -7 : 8300.dasm (-1.96 % of base)
          -6 : 30155.dasm (-6.12 % of base)
          -6 : 13403.dasm (-0.34 % of base)
          -6 : 43972.dasm (-0.20 % of base)
          -4 : 15284.dasm (-1.71 % of base)
          -4 : 23977.dasm (-0.90 % of base)
          -4 : 15253.dasm (-1.71 % of base)
          -2 : 20862.dasm (-0.82 % of base)
          -2 : 23969.dasm (-0.28 % of base)

19 total files with Code Size differences (19 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
         -28 (-0.57 % of base) : 41122.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
         -18 (-4.33 % of base) : 17944.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (Tier0-FullOpts)
         -14 (-6.57 % of base) : 45444.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (Tier0-FullOpts)
         -14 (-9.21 % of base) : 44520.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
         -13 (-1.02 % of base) : 30939.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (Tier0-FullOpts)
         -12 (-0.95 % of base) : 28141.dasm - System.Net.Http.Tests.SocketsHttpHandlerPerfTest+<Get_EnumerateHeaders_Unvalidated>d__12:MoveNext():this (Tier0-FullOpts)
         -12 (-1.81 % of base) : 11632.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (Tier0-FullOpts)
         -10 (-0.08 % of base) : 27527.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
         -10 (-1.00 % of base) : 38330.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__ensureAllUnderlyingConversionsChecked|210_1(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0-FullOpts)
          -8 (-3.76 % of base) : 22994.dasm - System.Xml.XmlConvert:CreateException(System.String,System.String[],int,int,int):System.Exception (Tier1)
          -7 (-1.96 % of base) : 8300.dasm - System.Linq.Enumerable:Min[ulong](System.Collections.Generic.IEnumerable`1[ulong],System.Collections.Generic.IComparer`1[ulong]):ulong (Tier0-FullOpts)
          -6 (-6.12 % of base) : 30155.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (Tier0-FullOpts)
          -6 (-0.34 % of base) : 13403.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<CopyToAsyncCore>d__57:MoveNext():this (Tier1)
          -6 (-0.20 % of base) : 43972.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__37:MoveNext():this (Tier1)
          -4 (-1.71 % of base) : 15253.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
          -4 (-1.71 % of base) : 15284.dasm - System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
          -4 (-0.90 % of base) : 23977.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
          -2 (-0.82 % of base) : 20862.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveDownDefaultComparer(System.ValueTuple`2[int,int],int):this (Tier0-FullOpts)
          -2 (-0.28 % of base) : 23969.dasm - System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)

Top method improvements (percentages):
         -14 (-9.21 % of base) : 44520.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
         -14 (-6.57 % of base) : 45444.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (Tier0-FullOpts)
          -6 (-6.12 % of base) : 30155.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (Tier0-FullOpts)
         -18 (-4.33 % of base) : 17944.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (Tier0-FullOpts)
          -8 (-3.76 % of base) : 22994.dasm - System.Xml.XmlConvert:CreateException(System.String,System.String[],int,int,int):System.Exception (Tier1)
          -7 (-1.96 % of base) : 8300.dasm - System.Linq.Enumerable:Min[ulong](System.Collections.Generic.IEnumerable`1[ulong],System.Collections.Generic.IComparer`1[ulong]):ulong (Tier0-FullOpts)
         -12 (-1.81 % of base) : 11632.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (Tier0-FullOpts)
          -4 (-1.71 % of base) : 15253.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
          -4 (-1.71 % of base) : 15284.dasm - System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
         -13 (-1.02 % of base) : 30939.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (Tier0-FullOpts)
         -10 (-1.00 % of base) : 38330.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__ensureAllUnderlyingConversionsChecked|210_1(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0-FullOpts)
         -12 (-0.95 % of base) : 28141.dasm - System.Net.Http.Tests.SocketsHttpHandlerPerfTest+<Get_EnumerateHeaders_Unvalidated>d__12:MoveNext():this (Tier0-FullOpts)
          -4 (-0.90 % of base) : 23977.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
          -2 (-0.82 % of base) : 20862.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveDownDefaultComparer(System.ValueTuple`2[int,int],int):this (Tier0-FullOpts)
         -28 (-0.57 % of base) : 41122.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
          -6 (-0.34 % of base) : 13403.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<CopyToAsyncCore>d__57:MoveNext():this (Tier1)
          -2 (-0.28 % of base) : 23969.dasm - System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
          -6 (-0.20 % of base) : 43972.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__37:MoveNext():this (Tier1)
         -10 (-0.08 % of base) : 27527.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)

19 total methods with Code Size differences (19 improved, 0 regressed).


coreclr_tests.run.windows.x86.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 309369241 (overridden on cmd)
Total bytes of diff: 309365474 (overridden on cmd)
Total bytes of delta: -3767 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           7 : 15700.dasm (5.11 % of base)
           7 : 16117.dasm (5.11 % of base)
           7 : 16193.dasm (4.90 % of base)
           7 : 15776.dasm (4.90 % of base)
           4 : 226124.dasm (3.81 % of base)
           4 : 230197.dasm (3.81 % of base)
           2 : 230228.dasm (1.98 % of base)

Top file improvements (bytes):
        -117 : 243351.dasm (-0.88 % of base)
        -117 : 496463.dasm (-0.88 % of base)
         -76 : 231604.dasm (-1.18 % of base)
         -76 : 225163.dasm (-1.18 % of base)
         -54 : 242776.dasm (-21.09 % of base)
         -45 : 240379.dasm (-3.86 % of base)
         -43 : 230250.dasm (-60.56 % of base)
         -38 : 225054.dasm (-0.74 % of base)
         -38 : 225178.dasm (-0.70 % of base)
         -38 : 231458.dasm (-2.52 % of base)
         -38 : 231605.dasm (-1.84 % of base)
         -38 : 231773.dasm (-0.83 % of base)
         -38 : 232213.dasm (-2.63 % of base)
         -38 : 231570.dasm (-1.19 % of base)
         -38 : 231582.dasm (-0.94 % of base)
         -38 : 232269.dasm (-1.58 % of base)
         -38 : 232321.dasm (-1.75 % of base)
         -38 : 225129.dasm (-1.19 % of base)
         -38 : 231345.dasm (-0.65 % of base)
         -38 : 231354.dasm (-2.12 % of base)

48 total files with Code Size differences (41 improved, 7 regressed), 32 unchanged.

Top method regressions (bytes):
           7 (5.11 % of base) : 15700.dasm - testout1:Sub_Funclet_106():int (FullOpts)
           7 (5.11 % of base) : 16117.dasm - testout1:Sub_Funclet_106():int (FullOpts)
           7 (4.90 % of base) : 16193.dasm - testout1:Sub_Funclet_183():int (FullOpts)
           7 (4.90 % of base) : 15776.dasm - testout1:Sub_Funclet_183():int (FullOpts)
           4 (3.81 % of base) : 226124.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():float (FullOpts)
           4 (3.81 % of base) : 230197.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():float (FullOpts)
           2 (1.98 % of base) : 230228.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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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)

Top method improvements (bytes):
        -117 (-0.88 % of base) : 243351.dasm - ILGEN_0x372a9ae6:Method_0xdc6ff1a4(byte,byte,int,int,ushort,double,long,ulong):int (FullOpts)
        -117 (-0.88 % of base) : 496463.dasm - ILGEN_0x372a9ae6:Method_0xdc6ff1a4(byte,byte,int,int,ushort,double,long,ulong):int (Tier0-FullOpts)
         -76 (-1.18 % of base) : 231604.dasm - Test_10w5d.testout1:Func_0_4_5_3():System.Decimal (FullOpts)
         -76 (-1.18 % of base) : 225163.dasm - Test_10w5d.testout1:Func_0_4_5_3():System.Decimal (FullOpts)
         -54 (-21.09 % of base) : 242776.dasm - ILGEN_0xc53351bb:Method_0x6cf4(short,byte,uint,ulong,int,long,short,short,ubyte,long,float,ubyte,ulong,ubyte):float (FullOpts)
         -45 (-3.86 % of base) : 240379.dasm - TestClass_65690:Method0():this (FullOpts)
         -43 (-60.56 % of base) : 230250.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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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)
         -38 (-1.75 % of base) : 232321.dasm - Test_10w5d.testout1:Func_0_1_3_6_1():float (FullOpts)
         -38 (-1.58 % of base) : 232269.dasm - Test_10w5d.testout1:Func_0_1_5_4_3():short (FullOpts)
         -38 (-2.63 % of base) : 232213.dasm - Test_10w5d.testout1:Func_0_1_6_6_2():System.Decimal (FullOpts)
         -38 (-0.83 % of base) : 231773.dasm - Test_10w5d.testout1:Func_0_4_1_2_2():System.Decimal (FullOpts)
         -38 (-0.70 % of base) : 225178.dasm - Test_10w5d.testout1:Func_0_4_5_1():System.Decimal (FullOpts)
         -38 (-1.84 % of base) : 231605.dasm - Test_10w5d.testout1:Func_0_4_5_3_6():System.Decimal (FullOpts)
         -38 (-0.94 % of base) : 231582.dasm - Test_10w5d.testout1:Func_0_4_5_6():System.Decimal (FullOpts)
         -38 (-1.19 % of base) : 231570.dasm - Test_10w5d.testout1:Func_0_4_6_3_2():System.Decimal (FullOpts)
         -38 (-1.19 % of base) : 225129.dasm - Test_10w5d.testout1:Func_0_4_6_3_2():System.Decimal (FullOpts)
         -38 (-0.74 % of base) : 225054.dasm - Test_10w5d.testout1:Func_0_5_2_1_3():System.Decimal (FullOpts)
         -38 (-2.52 % of base) : 231458.dasm - Test_10w5d.testout1:Func_0_5_2_6_4():System.Decimal (FullOpts)
         -38 (-2.12 % of base) : 231354.dasm - Test_10w5d.testout1:Func_0_5_5_4_3():short (FullOpts)
         -38 (-0.65 % of base) : 231345.dasm - Test_10w5d.testout1:Func_0_5_5_5_6():System.Decimal (FullOpts)

Top method regressions (percentages):
           7 (5.11 % of base) : 15700.dasm - testout1:Sub_Funclet_106():int (FullOpts)
           7 (5.11 % of base) : 16117.dasm - testout1:Sub_Funclet_106():int (FullOpts)
           7 (4.90 % of base) : 16193.dasm - testout1:Sub_Funclet_183():int (FullOpts)
           7 (4.90 % of base) : 15776.dasm - testout1:Sub_Funclet_183():int (FullOpts)
           4 (3.81 % of base) : 226124.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():float (FullOpts)
           4 (3.81 % of base) : 230197.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():float (FullOpts)
           2 (1.98 % of base) : 230228.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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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)

Top method improvements (percentages):
         -43 (-60.56 % of base) : 230250.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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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)
         -35 (-55.56 % of base) : 226126.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)
         -29 (-50.88 % of base) : 230198.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)
         -15 (-42.86 % of base) : 21084.dasm - filter1:f4() (FullOpts)
         -33 (-27.97 % of base) : 242698.dasm - Test.AA:Method1(byref,int,byref,double[]):float (FullOpts)
         -33 (-27.97 % of base) : 495758.dasm - Test.AA:Method1(byref,int,byref,double[]):float (Tier0-FullOpts)
         -36 (-26.67 % of base) : 225585.dasm - Test_10w5d.testout1:Func_0_2_6_2_2():double (FullOpts)
         -26 (-26.53 % of base) : 226167.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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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)
         -54 (-21.09 % of base) : 242776.dasm - ILGEN_0xc53351bb:Method_0x6cf4(short,byte,uint,ulong,int,long,short,short,ubyte,long,float,ubyte,ulong,ubyte):float (FullOpts)
         -25 (-19.38 % of base) : 242980.dasm - Test.AA:Main1() (FullOpts)
         -25 (-19.38 % of base) : 496062.dasm - Test.AA:Main1() (Tier0-FullOpts)
         -25 (-18.12 % of base) : 242983.dasm - Test.AA:Main1() (FullOpts)
         -25 (-18.12 % of base) : 496065.dasm - Test.AA:Main1() (Tier0-FullOpts)
          -3 (-13.64 % of base) : 22579.dasm - try1:f4() (FullOpts)
         -18 (-12.59 % of base) : 16228.dasm - testout1:Sub_Funclet_221():int (FullOpts)
         -18 (-12.59 % of base) : 15811.dasm - testout1:Sub_Funclet_221():int (FullOpts)
         -20 (-11.56 % of base) : 17182.dasm - testout1:Sub_Funclet_219():int (FullOpts)
         -20 (-11.56 % of base) : 17598.dasm - testout1:Sub_Funclet_219():int (FullOpts)
         -19 (-11.11 % of base) : 17486.dasm - testout1:Sub_Funclet_104():int (FullOpts)
         -19 (-11.11 % of base) : 17560.dasm - testout1:Sub_Funclet_181():int (FullOpts)


libraries.crossgen2.windows.x86.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 31716544 (overridden on cmd)
Total bytes of diff: 31715204 (overridden on cmd)
Total bytes of delta: -1340 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 80047.dasm (3.80 % of base)
          16 : 80049.dasm (3.80 % of base)

Top file improvements (bytes):
        -577 : 84228.dasm (-93.37 % of base)
         -79 : 196926.dasm (-0.36 % of base)
         -64 : 66475.dasm (-17.98 % of base)
         -39 : 24907.dasm (-1.30 % of base)
         -38 : 197744.dasm (-5.28 % of base)
         -37 : 53617.dasm (-12.67 % of base)
         -30 : 170491.dasm (-22.73 % of base)
         -26 : 25972.dasm (-1.97 % of base)
         -21 : 74310.dasm (-2.10 % of base)
         -20 : 170326.dasm (-17.54 % of base)
         -20 : 206884.dasm (-1.48 % of base)
         -20 : 207040.dasm (-4.72 % of base)
         -19 : 223754.dasm (-37.25 % of base)
         -18 : 26840.dasm (-7.86 % of base)
         -17 : 170416.dasm (-15.32 % of base)
         -16 : 185552.dasm (-5.59 % of base)
         -14 : 138977.dasm (-1.12 % of base)
         -14 : 138172.dasm (-9.15 % of base)
         -14 : 88344.dasm (-0.74 % of base)
         -14 : 73817.dasm (-1.39 % of base)

49 total files with Code Size differences (47 improved, 2 regressed), 4 unchanged.

Top method regressions (bytes):
          16 (3.80 % of base) : 80047.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
          16 (3.80 % of base) : 80049.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)

Top method improvements (bytes):
        -577 (-93.37 % of base) : 84228.dasm - System.Xml.Serialization.XmlSerializationReader:ReadTypedNull(System.Xml.XmlQualifiedName):System.Object:this (FullOpts)
         -79 (-0.36 % of base) : 196926.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -64 (-17.98 % of base) : 66475.dasm - Microsoft.FSharp.Core.LanguagePrimitives+FastGenericComparerTable`1[int]:.cctor() (FullOpts)
         -39 (-1.30 % of base) : 24907.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
         -38 (-5.28 % of base) : 197744.dasm - Microsoft.VisualBasic.Strings:GetCurrencyFormatString(int,int,int,int,byref):System.String (FullOpts)
         -37 (-12.67 % of base) : 53617.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
         -30 (-22.73 % of base) : 170491.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
         -26 (-1.97 % of base) : 25972.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetRefEscape(Microsoft.CodeAnalysis.CSharp.BoundExpression,uint):uint:this (FullOpts)
         -21 (-2.10 % of base) : 74310.dasm - System.Xml.XmlDataDocument:OnRowChanging(System.Object,System.Data.DataRowChangeEventArgs):this (FullOpts)
         -20 (-4.72 % of base) : 207040.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (FullOpts)
         -20 (-1.48 % of base) : 206884.dasm - System.Formats.Tar.TarHeader+<ProcessDataBlockAsync>d__52:MoveNext():this (FullOpts)
         -20 (-17.54 % of base) : 170326.dasm - System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
         -19 (-37.25 % of base) : 223754.dasm - System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
         -18 (-7.86 % of base) : 26840.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddDelegateOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature]):this (FullOpts)
         -17 (-15.32 % of base) : 170416.dasm - System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
         -16 (-5.59 % of base) : 185552.dasm - System.IO.Compression.ZipArchiveEntry:GetDataCompressor(System.IO.Stream,ubyte,System.EventHandler):System.IO.Compression.CheckSumAndSizeWriteStream:this (FullOpts)
         -14 (-11.38 % of base) : 54908.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:<RewriteTupleInput>g__makeReplacement|17_1(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode (FullOpts)
         -14 (-1.12 % of base) : 138977.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeModifiedIdentifierType(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,System.Func`1[Microsoft.CodeAnalysis.DiagnosticInfo],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
         -14 (-9.15 % of base) : 138172.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:GetUnassignedSymbolFirstLocation(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess):Microsoft.CodeAnalysis.Location:this (FullOpts)
         -14 (-1.39 % of base) : 73817.dasm - System.Data.DataTable:MergeRow(System.Data.DataRow,System.Data.DataRow,ubyte,System.Data.Index):System.Data.DataRow:this (FullOpts)

Top method regressions (percentages):
          16 (3.80 % of base) : 80047.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
          16 (3.80 % of base) : 80049.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)

Top method improvements (percentages):
        -577 (-93.37 % of base) : 84228.dasm - System.Xml.Serialization.XmlSerializationReader:ReadTypedNull(System.Xml.XmlQualifiedName):System.Object:this (FullOpts)
         -19 (-37.25 % of base) : 223754.dasm - System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
         -30 (-22.73 % of base) : 170491.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
         -64 (-17.98 % of base) : 66475.dasm - Microsoft.FSharp.Core.LanguagePrimitives+FastGenericComparerTable`1[int]:.cctor() (FullOpts)
         -20 (-17.54 % of base) : 170326.dasm - System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
         -17 (-15.32 % of base) : 170416.dasm - System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
         -37 (-12.67 % of base) : 53617.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
         -14 (-11.38 % of base) : 54908.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:<RewriteTupleInput>g__makeReplacement|17_1(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode (FullOpts)
         -10 (-10.64 % of base) : 209158.dasm - System.Transactions.Oletx.OletxTransactionManager:ConvertIsolationLevelFromProxyValue(int):int (FullOpts)
         -14 (-9.15 % of base) : 138172.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:GetUnassignedSymbolFirstLocation(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess):Microsoft.CodeAnalysis.Location:this (FullOpts)
          -9 (-8.74 % of base) : 170472.dasm - System.Net.Mail.StartTlsCommand:CheckResponse(int,System.String) (FullOpts)
         -18 (-7.86 % of base) : 26840.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddDelegateOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature]):this (FullOpts)
         -10 (-6.99 % of base) : 202005.dasm - System.Data.Odbc.OdbcHandle:ReleaseHandle():ubyte:this (FullOpts)
          -7 (-6.48 % of base) : 197945.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:IsMemberPublic(System.Reflection.MemberInfo):ubyte (FullOpts)
         -14 (-6.42 % of base) : 201298.dasm - System.Uri:get_HostNameType():int:this (FullOpts)
         -13 (-6.28 % of base) : 151541.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SingleLineLambdaContext:ProcessStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext:this (FullOpts)
         -16 (-5.59 % of base) : 185552.dasm - System.IO.Compression.ZipArchiveEntry:GetDataCompressor(System.IO.Stream,ubyte,System.EventHandler):System.IO.Compression.CheckSumAndSizeWriteStream:this (FullOpts)
         -38 (-5.28 % of base) : 197744.dasm - Microsoft.VisualBasic.Strings:GetCurrencyFormatString(int,int,int,int,byref):System.String (FullOpts)
         -20 (-4.72 % of base) : 207040.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (FullOpts)
          -7 (-4.14 % of base) : 197404.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:VerifyObjRefPresentForInstanceCall(System.Object,System.Reflection.MemberInfo) (FullOpts)


libraries.pmi.windows.x86.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 49268131 (overridden on cmd)
Total bytes of diff: 49265658 (overridden on cmd)
Total bytes of delta: -2473 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 167237.dasm (3.80 % of base)
          16 : 167239.dasm (3.80 % of base)
          14 : 82904.dasm (2.11 % of base)
           1 : 64992.dasm (0.02 % of base)

Top file improvements (bytes):
        -577 : 177905.dasm (-93.37 % of base)
         -75 : 195352.dasm (-0.31 % of base)
         -60 : 29438.dasm (-5.20 % of base)
         -45 : 112724.dasm (-4.80 % of base)
         -45 : 150875.dasm (-4.80 % of base)
         -37 : 63622.dasm (-12.67 % of base)
         -34 : 226040.dasm (-7.85 % of base)
         -30 : 60086.dasm (-0.99 % of base)
         -30 : 195969.dasm (-4.52 % of base)
         -30 : 260685.dasm (-21.74 % of base)
         -30 : 31299.dasm (-2.12 % of base)
         -28 : 30224.dasm (-0.53 % of base)
         -28 : 226041.dasm (-7.25 % of base)
         -28 : 82644.dasm (-0.41 % of base)
         -27 : 174979.dasm (-1.33 % of base)
         -27 : 226073.dasm (-6.40 % of base)
         -25 : 32218.dasm (-5.07 % of base)
         -23 : 268147.dasm (-1.89 % of base)
         -22 : 254475.dasm (-4.19 % of base)
         -21 : 68430.dasm (-1.98 % of base)

65 total files with Code Size differences (61 improved, 4 regressed), 3 unchanged.

Top method regressions (bytes):
          16 (3.80 % of base) : 167237.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
          16 (3.80 % of base) : 167239.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
          14 (2.11 % of base) : 82904.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertyAccessorSymbol:GetReturnType(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceModuleSymbol,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
           1 (0.02 % of base) : 64992.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)

Top method improvements (bytes):
        -577 (-93.37 % of base) : 177905.dasm - System.Xml.Serialization.XmlSerializationReader:ReadTypedNull(System.Xml.XmlQualifiedName):System.Object:this (FullOpts)
         -75 (-0.31 % of base) : 195352.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -60 (-5.20 % of base) : 29438.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (FullOpts)
         -45 (-4.80 % of base) : 112724.dasm - Microsoft.CodeAnalysis.AttributeData:DecodeDecimalConstantValue():Microsoft.CodeAnalysis.ConstantValue:this (FullOpts)
         -45 (-4.80 % of base) : 150875.dasm - Microsoft.CodeAnalysis.AttributeData:DecodeDecimalConstantValue():Microsoft.CodeAnalysis.ConstantValue:this (FullOpts)
         -37 (-12.67 % of base) : 63622.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
         -34 (-7.85 % of base) : 226040.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.Nullable`1[int]]:MoveDownDefaultComparer(System.ValueTuple`2[System.__Canon,System.Nullable`1[int]],int):this (FullOpts)
         -30 (-2.12 % of base) : 31299.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetRefEscape(Microsoft.CodeAnalysis.CSharp.BoundExpression,uint):uint:this (FullOpts)
         -30 (-0.99 % of base) : 60086.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:DecodeDllImportAttribute(byref):this (FullOpts)
         -30 (-4.52 % of base) : 195969.dasm - Microsoft.VisualBasic.Strings:GetCurrencyFormatString(int,int,int,int,byref):System.String (FullOpts)
         -30 (-21.74 % of base) : 260685.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
         -28 (-0.53 % of base) : 30224.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
         -28 (-0.41 % of base) : 82644.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMethodSymbol:DecodeWellKnownAttributeAppliedToMethod(byref):this (FullOpts)
         -28 (-7.25 % of base) : 226041.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.Nullable`1[int]]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.Nullable`1[int]],int):this (FullOpts)
         -27 (-6.40 % of base) : 226073.dasm - System.Collections.Generic.PriorityQueue`2[ubyte,System.Nullable`1[int]]:MoveDownDefaultComparer(System.ValueTuple`2[ubyte,System.Nullable`1[int]],int):this (FullOpts)
         -27 (-1.33 % of base) : 174979.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (FullOpts)
         -25 (-5.07 % of base) : 32218.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddDelegateOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature]):this (FullOpts)
         -23 (-1.89 % of base) : 268147.dasm - System.Xml.EncodingStreamWrapper:.ctor(System.IO.Stream,System.Text.Encoding):this (FullOpts)
         -22 (-4.19 % of base) : 254475.dasm - System.Linq.OrderedImplicitlyStableEnumerable`1[long]:TryGetFirstOrLast(byref,ubyte):long:this (FullOpts)
         -21 (-1.98 % of base) : 68430.dasm - System.Xml.XmlDataDocument:OnRowChanging(System.Object,System.Data.DataRowChangeEventArgs):this (FullOpts)

Top method regressions (percentages):
          16 (3.80 % of base) : 167237.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
          16 (3.80 % of base) : 167239.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
          14 (2.11 % of base) : 82904.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertyAccessorSymbol:GetReturnType(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceModuleSymbol,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
           1 (0.02 % of base) : 64992.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)

Top method improvements (percentages):
        -577 (-93.37 % of base) : 177905.dasm - System.Xml.Serialization.XmlSerializationReader:ReadTypedNull(System.Xml.XmlQualifiedName):System.Object:this (FullOpts)
          -7 (-41.18 % of base) : 243535.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
         -19 (-37.25 % of base) : 255496.dasm - System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
         -30 (-21.74 % of base) : 260685.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
         -20 (-16.67 % of base) : 260704.dasm - System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
         -10 (-14.71 % of base) : 264816.dasm - System.Net.Sockets.UdpReceiveResult:op_Equality(System.Net.Sockets.UdpReceiveResult,System.Net.Sockets.UdpReceiveResult):ubyte (FullOpts)
         -17 (-14.53 % of base) : 260681.dasm - System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
         -10 (-14.49 % of base) : 264815.dasm - System.Net.Sockets.UdpReceiveResult:Equals(System.Net.Sockets.UdpReceiveResult):ubyte:this (FullOpts)
         -37 (-12.67 % of base) : 63622.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
         -10 (-12.66 % of base) : 264817.dasm - System.Net.Sockets.UdpReceiveResult:op_Inequality(System.Net.Sockets.UdpReceiveResult,System.Net.Sockets.UdpReceiveResult):ubyte (FullOpts)
         -10 (-11.63 % of base) : 264814.dasm - System.Net.Sockets.UdpReceiveResult:Equals(System.Object):ubyte:this (FullOpts)
         -10 (-10.64 % of base) : 290433.dasm - System.Transactions.Oletx.OletxTransactionManager:ConvertIsolationLevelFromProxyValue(int):int (FullOpts)
          -6 (-9.38 % of base) : 2861.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
          -6 (-8.33 % of base) : 2849.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
          -9 (-8.26 % of base) : 260699.dasm - System.Net.Mail.StartTlsCommand:CheckResponse(int,System.String) (FullOpts)
         -14 (-7.91 % of base) : 77766.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:GetUnassignedSymbolFirstLocation(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess):Microsoft.CodeAnalysis.Location:this (FullOpts)
         -14 (-7.87 % of base) : 156980.dasm - Microsoft.CodeAnalysis.Collections.CachingDictionary`2[System.__Canon,System.Nullable`1[int]]:EnsureFullyPopulated():System.Collections.Generic.IDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]]]:this (FullOpts)
         -14 (-7.87 % of base) : 118956.dasm - Microsoft.CodeAnalysis.Collections.CachingDictionary`2[System.__Canon,System.Nullable`1[int]]:EnsureFullyPopulated():System.Collections.Generic.IDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]]]:this (FullOpts)
         -34 (-7.85 % of base) : 226040.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.Nullable`1[int]]:MoveDownDefaultComparer(System.ValueTuple`2[System.__Canon,System.Nullable`1[int]],int):this (FullOpts)
         -28 (-7.25 % of base) : 226041.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.Nullable`1[int]]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.Nullable`1[int]],int):this (FullOpts)


libraries_tests.run.windows.x86.Release.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 186645391 (overridden on cmd)
Total bytes of diff: 186636364 (overridden on cmd)
Total bytes of delta: -9027 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          33 : 598873.dasm (2.58 % of base)
          32 : 598762.dasm (2.11 % of base)
          20 : 589058.dasm (2.07 % of base)
          17 : 589140.dasm (1.80 % of base)
          17 : 589098.dasm (1.90 % of base)
          17 : 589043.dasm (1.92 % of base)
          15 : 78715.dasm (1.22 % of base)
          13 : 586155.dasm (0.82 % of base)
          12 : 584438.dasm (1.35 % of base)
           4 : 506964.dasm (0.07 % of base)
           2 : 526155.dasm (1.71 % of base)
           2 : 482055.dasm (0.24 % of base)
           1 : 598075.dasm (0.07 % of base)

Top file improvements (bytes):
        -150 : 470666.dasm (-2.94 % of base)
        -130 : 593478.dasm (-2.10 % of base)
        -129 : 470788.dasm (-1.90 % of base)
        -109 : 51315.dasm (-1.15 % of base)
         -97 : 49717.dasm (-7.15 % of base)
         -86 : 157633.dasm (-0.88 % of base)
         -86 : 580902.dasm (-5.09 % of base)
         -79 : 503359.dasm (-5.10 % of base)
         -75 : 166509.dasm (-0.31 % of base)
         -73 : 579261.dasm (-1.71 % of base)
         -69 : 150584.dasm (-5.62 % of base)
         -66 : 540291.dasm (-5.21 % of base)
         -66 : 506012.dasm (-4.49 % of base)
         -60 : 262882.dasm (-5.34 % of base)
         -59 : 552717.dasm (-4.81 % of base)
         -59 : 361046.dasm (-5.29 % of base)
         -56 : 372998.dasm (-2.54 % of base)
         -55 : 13533.dasm (-6.08 % of base)
         -55 : 570287.dasm (-6.66 % of base)
         -51 : 373009.dasm (-1.93 % of base)

62 total files with Code Size differences (49 improved, 13 regressed), 5 unchanged.

Top method regressions (bytes):
          33 (2.58 % of base) : 598873.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33117_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          32 (2.11 % of base) : 598762.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33072_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (2.07 % of base) : 589058.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29496_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          17 (1.92 % of base) : 589043.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29493_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          17 (1.90 % of base) : 589098.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29499_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          17 (1.80 % of base) : 589140.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29502_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          15 (1.22 % of base) : 78715.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<BuildMembersAndInitializers>g__getDeclaredMembersAndInitializers|171_0():Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializers:this (Tier1)
          13 (0.82 % of base) : 586155.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28447_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          12 (1.35 % of base) : 584438.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex27931_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           4 (0.07 % of base) : 506964.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<DictionaryOfList>d__36:MoveNext():this (Tier0-FullOpts)
           2 (1.71 % of base) : 526155.dasm - System.ArgumentOutOfRangeException:ThrowIfGreaterThan[float](float,float,System.String) (Instrumented Tier1)
           2 (0.24 % of base) : 482055.dasm - System.Security.Cryptography.CapiHelper:ReadDSSSeed(System.Security.Cryptography.DSAParameters,System.IO.BinaryReader,ubyte) (Tier1)
           1 (0.07 % of base) : 598075.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32552_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method improvements (bytes):
        -150 (-2.94 % of base) : 470666.dasm - System.Security.Cryptography.CapiHelper:ToRSAParameters(ubyte[],ubyte):System.Security.Cryptography.RSAParameters (Tier1)
        -130 (-2.10 % of base) : 593478.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
        -129 (-1.90 % of base) : 470788.dasm - System.Security.Cryptography.CapiHelper:ToDSAParameters(ubyte[],ubyte,ubyte[]):System.Security.Cryptography.DSAParameters (Tier1)
        -109 (-1.15 % of base) : 51315.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
         -97 (-7.15 % of base) : 49717.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:GetAttributesBag(byref,ubyte):Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (Tier1)
         -86 (-5.09 % of base) : 580902.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeIsPatternExpression(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundPattern,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
         -86 (-0.88 % of base) : 157633.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
         -79 (-5.10 % of base) : 503359.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadHashSetTOfHashSetT>d__190:MoveNext():this (Tier0-FullOpts)
         -75 (-0.31 % of base) : 166509.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
         -73 (-1.71 % of base) : 579261.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitForStatement(Microsoft.CodeAnalysis.CSharp.BoundForStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
         -69 (-5.62 % of base) : 150584.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:SetOrAdd(int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]],ubyte,byref,byref):System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:this (Tier1)
         -66 (-4.49 % of base) : 506012.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadGenericLinkedListOfGenericLinkedList>d__194:MoveNext():this (Tier0-FullOpts)
         -66 (-5.21 % of base) : 540291.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadGenericLinkedListOfGenericLinkedList>d__233:MoveNext():this (Tier0-FullOpts)
         -60 (-5.34 % of base) : 262882.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (Tier0-FullOpts)
         -59 (-5.29 % of base) : 361046.dasm - System.Net.WebSockets.Client.Tests.LoopbackHelper+<WebSocketHandshakeAsync>d__0:MoveNext():this (Tier0-FullOpts)
         -59 (-4.81 % of base) : 552717.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadHashSetTOfHashSetT>d__229:MoveNext():this (Tier0-FullOpts)
         -56 (-2.54 % of base) : 372998.dasm - System.Xml.XmlReaderSettings:CreateReader(System.IO.Stream,System.Uri,System.String,System.Xml.XmlParserContext):System.Xml.XmlReader:this (Tier1)
         -55 (-6.66 % of base) : 570287.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:GetAttributesBag(byref,ubyte):Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (Tier1)
         -55 (-6.08 % of base) : 13533.dasm - Microsoft.Interop.ComInterfaceInfo:TryGetGuid(Microsoft.CodeAnalysis.INamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Syntax.InterfaceDeclarationSyntax,byref,byref):ubyte (Tier0-FullOpts)
         -51 (-1.93 % of base) : 373009.dasm - System.Xml.XmlTextReaderImpl:FinishInitStream():this (Tier1)

Top method regressions (percentages):
          33 (2.58 % of base) : 598873.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33117_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          32 (2.11 % of base) : 598762.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33072_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (2.07 % of base) : 589058.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29496_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          17 (1.92 % of base) : 589043.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29493_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          17 (1.90 % of base) : 589098.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29499_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          17 (1.80 % of base) : 589140.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29502_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           2 (1.71 % of base) : 526155.dasm - System.ArgumentOutOfRangeException:ThrowIfGreaterThan[float](float,float,System.String) (Instrumented Tier1)
          12 (1.35 % of base) : 584438.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex27931_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          15 (1.22 % of base) : 78715.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<BuildMembersAndInitializers>g__getDeclaredMembersAndInitializers|171_0():Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializers:this (Tier1)
          13 (0.82 % of base) : 586155.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28447_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           2 (0.24 % of base) : 482055.dasm - System.Security.Cryptography.CapiHelper:ReadDSSSeed(System.Security.Cryptography.DSAParameters,System.IO.BinaryReader,ubyte) (Tier1)
           4 (0.07 % of base) : 506964.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<DictionaryOfList>d__36:MoveNext():this (Tier0-FullOpts)
           1 (0.07 % of base) : 598075.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32552_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method improvements (percentages):
         -35 (-48.61 % of base) : 548654.dasm - System.Text.Json.JsonSerializerOptions:ConfigureForJsonSerializer():this (Tier1)
         -37 (-37.76 % of base) : 153769.dasm - 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)
         -37 (-37.76 % of base) : 80870.dasm - 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)
         -37 (-37.76 % of base) : 57663.dasm - 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)
         -37 (-37.76 % of base) : 593194.dasm - 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)
         -37 (-37.76 % of base) : 77923.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
         -37 (-37.76 % of base) : 53367.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
         -14 (-19.18 % of base) : 561752.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
         -14 (-18.18 % of base) : 584403.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNativeIntegerOverflowingUnaryOperator(int,Microsoft.CodeAnalysis.ConstantValue):System.Object (Tier1)
         -21 (-16.94 % of base) : 571233.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
         -35 (-15.15 % of base) : 50962.dasm - Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:CheckForMeaninglessOnReturn(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):this (Tier1)
         -14 (-14.74 % of base) : 544679.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this (Tier1)
         -14 (-14.74 % of base) : 71740.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this (Tier1)
         -14 (-14.74 % of base) : 199895.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this (Tier1)
         -14 (-14.74 % of base) : 329973.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this (Tier1)
         -14 (-14.74 % of base) : 45309.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this (Tier1)
         -14 (-14.00 % of base) : 78133.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_Succeeded():ubyte:this (Tier1)
         -14 (-14.00 % of base) : 152856.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_Succeeded():ubyte:this (Tier1)
         -14 (-14.00 % of base) : 48175.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_Succeeded():ubyte:this (Tier1)
         -14 (-14.00 % of base) : 570349.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_Succeeded():ubyte:this (Tier1)


librariestestsnotieredcompilation.run.windows.x86.Release.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 103801389 (overridden on cmd)
Total bytes of diff: 103797600 (overridden on cmd)
Total bytes of delta: -3789 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          25 : 280880.dasm (1.54 % of base)
          16 : 183211.dasm (3.80 % of base)
          16 : 183213.dasm (3.80 % of base)
           1 : 57040.dasm (0.02 % of base)

Top file improvements (bytes):
         -83 : 216274.dasm (-2.71 % of base)
         -83 : 216329.dasm (-2.71 % of base)
         -75 : 59835.dasm (-0.31 % of base)
         -69 : 216398.dasm (-2.27 % of base)
         -69 : 216233.dasm (-2.27 % of base)
         -60 : 120788.dasm (-5.34 % of base)
         -59 : 164338.dasm (-5.29 % of base)
         -46 : 150017.dasm (-1.54 % of base)
         -42 : 11170.dasm (-5.36 % of base)
         -37 : 14586.dasm (-12.09 % of base)
         -37 : 56985.dasm (-12.67 % of base)
         -33 : 162102.dasm (-4.04 % of base)
         -33 : 162201.dasm (-4.04 % of base)
         -33 : 162207.dasm (-4.04 % of base)
         -32 : 253770.dasm (-1.73 % of base)
         -32 : 268170.dasm (-1.73 % of base)
         -32 : 148153.dasm (-1.77 % of base)
         -31 : 43593.dasm (-0.48 % of base)
         -31 : 78634.dasm (-11.40 % of base)
         -31 : 4814.dasm (-0.48 % of base)

67 total files with Code Size differences (63 improved, 4 regressed), 6 unchanged.

Top method regressions (bytes):
          25 (1.54 % of base) : 280880.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3253_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          16 (3.80 % of base) : 183211.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
          16 (3.80 % of base) : 183213.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
           1 (0.02 % of base) : 57040.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)

Top method improvements (bytes):
         -83 (-2.71 % of base) : 216274.dasm - System.Tests.DecimalTests_GenericMath:MinMagnitudeNumberTest() (FullOpts)
         -83 (-2.71 % of base) : 216329.dasm - System.Tests.DecimalTests_GenericMath:MinMagnitudeTest() (FullOpts)
         -75 (-0.31 % of base) : 59835.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -69 (-2.27 % of base) : 216398.dasm - System.Tests.DecimalTests_GenericMath:MaxMagnitudeNumberTest() (FullOpts)
         -69 (-2.27 % of base) : 216233.dasm - System.Tests.DecimalTests_GenericMath:MaxMagnitudeTest() (FullOpts)
         -60 (-5.34 % of base) : 120788.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (FullOpts)
         -59 (-5.29 % of base) : 164338.dasm - System.Net.WebSockets.Client.Tests.LoopbackHelper+<WebSocketHandshakeAsync>d__0:MoveNext():this (FullOpts)
         -46 (-1.54 % of base) : 150017.dasm - System.SpanTests.ReadOnlySpanTests:TestMatchMany_Char() (FullOpts)
         -42 (-5.36 % of base) : 11170.dasm - Microsoft.Interop.ComInterfaceInfo:TryGetGuid(Microsoft.CodeAnalysis.INamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Syntax.InterfaceDeclarationSyntax,byref,byref):ubyte (FullOpts)
         -37 (-12.67 % of base) : 56985.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
         -37 (-12.09 % of base) : 14586.dasm - Microsoft.CodeAnalysis.CSharp.CodeGeneration.CSharpSyntaxGenerator:GetAllowedModifiers(ushort):Microsoft.CodeAnalysis.Editing.DeclarationModifiers (FullOpts)
         -33 (-4.04 % of base) : 162102.dasm - System.Net.Tests.HttpWebRequestTest+<>c+<<SendHttpGetRequest_WithCachePolicyBypassCache_DoNotAddHeaders>b__145_1>d:MoveNext():this (FullOpts)
         -33 (-4.04 % of base) : 162207.dasm - System.Net.Tests.HttpWebRequestTest+<>c+<<SendHttpGetRequest_WithGlobalCachePolicyBypassCache_DoNotAddCacheHeaders>b__144_2>d:MoveNext():this (FullOpts)
         -33 (-4.04 % of base) : 162201.dasm - System.Net.Tests.WebRequestTest+<>c+<<SendGetRequest_WithGlobalCachePolicyBypassCache_DoNotAddCacheHeaders>b__21_2>d:MoveNext():this (FullOpts)
         -32 (-1.77 % of base) : 148153.dasm - System.Tests.BinaryDataTests+<CanSeek>d__33:MoveNext():this (FullOpts)
         -32 (-1.73 % of base) : 253770.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<RunAsCollectionElementTest>d__23`1[ubyte]:MoveNext():this (FullOpts)
         -32 (-1.73 % of base) : 268170.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<RunAsCollectionElementTest>d__23`1[ubyte]:MoveNext():this (FullOpts)
         -31 (-0.48 % of base) : 43593.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
         -31 (-0.48 % of base) : 4814.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
         -31 (-11.40 % of base) : 78634.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,int]:MoveDownDefaultComparer(System.ValueTuple`2[System.__Canon,int],int):this (FullOpts)

Top method regressions (percentages):
          16 (3.80 % of base) : 183211.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
          16 (3.80 % of base) : 183213.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
          25 (1.54 % of base) : 280880.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3253_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           1 (0.02 % of base) : 57040.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)

Top method improvements (percentages):
         -19 (-37.25 % of base) : 147577.dasm - System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
         -17 (-25.00 % of base) : 5385.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
         -30 (-21.74 % of base) : 159041.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
         -14 (-21.54 % of base) : 43846.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
         -14 (-21.54 % of base) : 49548.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
         -20 (-16.67 % of base) : 159029.dasm - System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
         -17 (-14.53 % of base) : 159034.dasm - System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
         -37 (-12.67 % of base) : 56985.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
         -37 (-12.09 % of base) : 14586.dasm - Microsoft.CodeAnalysis.CSharp.CodeGeneration.CSharpSyntaxGenerator:GetAllowedModifiers(ushort):Microsoft.CodeAnalysis.Editing.DeclarationModifiers (FullOpts)
         -31 (-11.40 % of base) : 78634.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,int]:MoveDownDefaultComparer(System.ValueTuple`2[System.__Canon,int],int):this (FullOpts)
         -14 (-9.72 % of base) : 10044.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
         -14 (-9.66 % of base) : 14195.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)
         -14 (-8.97 % of base) : 278192.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)
         -26 (-8.13 % of base) : 142877.dasm - System.Linq.Enumerable:Max[double,double](System.Collections.Generic.IEnumerable`1[double],System.Func`2[double,double]):double (FullOpts)
         -14 (-7.87 % of base) : 13153.dasm - Microsoft.CodeAnalysis.Collections.CachingDictionary`2[System.ReadOnlyMemory`1[ushort],System.__Canon]:EnsureFullyPopulated():System.Collections.Generic.IDictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:this (FullOpts)
         -27 (-7.65 % of base) : 77435.dasm - System.Collections.Tests.List_Generic_Tests`1[System.__Canon]:Constructor_IEnumerable(int,int,int,int,int):this (FullOpts)
         -14 (-7.00 % of base) : 45380.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:GetFirstMemberKind(ubyte):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this (FullOpts)
         -14 (-6.76 % of base) : 52305.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:GetFirstMemberKind(ubyte):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this (FullOpts)
         -14 (-6.33 % of base) : 14691.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:GetFirstMemberKind(ubyte):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this (FullOpts)
         -14 (-6.19 % of base) : 21513.dasm - System.Uri:get_HostNameType():int:this (FullOpts)


realworld.run.windows.x86.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 11353700 (overridden on cmd)
Total bytes of diff: 11352769 (overridden on cmd)
Total bytes of delta: -931 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           1 : 29513.dasm (0.02 % of base)

Top file improvements (bytes):
        -108 : 4501.dasm (-36.61 % of base)
         -60 : 5863.dasm (-5.34 % of base)
         -47 : 9592.dasm (-4.71 % of base)
         -40 : 8746.dasm (-2.48 % of base)
         -37 : 28981.dasm (-12.67 % of base)
         -34 : 1468.dasm (-4.40 % of base)
         -30 : 24505.dasm (-0.97 % of base)
         -30 : 27173.dasm (-2.12 % of base)
         -28 : 21205.dasm (-0.56 % of base)
         -25 : 26906.dasm (-5.07 % of base)
         -22 : 16292.dasm (-1.90 % of base)
         -22 : 7026.dasm (-1.69 % of base)
         -20 : 24219.dasm (-1.55 % of base)
         -20 : 5143.dasm (-6.71 % of base)
         -18 : 32440.dasm (-4.11 % of base)
         -18 : 34122.dasm (-0.75 % of base)
         -18 : 10184.dasm (-24.66 % of base)
         -17 : 7927.dasm (-0.47 % of base)
         -15 : 10187.dasm (-3.25 % of base)
         -15 : 24347.dasm (-2.17 % of base)

51 total files with Code Size differences (50 improved, 1 regressed), 2 unchanged.

Top method regressions (bytes):
           1 (0.02 % of base) : 29513.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)

Top method improvements (bytes):
        -108 (-36.61 % of base) : 4501.dasm - FSharp.Compiler.LexFilter:tokenForcesHeadContextClosure@1347(FSharp.Compiler.LexFilter+LexFilterImpl,FSharp.Compiler.Parser+token,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.LexFilter+Context]):ubyte (FullOpts)
         -60 (-5.34 % of base) : 5863.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (FullOpts)
         -47 (-4.71 % of base) : 9592.dasm - FSharp.Compiler.NameResolution:AddResults[System.__Canon](Internal.Utilities.Library.ResultOrException`1[System.__Canon],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
         -40 (-2.48 % of base) : 8746.dasm - FSharp.Compiler.ConstraintSolver:consistent@1992(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,FSharp.Compiler.Text.Range,FSharp.Compiler.ConstraintSolver+OptionalTrace,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TyparConstraint,FSharp.Compiler.TypedTree+TyparConstraint):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
         -37 (-12.67 % of base) : 28981.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
         -34 (-4.40 % of base) : 1468.dasm - BepuUtilities.Collections.QuickSort:Sort[BepuPhysics.CollisionDetection.TypeBatchIndex,BepuPhysics.CollisionDetection.ConstraintRemover+RemovalsForTypeBatch,BepuPhysics.CollisionDetection.ConstraintRemover+TypeBatchIndexComparer](byref,byref,int,int,byref) (FullOpts)
         -30 (-2.12 % of base) : 27173.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetRefEscape(Microsoft.CodeAnalysis.CSharp.BoundExpression,uint):uint:this (FullOpts)
         -30 (-0.97 % of base) : 24505.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:DecodeDllImportAttribute(byref):this (FullOpts)
         -28 (-0.56 % of base) : 21205.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
         -25 (-5.07 % of base) : 26906.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddDelegateOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature]):this (FullOpts)
         -22 (-1.69 % of base) : 7026.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadConstant(FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+HasConstantTag]):FSharp.Compiler.AbstractIL.IL+ILFieldInit (FullOpts)
         -22 (-1.90 % of base) : 16292.dasm - Microsoft.ML.Data.EvaluatorBase`1[System.__Canon]:ProcessData(Microsoft.ML.IDataView,Microsoft.ML.Data.RoleMappedSchema,System.Func`2[int,ubyte],System.__Canon,System.__Canon[]):System.Collections.Generic.Dictionary`2[System.String,Microsoft.ML.IDataView]:this (FullOpts)
         -20 (-6.71 % of base) : 5143.dasm - FSharp.Compiler.LexFilter:infixTokenLength(FSharp.Compiler.Parser+token):int (FullOpts)
         -20 (-1.55 % of base) : 24219.dasm - Microsoft.CodeAnalysis.AttributeData:DecodeStructLayoutAttribute[System.__Canon,System.__Canon,System.__Canon,short](byref,int,int,Microsoft.CodeAnalysis.CommonMessageProvider) (FullOpts)
         -18 (-24.66 % of base) : 10184.dasm - FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
         -18 (-4.11 % of base) : 32440.dasm - Microsoft.PowerShell.Commands.RegistryProvider:GetHiveRoot(System.String):Microsoft.PowerShell.Commands.IRegistryWrapper:this (FullOpts)
         -18 (-0.75 % of base) : 34122.dasm - System.Management.Automation.PipelineOps:AddCommand(System.Management.Automation.Internal.PipelineProcessor,System.Management.Automation.CommandParameterInternal[],System.Management.Automation.Language.CommandBaseAst,System.Management.Automation.CommandRedirection[],System.Management.Automation.ExecutionContext):System.Management.Automation.CommandProcessorBase (FullOpts)
         -17 (-0.47 % of base) : 7927.dasm - 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)
         -15 (-3.25 % of base) : 10187.dasm - FSharp.Compiler.Infos+PropInfo:get_IsIndexer():ubyte:this (FullOpts)
         -15 (-2.17 % of base) : 24347.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:DecodeMemberNotNullWhenAttribute[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref) (FullOpts)

Top method regressions (percentages):
           1 (0.02 % of base) : 29513.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)

Top method improvements (percentages):
        -108 (-36.61 % of base) : 4501.dasm - FSharp.Compiler.LexFilter:tokenForcesHeadContextClosure@1347(FSharp.Compiler.LexFilter+LexFilterImpl,FSharp.Compiler.Parser+token,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.LexFilter+Context]):ubyte (FullOpts)
         -18 (-24.66 % of base) : 10184.dasm - FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
         -37 (-12.67 % of base) : 28981.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
         -14 (-9.86 % of base) : 24895.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
         -14 (-9.66 % of base) : 25639.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)
         -14 (-8.97 % of base) : 26137.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)
         -20 (-6.71 % of base) : 5143.dasm - FSharp.Compiler.LexFilter:infixTokenLength(FSharp.Compiler.Parser+token):int (FullOpts)
         -14 (-6.19 % of base) : 17039.dasm - System.Uri:get_HostNameType():int:this (FullOpts)
         -60 (-5.34 % of base) : 5863.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (FullOpts)
          -5 (-5.15 % of base) : 23583.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AttributeDataExtensions:DecodeNotNullIfNotNullAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):System.String (FullOpts)
         -25 (-5.07 % of base) : 26906.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddDelegateOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature]):this (FullOpts)
         -47 (-4.71 % of base) : 9592.dasm - FSharp.Compiler.NameResolution:AddResults[System.__Canon](Internal.Utilities.Library.ResultOrException`1[System.__Canon],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
          -6 (-4.69 % of base) : 30260.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:<RewriteTupleInput>g__makeReplacement|17_1(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode (FullOpts)
          -5 (-4.50 % of base) : 24021.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbolBase:DecodeMaybeNullWhenOrNotNullWhenOrDoesNotReturnIfAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):System.Nullable`1[ubyte] (FullOpts)
         -34 (-4.40 % of base) : 1468.dasm - BepuUtilities.Collections.QuickSort:Sort[BepuPhysics.CollisionDetection.TypeBatchIndex,BepuPhysics.CollisionDetection.ConstraintRemover+RemovalsForTypeBatch,BepuPhysics.CollisionDetection.ConstraintRemover+TypeBatchIndexComparer](byref,byref,int,int,byref) (FullOpts)
         -18 (-4.11 % of base) : 32440.dasm - Microsoft.PowerShell.Commands.RegistryProvider:GetHiveRoot(System.String):Microsoft.PowerShell.Commands.IRegistryWrapper:this (FullOpts)
          -7 (-4.02 % of base) : 22223.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<BuildMembersAndInitializers>g__buildDeclaredMembersAndInitializers|169_1(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializers:this (FullOpts)
         -14 (-3.79 % of base) : 21513.dasm - Microsoft.CodeAnalysis.AttributeData:DecodeAttributeUsageAttribute(Microsoft.CodeAnalysis.TypedConstant,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[System.String,Microsoft.CodeAnalysis.TypedConstant]]):Microsoft.CodeAnalysis.AttributeUsageInfo (FullOpts)
         -15 (-3.25 % of base) : 10187.dasm - FSharp.Compiler.Infos+PropInfo:get_IsIndexer():ubyte:this (FullOpts)
          -8 (-3.24 % of base) : 21595.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:TrackAnalyzedNullabilityThroughConversionGroup(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)