Assembly Diffs

linux arm

Diffs are based on 1,383,559 contexts (345,734 MinOpts, 1,037,825 FullOpts).

MISSED contexts: base: 54,343 (3.61%), diff: 121,291 (8.06%)

Overall (+1,422,504 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 12,211,474 +144,216
benchmarks.run_pgo.linux.arm.checked.mch 21,667,458 +92,932
benchmarks.run_tiered.linux.arm.checked.mch 16,812,366 +126,954
coreclr_tests.run.linux.arm.checked.mch 315,775,792 +241,110
libraries.crossgen2.linux.arm.checked.mch 31,059,614 +96,226
libraries.pmi.linux.arm.checked.mch 40,595,468 +236,910
libraries_tests.run.linux.arm.Release.mch 16,008,592 +74,398
librariestestsnotieredcompilation.run.linux.arm.Release.mch 73,558,612 +255,992
realworld.run.linux.arm.checked.mch 11,277,914 +153,766

MinOpts (-4 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 4,921,152 +0
benchmarks.run_tiered.linux.arm.checked.mch 7,367,290 -4
coreclr_tests.run.linux.arm.checked.mch 212,434,950 +0
libraries.pmi.linux.arm.checked.mch 106,224 +0
libraries_tests.run.linux.arm.Release.mch 597,060 +0
librariestestsnotieredcompilation.run.linux.arm.Release.mch 10,029,770 +0

FullOpts (+1,422,508 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 11,898,898 +144,216
benchmarks.run_pgo.linux.arm.checked.mch 16,746,306 +92,932
benchmarks.run_tiered.linux.arm.checked.mch 9,445,076 +126,958
coreclr_tests.run.linux.arm.checked.mch 103,340,842 +241,110
libraries.crossgen2.linux.arm.checked.mch 31,058,384 +96,226
libraries.pmi.linux.arm.checked.mch 40,489,244 +236,910
libraries_tests.run.linux.arm.Release.mch 15,411,532 +74,398
librariestestsnotieredcompilation.run.linux.arm.Release.mch 63,528,842 +255,992
realworld.run.linux.arm.checked.mch 10,842,842 +153,766

Example diffs

benchmarks.run.linux.arm.checked.mch

-10 (-22.73%) : 12025.dasm - Jil.Common.Utils+<>cDisplayClass9_0:b6(System.Reflection.FieldInfo):int:this (FullOpts)

@@ -2,26 +2,27 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; optimized using Synthesized PGO +; sp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> r0 this class-hnd single-def <Jil.Common.Utils+<>c__DisplayClass9_0> ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Reflection.FieldInfo>
-; V02 loc0 [V02,T04] ( 2, 1 ) int -> r0 ld-addr-op
+; V02 loc0 [V02,T04] ( 2, 1.04) int -> r0 ld-addr-op
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V05 tmp2 [V05,T00] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V06 tmp3 [V06,T03] ( 3, 2.50) byref -> r0 single-def "Inline stloc first use temp"
+; V06 tmp3 [V06,T03] ( 3, 2.52) byref -> r0 single-def "Inline stloc first use temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M45289_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, 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_M45289_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0-r1] ldr r0, [r0+0x14] @@ -32,25 +33,25 @@ G_M45289_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b blx r3 // <unknown method> ; gcrRegs -[r0-r1] ; byrRegs +[r0]
+ ; gcr arg pop 0
cmp r0, 0
- beq SHORT G_M45289_IG04
+ beq SHORT G_M45289_IG05
;; size=22 bbWeight=1 PerfScore 8.00
-G_M45289_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+G_M45289_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
ldr r0, [r0] ; byrRegs -[r0]
- b SHORT G_M45289_IG06 - ;; size=4 bbWeight=0.50 PerfScore 1.00 -G_M45289_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=2 bbWeight=0.52 PerfScore 0.52 +G_M45289_IG04: ; bbWeight=0.52, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=0.52 PerfScore 0.52 +G_M45289_IG05: ; bbWeight=0.48, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mvn r0, 0x80000000
- ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M45289_IG05: ; bbWeight=0.50, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M45289_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r11,pc} - ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=0.48 PerfScore 0.48 +G_M45289_IG06: ; bbWeight=0.48, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=0.48 PerfScore 0.48
-; Total bytes of code 44, prolog size 6, PerfScore 12.50, instruction count 15, allocated bytes for code 44 (MethodHash=685a4f16) for method Jil.Common.Utils+<>c__DisplayClass9_0:<IdealMemberOrderForWriting>b__6(System.Reflection.FieldInfo):int:this (FullOpts)
+; Total bytes of code 34, prolog size 2, PerfScore 11.00, instruction count 13, allocated bytes for code 34 (MethodHash=685a4f16) for method Jil.Common.Utils+<>c__DisplayClass9_0:<IdealMemberOrderForWriting>b__6(System.Reflection.FieldInfo):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -62,7 +63,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 17 (0x00011) Actual length = 34 (0x000022)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -74,7 +75,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

-44 (-21.36%) : 8528.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateMethod(System.Xml.Serialization.TypeMapping):this (FullOpts)

@@ -2,39 +2,39 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 6, 4.50) ref -> r5 this class-hnd single-def <System.Xml.Serialization.XmlSerializationReaderILGen> -; V01 arg1 [V01,T00] ( 9, 6 ) ref -> r4 class-hnd single-def <System.Xml.Serialization.TypeMapping>
+; V00 this [V00,T02] ( 6, 3.80) ref -> r5 this class-hnd single-def <System.Xml.Serialization.XmlSerializationReaderILGen> +; V01 arg1 [V01,T00] ( 9, 5.75) ref -> r4 class-hnd single-def <System.Xml.Serialization.TypeMapping>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T04] ( 3, 2.50) ref -> r0 class-hnd "spilling QMark2" <System.Xml.Serialization.StructMapping> -; V04 tmp2 [V04,T05] ( 3, 2.50) ref -> r0 class-hnd "spilling QMark2" <<unknown class>> -; V05 tmp3 [V05,T06] ( 3, 2.50) ref -> r0 class-hnd "spilling QMark2" <<unknown class>> -; V06 tmp4 [V06,T10] ( 2, 2 ) int -> r0 "fgMakeTemp is creating a new local variable" -; V07 tmp5 [V07,T07] ( 2, 2 ) ref -> r1 class-hnd single-def "spilling QMark2" <<unknown class>> -; V08 tmp6 [V08,T11] ( 2, 2 ) int -> r0 "fgMakeTemp is creating a new local variable" -; V09 tmp7 [V09,T08] ( 2, 2 ) ref -> r1 class-hnd single-def "spilling QMark2" <<unknown class>> -; V10 tmp8 [V10,T12] ( 2, 2 ) int -> r0 "fgMakeTemp is creating a new local variable" -; V11 tmp9 [V11,T09] ( 2, 2 ) ref -> r1 class-hnd single-def "spilling QMark2" <System.Xml.Serialization.StructMapping> -; V12 tmp10 [V12,T02] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.HashSet`1[System.Xml.Serialization.TypeMapping]>
+; V03 tmp1 [V03,T03] ( 3, 4 ) ref -> r0 class-hnd "spilling QMark2" <System.Xml.Serialization.StructMapping> +; V04 tmp2 [V04,T04] ( 3, 3.20) ref -> r0 class-hnd "spilling QMark2" <<unknown class>> +; V05 tmp3 [V05,T05] ( 3, 2.56) ref -> r0 class-hnd "spilling QMark2" <<unknown class>> +;* V06 tmp4 [V06,T07] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" +; V07 tmp5 [V07,T06] ( 2, 2.05) ref -> r1 class-hnd single-def "spilling QMark2" <<unknown class>> +;* V08 tmp6 [V08,T11] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" +; V09 tmp7 [V09,T09] ( 2, 0.51) ref -> r1 class-hnd single-def "spilling QMark2" <<unknown class>> +;* V10 tmp8 [V10,T10] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" +; V11 tmp9 [V11,T08] ( 2, 0.64) ref -> r1 class-hnd single-def "spilling QMark2" <System.Xml.Serialization.StructMapping> +; V12 tmp10 [V12,T01] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.HashSet`1[System.Xml.Serialization.TypeMapping]>
; V13 tmp11 [V13 ] ( 1, 1 ) int -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V14 cse0 [V14,T03] ( 9, 3 ) int -> r6 multi-def "CSE - aggressive"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M43558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r11,lr} - sub sp, 12 - add r11, sp, 24
+ push {r2,r3,r4,r5,r11,lr} + add r11, sp, 16
mov r5, r0 ; gcrRegs +[r5] mov r4, r1 ; gcrRegs +[r4]
- ;; size=14 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M43558_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ldr r0, [r5+0x2C] ; gcrRegs +[r0] @@ -48,35 +48,25 @@ G_M43558_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b blx r3 // <unknown method> ; gcrRegs -[r0-r1] cmp r0, 0
- bne SHORT G_M43558_IG04
+ beq SHORT G_M43558_IG07
;; size=26 bbWeight=1 PerfScore 10.00
-G_M43558_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[r4-r5] - add sp, 12 - pop {r4,r5,r6,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M43558_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4-r5]
+G_M43558_IG03: ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
mov r0, r4 ; gcrRegs +[r0] cmp r0, 0 beq SHORT G_M43558_IG08
- ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M43558_IG05: ; bbWeight=0.25, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz - ldr r6, [r0] - movw r0, 0xd1ff
+ ;; size=6 bbWeight=0.80 PerfScore 2.40 +G_M43558_IG04: ; bbWeight=0.40, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz + ldr r0, [r0]
; gcrRegs -[r0]
- movt r0, 0xd1ff - cmp r6, r0
+ movw r1, 0xd1ff + movt r1, 0xd1ff + cmp r0, r1
bne SHORT G_M43558_IG08
- ;; size=14 bbWeight=0.25 PerfScore 1.25 -G_M43558_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ;; size=14 bbWeight=0.40 PerfScore 2.00 +G_M43558_IG05: ; bbWeight=0.16, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
mov r1, r4 ; gcrRegs +[r1]
- movw r0, 0xd1ff - movt r0, 0xd1ff - cmp r6, r0 - bne SHORT G_M43558_IG15
mov r0, r5 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -84,81 +74,76 @@ G_M43558_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ldr r3, [r3] blx r3 // <unknown method> ; gcrRegs -[r0-r1 r4-r5]
- ;; size=28 bbWeight=0.50 PerfScore 5.00 -G_M43558_IG07: ; bbWeight=0.50, epilog, nogc, extend - add sp, 12 - pop {r4,r5,r6,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M43558_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=0.16 PerfScore 0.96 +G_M43558_IG06: ; bbWeight=0.16, epilog, nogc, extend + pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=0.16 PerfScore 0.16 +G_M43558_IG07: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=0.20 PerfScore 0.20 +G_M43558_IG08: ; bbWeight=0.64, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4-r5] mov r0, r4 ; gcrRegs +[r0] cmp r0, 0
+ beq SHORT G_M43558_IG13 + ;; size=6 bbWeight=0.64 PerfScore 1.92 +G_M43558_IG09: ; bbWeight=0.32, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz + ldr r0, [r0] + ; gcrRegs -[r0] + movw r1, 0xd1ff + movt r1, 0xd1ff + cmp r0, r1 + bne SHORT G_M43558_IG13 + ;; size=14 bbWeight=0.32 PerfScore 1.60 +G_M43558_IG10: ; bbWeight=0.13, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref + mov r1, r4 + ; gcrRegs +[r1] + mov r0, r5 + ; gcrRegs +[r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r0-r1 r4-r5] + ;; size=16 bbWeight=0.13 PerfScore 0.77 +G_M43558_IG11: ; bbWeight=0.13, epilog, nogc, extend + pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=0.13 PerfScore 0.13 +G_M43558_IG12: ; bbWeight=0.51, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r4-r5] + mov r1, r4 + ; gcrRegs +[r1] + mov r0, r5 + ; gcrRegs +[r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r0-r1 r4-r5] + b SHORT G_M43558_IG07 + ;; size=18 bbWeight=0.51 PerfScore 3.58 +G_M43558_IG13: ; bbWeight=0.51, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r4-r5] + mov r0, r4 + ; gcrRegs +[r0] + cmp r0, 0 + beq SHORT G_M43558_IG07 + ;; size=6 bbWeight=0.51 PerfScore 1.54 +G_M43558_IG14: ; bbWeight=0.26, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz + ldr r0, [r0] + ; gcrRegs -[r0] + movw r1, 0xd1ff + movt r1, 0xd1ff + cmp r0, r1
beq SHORT G_M43558_IG12
- ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M43558_IG09: ; bbWeight=0.25, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz - ldr r6, [r0] - movw r0, 0xd1ff - ; gcrRegs -[r0] - movt r0, 0xd1ff - cmp r6, r0 - bne SHORT G_M43558_IG12 - ;; size=14 bbWeight=0.25 PerfScore 1.25 -G_M43558_IG10: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz - mov r1, r4 - ; gcrRegs +[r1] - movw r0, 0xd1ff - movt r0, 0xd1ff - cmp r6, r0 - bne SHORT G_M43558_IG15 - mov r0, r5 - ; gcrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; gcrRegs -[r0-r1 r4-r5] - ;; size=28 bbWeight=0.50 PerfScore 5.00 -G_M43558_IG11: ; bbWeight=0.50, epilog, nogc, extend - add sp, 12 - pop {r4,r5,r6,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M43558_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4-r5] - mov r0, r4 - ; gcrRegs +[r0] - cmp r0, 0 - beq SHORT G_M43558_IG03 - ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M43558_IG13: ; bbWeight=0.25, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz - ldr r6, [r0] - movw r0, 0xd1ff - ; gcrRegs -[r0] - movt r0, 0xd1ff - cmp r6, r0 - bne SHORT G_M43558_IG03 - ;; size=14 bbWeight=0.25 PerfScore 1.25 -G_M43558_IG14: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz - mov r1, r4 - ; gcrRegs +[r1] - movw r0, 0xd1ff - movt r0, 0xd1ff - cmp r6, r0 - bne SHORT G_M43558_IG15 - mov r0, r5 - ; gcrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; gcrRegs -[r0-r1 r4-r5] - b SHORT G_M43558_IG03 - ;; size=30 bbWeight=0.50 PerfScore 5.50 -G_M43558_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - bkpt - ;; size=2 bbWeight=0 PerfScore 0.00
+ ;; size=14 bbWeight=0.26 PerfScore 1.28 +G_M43558_IG15: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r4-r5] + b SHORT G_M43558_IG07 + ;; size=2 bbWeight=0.13 PerfScore 0.13
-; Total bytes of code 206, prolog size 10, PerfScore 41.75, instruction count 77, allocated bytes for code 206 (MethodHash=1c0655d9) for method System.Xml.Serialization.XmlSerializationReaderILGen:GenerateMethod(System.Xml.Serialization.TypeMapping):this (FullOpts)
+; Total bytes of code 162, prolog size 8, PerfScore 30.66, instruction count 61, allocated bytes for code 162 (MethodHash=1c0655d9) for method System.Xml.Serialization.XmlSerializationReaderILGen:GenerateMethod(System.Xml.Serialization.TypeMapping):this (FullOpts)
; ============================================================ Unwind Info: ...

-18 (-20.45%) : 10455.dasm - System.Runtime.Serialization.XmlFormatGeneratorStatics:get_MemberNamesField():System.Reflection.FieldInfo (FullOpts)

@@ -2,8 +2,10 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; sp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments @@ -11,25 +13,25 @@ ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V01 tmp1 [V01 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V02 tmp2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.FieldInfo>
+; V03 cse0 [V03,T00] ( 4, 3.80) int -> r4 "CSE - aggressive"
; TEMP_01 ref -> [sp+0x04] ;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M50305_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {lr} - sub sp, 12
+ push {r2,r3,r4,lr}
movs r0, 0 str r0, [sp+0x04]
- ;; size=8 bbWeight=1 PerfScore 4.00
+ ;; size=6 bbWeight=1 PerfScore 3.00
G_M50305_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0]
+ movw r4, 0xd1ff + movt r4, 0xd1ff + ldr r0, [r4]
; gcrRegs +[r0] cmp r0, 0 bne SHORT G_M50305_IG04 ;; size=14 bbWeight=1 PerfScore 5.00
-G_M50305_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50305_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movw r0, 0xd1ff movt r0, 0xd1ff @@ -43,28 +45,24 @@ G_M50305_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs +[r0] ; gcr arg pop 0 str r0, [sp+0x04]
- movw r0, 0xd1ff - ; gcrRegs -[r0] - movt r0, 0xd1ff
ldr r1, [sp+0x04] ; gcrRegs +[r1]
+ mov r0, r4 + ; gcrRegs -[r0]
movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1]
- ;; size=52 bbWeight=0.50 PerfScore 8.00
+ ;; size=46 bbWeight=0.80 PerfScore 12.00
G_M50305_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0]
+ ldr r0, [r4]
; gcrRegs +[r0]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M50305_IG05: ; bbWeight=1, epilog, nogc, extend
- add sp, 12 - pop {pc} - ;; size=4 bbWeight=1 PerfScore 2.00
+ pop {r2,r3,r4,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 88, prolog size 8, PerfScore 22.00, instruction count 30, allocated bytes for code 88 (MethodHash=fa293b7e) for method System.Runtime.Serialization.XmlFormatGeneratorStatics:get_MemberNamesField():System.Reflection.FieldInfo (FullOpts)
+; Total bytes of code 70, prolog size 6, PerfScore 22.00, instruction count 25, allocated bytes for code 70 (MethodHash=fa293b7e) for method System.Runtime.Serialization.XmlFormatGeneratorStatics:get_MemberNamesField():System.Reflection.FieldInfo (FullOpts)
; ============================================================ Unwind Info: @@ -76,11 +74,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
+ Function Length : 35 (0x00023) Actual length = 70 (0x000046)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16 - ED 00 pop {lr} ; opsize 16
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16 + FF end
FF end

+34 (+28.33%) : 36916.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan1[uint],uint,System.Span1[uint]) (FullOpts)

@@ -2,86 +2,106 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; fully interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T10] ( 4, 7 ) struct ( 8) [sp+0x34] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T02] ( 4, 10 ) int -> r4 single-def -; V02 arg2 [V02,T03] ( 4, 10 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[uint]>
+; V00 arg0 [V00,T18] ( 4, 4 ) struct ( 8) [sp+0x4C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T12] ( 3, 74.00) int -> r4 single-def +; V02 arg2 [V02,T19] ( 4, 4 ) struct ( 8) [sp+0x54] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[uint]>
;* V03 loc0 [V03 ] ( 0, 0 ) long -> zero-ref
-; V04 loc1 [V04,T00] ( 8, 26 ) int -> r7
+; V04 loc1 [V04,T00] ( 8,434.00) int -> r10
;* V05 loc2 [V05 ] ( 0, 0 ) long -> zero-ref
-; V06 loc3 [V06 ] ( 1, 4 ) long -> [sp+0x08] multireg-ret
+; V06 loc3 [V06 ] ( 1, 72.00) long -> [sp+0x20] multireg-ret
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T13] ( 3, 6 ) int -> r5 "V00.[004..008)" -; V09 cse0 [V09,T04] ( 3, 12 ) int -> r8 "CSE - aggressive" -; V10 rat0 [V10,T11] ( 3, 9 ) int -> r6 "field V03.lo (fldOffset=0x0)" P-INDEP -;* V11 rat1 [V11,T14] ( 0, 0 ) int -> zero-ref "field V03.hi (fldOffset=0x4)" P-INDEP -; V12 rat2 [V12,T05] ( 3, 12 ) int -> r9 "field V05.lo (fldOffset=0x0)" P-INDEP -; V13 rat3 [V13,T06] ( 2, 8 ) int -> r1 "field V05.hi (fldOffset=0x4)" P-INDEP -; V14 rat4 [V14,T07] ( 3, 12 ) int -> r0 "field V06.lo (fldOffset=0x0)" P-INDEP -; V15 rat5 [V15,T12] ( 2, 8 ) int -> r1 "field V06.hi (fldOffset=0x4)" P-INDEP -; V16 rat6 [V16,T01] ( 2, 16 ) int -> r6 "ReplaceWithLclVar is creating a new local variable" -; V17 rat7 [V17 ] ( 1, 8 ) long -> [sp+0x00] multireg-ret "ReplaceWithLclVar is creating a new local variable" -; V18 rat8 [V18,T08] ( 2, 12 ) int -> r0 "field V17.lo (fldOffset=0x0)" P-INDEP -; V19 rat9 [V19,T09] ( 1, 8 ) int -> r1 "field V17.hi (fldOffset=0x4)" P-INDEP
+; V08 tmp1 [V08,T14] ( 2, 73.00) byref -> [sp+0x04] spill-single-def "V00.[000..004)" +; V09 tmp2 [V09,T13] ( 3, 74.00) int -> r6 "V00.[004..008)" +; V10 tmp3 [V10,T15] ( 2, 73.00) byref -> r7 single-def "V02.[000..004)" +; V11 tmp4 [V11,T16] ( 2, 73.00) int -> r8 "V02.[004..008)" +; V12 cse0 [V12,T02] ( 3,216.00) int -> [sp+0x1C] spill-single-def "CSE - aggressive" +;* V13 cse1 [V13 ] ( 0, 0 ) long -> zero-ref "CSE - aggressive" +; V14 rat0 [V14,T10] ( 3,145.00) int -> r9 "field V03.lo (fldOffset=0x0)" P-INDEP +;* V15 rat1 [V15,T17] ( 0, 0 ) int -> zero-ref "field V03.hi (fldOffset=0x4)" P-INDEP +; V16 rat2 [V16,T03] ( 3,216.00) int -> r9 "field V05.lo (fldOffset=0x0)" P-INDEP +; V17 rat3 [V17,T04] ( 2,144.00) int -> r1 "field V05.hi (fldOffset=0x4)" P-INDEP +; V18 rat4 [V18,T05] ( 3,216.00) int -> r0 "field V06.lo (fldOffset=0x0)" P-INDEP +; V19 rat5 [V19,T11] ( 2,144.00) int -> r1 "field V06.hi (fldOffset=0x4)" P-INDEP +; V20 rat6 [V20,T06] ( 3,216.00) int -> [sp+0x18] spill-single-def "field V13.lo (fldOffset=0x0)" P-INDEP +; V21 rat7 [V21,T07] ( 3,216.00) int -> [sp+0x14] spill-single-def "field V13.hi (fldOffset=0x4)" P-INDEP +; V22 rat8 [V22,T01] ( 2,288.00) int -> r9 "ReplaceWithLclVar is creating a new local variable" +; V23 rat9 [V23 ] ( 1,144.00) long -> [sp+0x08] multireg-ret "ReplaceWithLclVar is creating a new local variable" +; V24 rat10 [V24,T08] ( 2,216.00) int -> r0 "field V23.lo (fldOffset=0x0)" P-INDEP +; V25 rat11 [V25,T09] ( 1,144.00) int -> r1 "field V23.hi (fldOffset=0x4)" P-INDEP
;
-; Lcl frame size = 20
+; Lcl frame size = 40
G_M41465_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1,r3}
- push {r4,r5,r6,r7,r8,r9,r11,lr} - sub sp, 20 - add r11, sp, 44
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr} + sub sp, 40 + add r11, sp, 68
mov r4, r2 ;; size=14 bbWeight=1 PerfScore 5.00 G_M41465_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r5, [sp+0x38] - movs r6, 0 - subs r7, r5, 1 - cmp r7, 0
+ ldr r5, [sp+0x4C] + ; byrRegs +[r5] + str r5, [sp+0x04] + ; GC ptr vars +{V08} + ldr r6, [sp+0x50] + ldr r7, [sp+0x54] + ; byrRegs +[r7] + ldr r8, [sp+0x58] + mov r9, 0 + add r10, r6, -1 + cmp r10, 0
blt SHORT G_M41465_IG04
- ;; size=10 bbWeight=1 PerfScore 5.00 -G_M41465_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp r7, r5
+ ;; size=26 bbWeight=1 PerfScore 9.00 +G_M41465_IG03: ; bbWeight=72.00, gcVars=00004000 {V08}, gcrefRegs=0000 {}, byrefRegs=00A0 {r5 r7}, gcvars, byref, isz + cmp r10, r6
bhs SHORT G_M41465_IG05
- ldr r2, [sp+0x34] - ; byrRegs +[r2] - lsl r8, r7, 2 - ldr r2, [r2+r8] - ; byrRegs -[r2] - orr r9, r2, 0 - orr r1, r6, 0 - mov r2, r4 - movs r3, 0
+ lsl lr, r10, 2 + str lr, [sp+0x1C] + ldr r2, [r5+lr] + orr r12, r2, 0 + orr r1, r9, 0 + mov r9, r12 + mov r12, 0 + mov r0, r4 + str r0, [sp+0x18] + str r12, [sp+0x14] + mov r2, r0 + mov r3, r12
mov r0, r9
- movw lr, 0xd1ff - movt lr, 0xd1ff - blx lr // CORINFO_HELP_ULDIV
+ movw r5, 0xd1ff + ; byrRegs -[r5] + movt r5, 0xd1ff + blx r5 // CORINFO_HELP_ULDIV
; gcr arg pop 0
- ldr r2, [sp+0x40] - cmp r7, r2
+ cmp r10, r8
bhs SHORT G_M41465_IG05
- ldr r2, [sp+0x3C] - ; byrRegs +[r2] - str r0, [r2+r8] - mov r2, r4 - ; byrRegs -[r2] - movs r3, 0
+ ldr r5, [sp+0x1C] // [V12 cse0] + str r0, [r7+r5] + ldr r2, [sp+0x18] // [V20 rat6] + ldr r3, [sp+0x14] // [V21 rat7]
movw lr, 0xd1ff movt lr, 0xd1ff blx lr // CORINFO_HELP_LMUL ; gcr arg pop 0
- subs r6, r9, r0 - subs r7, r7, 1 - cmp r7, 0
+ subs r9, r9, r0 + add r10, r10, -1 + cmp r10, 0 + ldr r5, [sp+0x04] // [V08 tmp1] + ; byrRegs +[r5]
bge SHORT G_M41465_IG03
- ;; size=74 bbWeight=4 PerfScore 108.00 -G_M41465_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - add sp, 20 - pop {r4,r5,r6,r7,r8,r9,r11,lr}
+ ;; size=92 bbWeight=72.00 PerfScore 2304.00 +G_M41465_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc + ; byrRegs -[r5 r7] + ; GC ptr vars -{V08} + add sp, 40 + pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 12 bx lr ;; size=10 bbWeight=1 PerfScore 4.00 @@ -93,7 +113,7 @@ G_M41465_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 14, PerfScore 122.00, instruction count 45, allocated bytes for code 120 (MethodHash=c1115e06) for method System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (FullOpts)
+; Total bytes of code 154, prolog size 14, PerfScore 2322.00, instruction count 54, allocated bytes for code 154 (MethodHash=c1115e06) for method System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (FullOpts)
; ============================================================ Unwind Info: @@ -105,21 +125,23 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 120 (0x000078)
+ Function Length : 77 (0x0004d) Actual length = 154 (0x00009a)
---- 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 : 6 (0x06)
+ Epilog Start Index : 5 (0x05)
---- Unwind codes ----
- 05 add sp, sp, #20 ; opsize 16 - AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
+ 0A add sp, sp, #40 ; opsize 16 + DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
EC 0B pop {r0,r1,r3} ; opsize 16 FF end
- ---- Epilog start at index 6 ---- - 05 add sp, sp, #20 ; opsize 16 - AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
+ ---- Epilog start at index 5 ---- + 0A add sp, sp, #40 ; opsize 16 + DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
03 add sp, sp, #12 ; opsize 16 FD end + nop ; opsize 16 FF end
+ FF end + FF end

+18 (+31.03%) : 23397.dasm - System.Memory.Constructors1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan1[System.__Canon]:this (FullOpts)

@@ -2,24 +2,25 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
+; V00 this [V00,T01] ( 5, 4 ) ref -> r4 this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
; V01 RetBuf [V01,T02] ( 4, 4 ) byref -> r1 single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.__Canon]> ;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V05 tmp3 [V05,T00] ( 4, 8 ) ref -> r3 class-hnd single-def "Inlining Arg" <System.__Canon[]>
+; V05 tmp3 [V05,T00] ( 7, 7.92) ref -> r3 class-hnd single-def "Inlining Arg" <System.__Canon[]>
; V06 tmp4 [V06,T05] ( 2, 2 ) byref -> r3 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V07 tmp5 [V07,T08] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP -; V08 cse0 [V08,T06] ( 2, 2 ) int -> r2 "CSE - aggressive" -;* V09 rat0 [V09,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree" -;* V10 rat1 [V10,T07] ( 0, 0 ) int -> zero-ref "runtime lookup" -;* V11 rat2 [V11,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V07 tmp5 [V07,T07] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP +; V08 rat0 [V08,T04] ( 2, 4 ) int -> r3 "Spilling to split statement for tree" +;* V09 rat1 [V09,T06] ( 0, 0 ) int -> zero-ref "runtime lookup" +; V10 rat2 [V10,T03] ( 2, 4 ) int -> r3 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 12 @@ -34,13 +35,25 @@ G_M3040_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M3040_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0002 {r1}, byref, isz ; byrRegs +[r1] ldr r3, [r4]
+ ldr r3, [r3+0x24] + ldr r3, [r3] + ldr r3, [r3+0x18] + cmp r3, 0 + beq SHORT G_M3040_IG07 + ;; size=12 bbWeight=1 PerfScore 6.00 +G_M3040_IG03: ; bbWeight=0.80, gcrefRegs=0010 {r4}, byrefRegs=0002 {r1}, byref, isz
ldr r3, [r4+0x04] ; gcrRegs +[r3] cmp r3, 0
- beq SHORT G_M3040_IG04
+ beq SHORT G_M3040_IG08 + ;; size=6 bbWeight=0.80 PerfScore 2.40 +G_M3040_IG04: ; bbWeight=0.48, gcrefRegs=0018 {r3 r4}, byrefRegs=0002 {r1}, byref, isz + ldr r2, [r3+0x04]
ldr r2, [r3+0x04] cmp r2, 10
- blo SHORT G_M3040_IG04
+ blo SHORT G_M3040_IG08 + ;; size=8 bbWeight=0.48 PerfScore 1.92 +G_M3040_IG05: ; bbWeight=1, gcrefRegs=0018 {r3 r4}, byrefRegs=0002 {r1}, byref
adds r3, 8 ; gcrRegs -[r3] ; byrRegs +[r3] @@ -48,12 +61,19 @@ G_M3040_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0002 {r1}, byr movs r3, 10 ; byrRegs -[r3] str r3, [r1+0x04]
- ;; size=22 bbWeight=1 PerfScore 11.00 -G_M3040_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=8 bbWeight=1 PerfScore 4.00 +G_M3040_IG06: ; bbWeight=1, epilog, nogc, extend
add sp, 12 pop {r4,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
-G_M3040_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+G_M3040_IG07: ; bbWeight=0.20, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0002 {r1}, gcvars, byref, isz + ldr r3, [r4+0x04] + ; gcrRegs +[r3] + cmp r3, 0 + bne SHORT G_M3040_IG04 + ;; size=6 bbWeight=0.20 PerfScore 0.60 +G_M3040_IG08: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref + ; gcrRegs -[r3]
; byrRegs -[r1] movw r3, 0xd1ff movt r3, 0xd1ff @@ -62,7 +82,7 @@ G_M3040_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byre bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 58, prolog size 14, PerfScore 18.00, instruction count 23, allocated bytes for code 58 (MethodHash=74f7f41f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 76, prolog size 14, PerfScore 21.92, instruction count 32, allocated bytes for code 76 (MethodHash=74f7f41f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
; ============================================================ Unwind Info: @@ -74,7 +94,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 58 (0x00003a)
+ 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)

+28 (+31.11%) : 4448.dasm - System.Collections.Generic.Stack1[System.ValueTuple3[System.Canon,System.Canon,System.__Canon]]:TryPop(byref):ubyte:this (FullOpts)

@@ -2,34 +2,38 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; sp based frame
+; optimized using Synthesized PGO +; r11 based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 5.50) ref -> r4 this class-hnd single-def <System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]>
+; V00 this [V00,T00] ( 8, 7.20) ref -> r4 this class-hnd single-def <System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]>
; V01 arg1 [V01,T01] ( 4, 3 ) byref -> registers single-def
-; V02 loc0 [V02,T02] ( 4, 3 ) int -> r3 -; V03 loc1 [V03,T04] ( 3, 2.50) ref -> r2 class-hnd exact single-def <<unknown class>>
+; V02 loc0 [V02,T03] ( 4, 3.60) int -> r3 +; V03 loc1 [V03,T05] ( 3, 2.80) ref -> r2 class-hnd exact single-def <<unknown class>>
;* V04 loc2 [V04 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op <System.ValueTuple`3[System.__Canon,System.__Canon,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 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.Item1 (fldOffset=0x0)" P-INDEP ;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.Item2 (fldOffset=0x4)" P-INDEP ;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.Item3 (fldOffset=0x8)" P-INDEP
-; V10 cse0 [V10,T06] ( 3, 1.50) byref -> r5 "CSE - moderate" -;* V11 rat0 [V11,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V10 cse0 [V10,T06] ( 3, 2.40) byref -> r5 "CSE - aggressive" +; V11 rat0 [V11,T04] ( 2, 3.20) int -> r0 "Spilling to split statement for tree"
;* V12 rat1 [V12,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V13 rat2 [V13,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V13 rat2 [V13,T02] ( 2, 3.20) int -> r0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 4
+; Lcl frame size = 8
G_M60687_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r3,r4,r5,lr}
+ push {r2,r3,r4,r5,r11,lr} + add r11, sp, 16 + str r0, [r11-0x0C]
mov r4, r0 ; gcrRegs +[r4]
- ;; size=4 bbWeight=1 PerfScore 2.00
+ ;; size=14 bbWeight=1 PerfScore 4.00
G_M60687_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0002 {r1}, byref, isz ; byrRegs +[r1] ldr r0, [r4+0x08] @@ -38,22 +42,9 @@ G_M60687_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0002 {r1}, by ; gcrRegs +[r2] ldr r0, [r2+0x04] cmp r0, r3
- bhi SHORT G_M60687_IG05
+ bls SHORT G_M60687_IG05
;; size=12 bbWeight=1 PerfScore 6.00
-G_M60687_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0002 {r1}, byref - ; gcrRegs -[r2] - movs r0, 0 - str r0, [r1] - str r0, [r1+0x04] - str r0, [r1+0x08] - ;; size=8 bbWeight=0.50 PerfScore 2.00 -G_M60687_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[r1] - pop {r3,r4,r5,pc} - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M60687_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4}, byrefRegs=0002 {r1}, gcvars, byref - ; gcrRegs +[r2] - ; byrRegs +[r1]
+G_M60687_IG03: ; bbWeight=0.80, gcrefRegs=0014 {r2 r4}, byrefRegs=0002 {r1}, byref, isz
ldr r0, [r4+0x0C] adds r0, r0, 1 str r0, [r4+0x0C] @@ -76,18 +67,42 @@ G_M60687_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4 movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_BYREF
- movs r0, 0
+ ldr r0, [r4]
; byrRegs -[r0]
+ ldr r0, [r0+0x24] + ldr r0, [r0] + ldr r0, [r0+0x0C] + cmp r0, 0 + bne SHORT G_M60687_IG07 + ;; size=64 bbWeight=0.80 PerfScore 20.00 +G_M60687_IG04: ; bbWeight=0.16, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz + ; byrRegs -[r1] + b SHORT G_M60687_IG07 + ;; size=2 bbWeight=0.16 PerfScore 0.16 +G_M60687_IG05: ; bbWeight=0.20, gcrefRegs=0010 {r4}, byrefRegs=0002 {r1}, byref + ; byrRegs -[r5] +[r1] + movs r0, 0 + str r0, [r1] + str r0, [r1+0x04] + str r0, [r1+0x08] + ;; size=8 bbWeight=0.20 PerfScore 0.80 +G_M60687_IG06: ; bbWeight=0.20, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, epilog, nogc + ; byrRegs -[r1] + pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=0.20 PerfScore 0.20 +G_M60687_IG07: ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref + ; byrRegs +[r5] + movs r0, 0
str r0, [r5] str r0, [r5+0x04] str r0, [r5+0x08] movs r0, 1
- ;; size=62 bbWeight=0.50 PerfScore 12.00 -G_M60687_IG06: ; bbWeight=0.50, epilog, nogc, extend - pop {r3,r4,r5,pc} - ;; size=2 bbWeight=0.50 PerfScore 0.50
+ ;; size=10 bbWeight=0.80 PerfScore 4.00 +G_M60687_IG08: ; bbWeight=0.80, epilog, nogc, extend + pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=0.80 PerfScore 0.80
-; Total bytes of code 90, prolog size 2, PerfScore 23.00, instruction count 38, allocated bytes for code 90 (MethodHash=056e12f0) for method System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (FullOpts)
+; Total bytes of code 118, prolog size 12, PerfScore 35.96, instruction count 47, allocated bytes for code 118 (MethodHash=056e12f0) for method System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -99,7 +114,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 45 (0x0002d) Actual length = 90 (0x00005a)
+ Function Length : 59 (0x0003b) Actual length = 118 (0x000076)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -111,7 +126,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- ED 38 pop {r3,r4,r5,lr} ; opsize 16
+ A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32
FF end FF end

benchmarks.run_pgo.linux.arm.checked.mch

-16 (-15.09%) : 289.dasm - System.Diagnostics.Tracing.EventListener:get_EventListenersLock():System.Object (Tier1)

@@ -5,38 +5,29 @@ ; optimized using Dynamic PGO ; r11 based frame ; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 4
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 4
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T00] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V01 tmp1 [V01,T00] ( 3,150 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V02 cse0 [V02,T01] ( 4, 28 ) int -> r4 "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M28655_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
+ push {r4,r5,r11,lr}
add r11, sp, 8 ;; size=8 bbWeight=1 PerfScore 2.00 G_M28655_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0]
+ movw r4, 0xd1ff + movt r4, 0xd1ff + ldr r0, [r4]
; gcrRegs +[r0] cmp r0, 0
- beq SHORT G_M28655_IG05
+ bne SHORT G_M28655_IG04
;; size=14 bbWeight=1 PerfScore 5.00
-G_M28655_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0] - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0] - ; gcrRegs +[r0] - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M28655_IG04: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M28655_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M28655_IG03: ; bbWeight=25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movw r0, 0xd1ff movt r0, 0xd1ff @@ -44,16 +35,16 @@ G_M28655_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref movt r3, 0xd1ff blx r3 // CORINFO_HELP_NEWSFAST ; gcrRegs +[r0]
- mov r4, r0 - ; gcrRegs +[r4] - mov r0, r4
+ mov r5, r0 + ; gcrRegs +[r5] + mov r0, r5
movs r1, 2 movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Collections.Generic.List`1[System.__Canon]:.ctor(int):this ; gcrRegs -[r0]
- mov r1, r4
+ mov r1, r5
; gcrRegs +[r1] movw r0, 0xd1ff movt r0, 0xd1ff @@ -61,35 +52,35 @@ G_M28655_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // <unknown method>
- ; gcrRegs -[r1 r4] +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - ; gcrRegs +[r3] - b SHORT G_M28655_IG03 - ;; size=70 bbWeight=0 PerfScore 0.00
+ ; gcrRegs -[r1 r5] +[r0] + ldr r0, [r4-0x34] + ;; size=62 bbWeight=25 PerfScore 500.00 +G_M28655_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0] + ldr r0, [r4] + ; gcrRegs +[r0] + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M28655_IG05: ; bbWeight=1, epilog, nogc, extend + pop {r4,r5,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 106, prolog size 8, PerfScore 11.00, instruction count 34, allocated bytes for code 106 (MethodHash=4bbe9010) for method System.Diagnostics.Tracing.EventListener:get_EventListenersLock():System.Object (Tier1)
+; Total bytes of code 90, prolog size 8, PerfScore 509.00, instruction count 29, allocated bytes for code 90 (MethodHash=4bbe9010) for method System.Diagnostics.Tracing.EventListener:get_EventListenersLock():System.Object (Tier1)
; ============================================================ 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 : 53 (0x00035) Actual length = 106 (0x00006a) - ---- 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 : 45 (0x0002d) Actual length = 90 (0x00005a) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 30 pop {r4,r5,r11,lr} ; opsize 32
FF end FF end

-16 (-15.09%) : 26347.dasm - System.Diagnostics.Tracing.EventListener:get_EventListenersLock():System.Object (Tier1)

@@ -5,38 +5,29 @@ ; optimized using Dynamic PGO ; r11 based frame ; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T00] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V01 tmp1 [V01,T00] ( 3,600 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V02 cse0 [V02,T01] ( 4,103 ) int -> r4 "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M28655_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
+ push {r4,r5,r11,lr}
add r11, sp, 8 ;; size=8 bbWeight=1 PerfScore 2.00 G_M28655_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0]
+ movw r4, 0xd1ff + movt r4, 0xd1ff + ldr r0, [r4]
; gcrRegs +[r0] cmp r0, 0
- beq SHORT G_M28655_IG05
+ bne SHORT G_M28655_IG04
;; size=14 bbWeight=1 PerfScore 5.00
-G_M28655_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0] - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0] - ; gcrRegs +[r0] - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M28655_IG04: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M28655_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M28655_IG03: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movw r0, 0xd1ff movt r0, 0xd1ff @@ -44,16 +35,16 @@ G_M28655_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref movt r3, 0xd1ff blx r3 // CORINFO_HELP_NEWSFAST ; gcrRegs +[r0]
- mov r4, r0 - ; gcrRegs +[r4] - mov r0, r4
+ mov r5, r0 + ; gcrRegs +[r5] + mov r0, r5
movs r1, 2 movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Collections.Generic.List`1[System.__Canon]:.ctor(int):this ; gcrRegs -[r0]
- mov r1, r4
+ mov r1, r5
; gcrRegs +[r1] movw r0, 0xd1ff movt r0, 0xd1ff @@ -61,35 +52,35 @@ G_M28655_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // <unknown method>
- ; gcrRegs -[r1 r4] +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - ; gcrRegs +[r3] - b SHORT G_M28655_IG03 - ;; size=70 bbWeight=0 PerfScore 0.00
+ ; gcrRegs -[r1 r5] +[r0] + ldr r0, [r4-0x34] + ;; size=62 bbWeight=100 PerfScore 2000.00 +G_M28655_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0] + ldr r0, [r4] + ; gcrRegs +[r0] + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M28655_IG05: ; bbWeight=1, epilog, nogc, extend + pop {r4,r5,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 106, prolog size 8, PerfScore 11.00, instruction count 34, allocated bytes for code 106 (MethodHash=4bbe9010) for method System.Diagnostics.Tracing.EventListener:get_EventListenersLock():System.Object (Tier1)
+; Total bytes of code 90, prolog size 8, PerfScore 2009.00, instruction count 29, allocated bytes for code 90 (MethodHash=4bbe9010) for method System.Diagnostics.Tracing.EventListener:get_EventListenersLock():System.Object (Tier1)
; ============================================================ 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 : 53 (0x00035) Actual length = 106 (0x00006a) - ---- 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 : 45 (0x0002d) Actual length = 90 (0x00005a) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 30 pop {r4,r5,r11,lr} ; opsize 32
FF end FF end

-16 (-15.09%) : 26647.dasm - System.Diagnostics.Tracing.EventListener:get_EventListenersLock():System.Object (Tier1)

@@ -5,38 +5,29 @@ ; optimized using Dynamic PGO ; r11 based frame ; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 5
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T00] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V01 tmp1 [V01,T00] ( 3,120 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V02 cse0 [V02,T01] ( 4, 23 ) int -> r4 "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M28655_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
+ push {r4,r5,r11,lr}
add r11, sp, 8 ;; size=8 bbWeight=1 PerfScore 2.00 G_M28655_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0]
+ movw r4, 0xd1ff + movt r4, 0xd1ff + ldr r0, [r4]
; gcrRegs +[r0] cmp r0, 0
- beq SHORT G_M28655_IG05
+ bne SHORT G_M28655_IG04
;; size=14 bbWeight=1 PerfScore 5.00
-G_M28655_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0] - movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0] - ; gcrRegs +[r0] - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M28655_IG04: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M28655_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M28655_IG03: ; bbWeight=20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movw r0, 0xd1ff movt r0, 0xd1ff @@ -44,16 +35,16 @@ G_M28655_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref movt r3, 0xd1ff blx r3 // CORINFO_HELP_NEWSFAST ; gcrRegs +[r0]
- mov r4, r0 - ; gcrRegs +[r4] - mov r0, r4
+ mov r5, r0 + ; gcrRegs +[r5] + mov r0, r5
movs r1, 2 movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Collections.Generic.List`1[System.__Canon]:.ctor(int):this ; gcrRegs -[r0]
- mov r1, r4
+ mov r1, r5
; gcrRegs +[r1] movw r0, 0xd1ff movt r0, 0xd1ff @@ -61,35 +52,35 @@ G_M28655_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // <unknown method>
- ; gcrRegs -[r1 r4] +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - ; gcrRegs +[r3] - b SHORT G_M28655_IG03 - ;; size=70 bbWeight=0 PerfScore 0.00
+ ; gcrRegs -[r1 r5] +[r0] + ldr r0, [r4-0x34] + ;; size=62 bbWeight=20 PerfScore 400.00 +G_M28655_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0] + ldr r0, [r4] + ; gcrRegs +[r0] + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M28655_IG05: ; bbWeight=1, epilog, nogc, extend + pop {r4,r5,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 106, prolog size 8, PerfScore 11.00, instruction count 34, allocated bytes for code 106 (MethodHash=4bbe9010) for method System.Diagnostics.Tracing.EventListener:get_EventListenersLock():System.Object (Tier1)
+; Total bytes of code 90, prolog size 8, PerfScore 409.00, instruction count 29, allocated bytes for code 90 (MethodHash=4bbe9010) for method System.Diagnostics.Tracing.EventListener:get_EventListenersLock():System.Object (Tier1)
; ============================================================ 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 : 53 (0x00035) Actual length = 106 (0x00006a) - ---- 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 : 45 (0x0002d) Actual length = 90 (0x00005a) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 30 pop {r4,r5,r11,lr} ; opsize 32
FF end FF end

+8 (+10.81%) : 6509.dasm - System.Linq.Enumerable+SelectArrayIterator2[ubyte,ushort]:Fill(System.ReadOnlySpan1[ubyte],System.Span1[ushort],System.Func2[ubyte,ushort]) (Tier0-FullOpts)

@@ -2,74 +2,74 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 6.50) struct ( 8) [sp+0x20] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]> -; V01 arg1 [V01,T04] ( 4, 3.50) struct ( 8) [sp+0x28] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ushort]> -; V02 arg2 [V02,T02] ( 2, 8 ) ref -> r4 class-hnd single-def <System.Func`2[ubyte,ushort]> -; V03 loc0 [V03,T00] ( 7, 25 ) int -> r6
+; V00 arg0 [V00,T06] ( 4, 4 ) struct ( 8) [sp+0x28] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]> +; V01 arg1 [V01,T07] ( 4, 4 ) struct ( 8) [sp+0x30] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ushort]> +; V02 arg2 [V02,T01] ( 2,144.00) ref -> r4 class-hnd single-def <System.Func`2[ubyte,ushort]> +; V03 loc0 [V03,T00] ( 7,433.00) int -> r9
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
-; V06 tmp2 [V06,T03] ( 3, 6 ) int -> r5 "V01.[004..008)" -; V07 cse0 [V07,T05] ( 2, 4.50) byref -> r7 hoist "CSE - aggressive" -; V08 cse1 [V08,T06] ( 2, 4.50) int -> r8 hoist "CSE - aggressive"
+; V06 tmp2 [V06,T03] ( 2, 73.00) byref -> r5 single-def "V00.[000..004)" +; V07 tmp3 [V07,T05] ( 2, 73.00) int -> r6 "V00.[004..008)" +; V08 tmp4 [V08,T04] ( 2, 73.00) byref -> r7 single-def "V01.[000..004)" +; V09 tmp5 [V09,T02] ( 3, 74.00) int -> r8 "V01.[004..008)"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M43756_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1,r2,r3}
- push {r4,r5,r6,r7,r8,r9,r11,lr} - add r11, sp, 24 - ldr r4, [sp+0x30]
+ push {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr} + add r11, sp, 32 + ldr r4, [sp+0x38]
; gcrRegs +[r4] ;; size=12 bbWeight=1 PerfScore 4.00 G_M43756_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r5, [sp+0x2C] - movs r6, 0 - cmp r5, 0 - ble SHORT G_M43756_IG05 - ;; size=8 bbWeight=1 PerfScore 4.00 -G_M43756_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - ldr r7, [sp+0x28]
+ ldr r5, [sp+0x28] + ; byrRegs +[r5] + ldr r6, [sp+0x2C] + ldr r7, [sp+0x30]
; byrRegs +[r7]
- ldr r8, [sp+0x24] - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M43756_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, byref, isz - lsl r9, r6, 1 - cmp r6, r8 - bhs SHORT G_M43756_IG06 - ldr r1, [sp+0x20] - ; byrRegs +[r1] - ldrb r1, [r1+r6] - ; byrRegs -[r1]
+ ldr r8, [sp+0x34] + mov r9, 0 + cmp r8, 0 + ble SHORT G_M43756_IG04 + ;; size=20 bbWeight=1 PerfScore 7.00 +G_M43756_IG03: ; bbWeight=72.00, gcrefRegs=0010 {r4}, byrefRegs=00A0 {r5 r7}, byref, isz + lsl r10, r9, 1 + cmp r9, r6 + bhs SHORT G_M43756_IG05 + ldrb r1, [r5+r9]
ldr r0, [r4+0x04] ; gcrRegs +[r0] ldr r3, [r4+0x0C] blx r3 // <unknown method> ; gcrRegs -[r0]
- strh r0, [r7+r9] - adds r6, r6, 1 - cmp r6, r5 - blt SHORT G_M43756_IG04 - ;; size=28 bbWeight=4 PerfScore 48.00 -G_M43756_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ strh r0, [r7+r10] + add r9, r9, 1 + cmp r9, r8 + blt SHORT G_M43756_IG03 + ;; size=30 bbWeight=72.00 PerfScore 792.00 +G_M43756_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4]
- ; byrRegs -[r7] - pop {r4,r5,r6,r7,r8,r9,r11,lr}
+ ; byrRegs -[r5 r7] + pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=1 PerfScore 3.00
-G_M43756_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M43756_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 74, prolog size 10, PerfScore 60.00, instruction count 29, allocated bytes for code 74 (MethodHash=ec295513) for method System.Linq.Enumerable+SelectArrayIterator`2[ubyte,ushort]:Fill(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],System.Func`2[ubyte,ushort]) (Tier0-FullOpts)
+; Total bytes of code 82, prolog size 10, PerfScore 806.00, instruction count 29, allocated bytes for code 82 (MethodHash=ec295513) for method System.Linq.Enumerable+SelectArrayIterator`2[ubyte,ushort]:Fill(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],System.Func`2[ubyte,ushort]) (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -81,18 +81,18 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 41 (0x00029) Actual length = 82 (0x000052)
---- 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 : 5 (0x05) ---- Unwind codes ----
- AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
+ AF F8 pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
EC 0F pop {r0,r1,r2,r3} ; opsize 16 FF end ---- Epilog start at index 5 ----
- AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
+ AF F8 pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16 FD end + nop ; opsize 16 FF end

+12 (+12.77%) : 4831.dasm - System.Linq.Enumerable+SelectArrayIterator2[int,System.__Canon]:Fill(System.ReadOnlySpan1[int],System.Span1[System.__Canon],System.Func2[int,System.__Canon]) (Tier0-FullOpts)

@@ -2,63 +2,64 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ; ;* V00 TypeCtx [V00 ] ( 0, 0 ) int -> zero-ref single-def
-; V01 arg0 [V01,T02] ( 4, 6.50) struct ( 8) [sp+0x24] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[int]> -; V02 arg1 [V02,T05] ( 4, 3.50) struct ( 8) [sp+0x2C] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.__Canon]> -; V03 arg2 [V03,T03] ( 2, 8 ) ref -> r4 class-hnd single-def <System.Func`2[int,System.__Canon]> -; V04 loc0 [V04,T00] ( 6, 21 ) int -> r6
+; V01 arg0 [V01,T07] ( 4, 4 ) struct ( 8) [sp+0x2C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[int]> +; V02 arg1 [V02,T08] ( 4, 4 ) struct ( 8) [sp+0x34] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.__Canon]> +; V03 arg2 [V03,T02] ( 2,144.00) ref -> r4 class-hnd single-def <System.Func`2[int,System.__Canon]> +; V04 loc0 [V04,T00] ( 6,361.00) int -> r9
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
-; V07 tmp2 [V07,T04] ( 3, 6 ) int -> r5 "V02.[004..008)" -; V08 cse0 [V08,T06] ( 2, 4.50) byref -> r7 hoist "CSE - aggressive" -; V09 cse1 [V09,T07] ( 2, 4.50) int -> r8 hoist "CSE - aggressive" -; V10 cse2 [V10,T01] ( 3, 12 ) int -> r1 "CSE - aggressive" -; TEMP_02 byref -> [r11-0x18] -; TEMP_01 ref -> [r11-0x1C]
+; V07 tmp2 [V07,T04] ( 2, 73.00) byref -> r5 single-def "V01.[000..004)" +; V08 tmp3 [V08,T06] ( 2, 73.00) int -> r6 "V01.[004..008)" +; V09 tmp4 [V09,T05] ( 2, 73.00) byref -> r7 single-def "V02.[000..004)" +; V10 tmp5 [V10,T03] ( 3, 74.00) int -> r8 "V02.[004..008)" +; V11 cse0 [V11,T01] ( 3,216.00) int -> r1 "CSE - aggressive" +; TEMP_02 byref -> [r11-0x20] +; TEMP_01 ref -> [r11-0x24]
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M32001_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r1,r2,r3}
- push {r2,r3,r4,r5,r6,r7,r8,r11,lr} - add r11, sp, 28
+ push {r4,r5,r6,r7,r8,r9,r11,lr} + sub sp, 12 + add r11, sp, 36
movs r1, 0 str r1, [sp] str r1, [sp+0x04]
- ldr r4, [sp+0x34]
+ ldr r4, [sp+0x3C]
; gcrRegs +[r4]
- ;; size=18 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 8.00
G_M32001_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r5, [sp+0x30] - movs r6, 0 - cmp r5, 0 - ble SHORT G_M32001_IG05 - ;; size=8 bbWeight=1 PerfScore 4.00 -G_M32001_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - ldr r7, [sp+0x2C]
+ ldr r5, [sp+0x2C] + ; byrRegs +[r5] + ldr r6, [sp+0x30] + ldr r7, [sp+0x34]
; byrRegs +[r7]
- ldr r8, [sp+0x28] - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M32001_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, byref, isz - lsls r1, r6, 2
+ ldr r8, [sp+0x38] + mov r9, 0 + cmp r8, 0 + ble SHORT G_M32001_IG04 + ;; size=20 bbWeight=1 PerfScore 7.00 +G_M32001_IG03: ; bbWeight=72.00, gcrefRegs=0010 {r4}, byrefRegs=00A0 {r5 r7}, byref, isz + lsl r1, r9, 2
adds r0, r7, r1 ; byrRegs +[r0] str r0, [sp+0x04]
- cmp r6, r8 - bhs SHORT G_M32001_IG06 - ldr r3, [sp+0x24] - ; byrRegs +[r3] - ldr r1, [r3+r1]
+ cmp r9, r6 + bhs SHORT G_M32001_IG05 + ldr r1, [r5+r1]
ldr r0, [r4+0x04] ; gcrRegs +[r0] ; byrRegs -[r0] ldr r3, [r4+0x0C]
- ; byrRegs -[r3]
blx r3 // <unknown method> str r0, [sp] ldr r0, [sp+0x04] @@ -71,25 +72,26 @@ G_M32001_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0080 {r7}, by blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- adds r6, r6, 1 - cmp r6, r5 - blt SHORT G_M32001_IG04 - ;; size=42 bbWeight=4 PerfScore 76.00 -G_M32001_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ add r9, r9, 1 + cmp r9, r8 + blt SHORT G_M32001_IG03 + ;; size=44 bbWeight=72.00 PerfScore 1296.00 +G_M32001_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4]
- ; byrRegs -[r7] - pop {r2,r3,r4,r5,r6,r7,r8,r11,lr}
+ ; byrRegs -[r5 r7] + add sp, 12 + pop {r4,r5,r6,r7,r8,r9,r11,lr}
add sp, 12 bx lr
- ;; size=8 bbWeight=1 PerfScore 3.00 -G_M32001_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=10 bbWeight=1 PerfScore 4.00 +G_M32001_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 94, prolog size 16, PerfScore 91.00, instruction count 39, allocated bytes for code 94 (MethodHash=3fe682fe) for method System.Linq.Enumerable+SelectArrayIterator`2[int,System.__Canon]:Fill(System.ReadOnlySpan`1[int],System.Span`1[System.__Canon],System.Func`2[int,System.__Canon]) (Tier0-FullOpts)
+; Total bytes of code 106, prolog size 18, PerfScore 1315.00, instruction count 41, allocated bytes for code 106 (MethodHash=3fe682fe) for method System.Linq.Enumerable+SelectArrayIterator`2[int,System.__Canon]:Fill(System.ReadOnlySpan`1[int],System.Span`1[System.__Canon],System.Func`2[int,System.__Canon]) (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -101,21 +103,21 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
+ Function Length : 53 (0x00035) Actual length = 106 (0x00006a)
---- 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 : 5 (0x05)
+ Epilog Start Index : 6 (0x06)
---- Unwind codes ----
- A9 FC pop {r2,r3,r4,r5,r6,r7,r8,r11,lr} ; opsize 32
+ 03 add sp, sp, #12 ; opsize 16 + AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
EC 0E pop {r1,r2,r3} ; opsize 16 FF end
- ---- Epilog start at index 5 ---- - A9 FC pop {r2,r3,r4,r5,r6,r7,r8,r11,lr} ; opsize 32
+ ---- Epilog start at index 6 ---- + 03 add sp, sp, #12 ; opsize 16 + AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
03 add sp, sp, #12 ; opsize 16 FD end + nop ; opsize 16 FF end
- FF end - FF end

+34 (+20.99%) : 2961.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier0-FullOpts)

@@ -2,159 +2,180 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; fully interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 10, 7.50) byref -> r4 single-def -; V01 arg1 [V01,T02] ( 5, 11.50) int -> r1 single-def -; V02 arg2 [V02,T04] ( 3, 2.50) ubyte -> r3 single-def -; V03 loc0 [V03,T01] ( 8, 15.50) int -> r5 -; V04 loc1 [V04,T00] ( 19, 45.50) int -> r6
+; V00 arg0 [V00,T03] ( 9, 7.15) byref -> r0 single-def +; V01 arg1 [V01,T02] ( 5, 46.11) int -> r1 single-def +; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> r2 single-def +; V03 loc0 [V03,T01] ( 8, 79.06) int -> r3 +; V04 loc1 [V04,T00] ( 19,233.48) int -> lr
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T06] ( 3, 3 ) byref -> r0 single-def "dup spill" -; V07 tmp2 [V07,T07] ( 3, 3 ) int -> r0 "dup spill"
+; V06 tmp1 [V06,T09] ( 3, 0.78) byref -> lr single-def "dup spill" +; V07 tmp2 [V07,T08] ( 3, 0.84) int -> r2 "dup spill"
;* V08 tmp3 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V09 tmp4 [V09,T08] ( 2, 2 ) byref -> r5 single-def "field V08._reference (fldOffset=0x0)" P-INDEP -;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x4)" P-INDEP -; V11 tmp6 [V11,T05] ( 2, 4 ) int -> r5 "Cast away GC"
+;* V09 tmp4 [V09,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V10 tmp5 [V10,T06] ( 3, 2.52) ubyte -> r1 "Inline stloc first use temp" +; V11 tmp6 [V11,T07] ( 2, 2 ) byref -> r3 single-def "field V08._reference (fldOffset=0x0)" P-INDEP +;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x4)" P-INDEP +; V13 tmp8 [V13,T05] ( 2, 4 ) int -> r3 "Cast away GC"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M4398_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r11,lr} - add r11, sp, 16 - mov r4, r0 - ; byrRegs +[r4] - mov r3, r2 - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M4398_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - ldr r5, [r4+0x0C] - ; byrRegs +[r5] - movs r6, 0
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M4398_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ; byrRegs +[r0] + ldr r3, [r0+0x0C] + ; byrRegs +[r3] + mov lr, 0
b SHORT G_M4398_IG04
- ;; size=6 bbWeight=1 PerfScore 3.00 -G_M4398_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref - ; byrRegs -[r5] - adds r6, r6, 1 - ;; size=2 bbWeight=2 PerfScore 2.00 -G_M4398_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - cmp r6, r1
+ ;; size=8 bbWeight=1 PerfScore 3.00 +G_M4398_IG03: ; bbWeight=17.05, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref + ; byrRegs -[r3] + add lr, lr, 1 + ;; size=4 bbWeight=17.05 PerfScore 17.05 +G_M4398_IG04: ; bbWeight=42.11, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp lr, r1
bge SHORT G_M4398_IG06
- ;; size=4 bbWeight=8 PerfScore 16.00 -G_M4398_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - ldrb r2, [r5+r6] - cmp r2, 0
+ ;; size=4 bbWeight=42.11 PerfScore 84.21 +G_M4398_IG05: ; bbWeight=37.89, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrb r12, [r3+lr] + cmp r12, 0
bne SHORT G_M4398_IG03
- ;; size=6 bbWeight=4 PerfScore 12.00 -G_M4398_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - cmp r6, r1 - bne SHORT G_M4398_IG13 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M4398_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - ldrb r2, [r4+0x0A] - uxtb r3, r3 - mov r0, r5 - movw lr, 0xd1ff - movt lr, 0xd1ff - ldr lr, [lr] - blx lr // System.Number:<RoundNumber>g__ShouldRoundUp|121_0(uint,int,ubyte,ubyte):ubyte - ; gcr arg pop 0 - cmp r0, 0 - beq SHORT G_M4398_IG13 - b SHORT G_M4398_IG09 - ;; size=26 bbWeight=0.50 PerfScore 5.00 -G_M4398_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref - subs r6, r6, 1 - ;; size=2 bbWeight=2 PerfScore 2.00 -G_M4398_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - cmp r6, 0 - ble SHORT G_M4398_IG11 - adds r0, r5, r6 - ldrb r0, [r0-0x01] - cmp r0, 57 - beq SHORT G_M4398_IG08 - ;; size=14 bbWeight=4 PerfScore 24.00 -G_M4398_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - adds r0, r5, r6 - subs r0, r0, 1 - ldrb r3, [r0] - adds r3, r3, 1 - strb r3, [r0] - b SHORT G_M4398_IG14 - ;; size=12 bbWeight=0.50 PerfScore 3.00 -G_M4398_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - adds r0, r4, 4 - ; byrRegs +[r0] - ldr r3, [r0] - adds r3, r3, 1 - str r3, [r0] - movs r0, 49 - ; byrRegs -[r0] - strb r0, [r5] - movs r6, 1 - b SHORT G_M4398_IG16 - ;; size=16 bbWeight=0.50 PerfScore 4.00 -G_M4398_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref - subs r6, r6, 1 - ;; size=2 bbWeight=2 PerfScore 2.00 -G_M4398_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - cmp r6, 0 - ble SHORT G_M4398_IG14 - adds r0, r5, r6 - ldrb r0, [r0-0x01] - cmp r0, 48 - beq SHORT G_M4398_IG12 - ;; size=14 bbWeight=4 PerfScore 24.00 -G_M4398_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - cmp r6, 0
+ ;; size=10 bbWeight=37.89 PerfScore 113.68 +G_M4398_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp lr, r1
bne SHORT G_M4398_IG16
- ldrb r0, [r4+0x0A] - cmp r0, 3
+ ldrb r1, [r3+r1] + cmp r1, 0 + beq SHORT G_M4398_IG07 + mov r12, 0 + b SHORT G_M4398_IG08 + ;; size=16 bbWeight=1 PerfScore 7.00 +G_M4398_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref + mov r12, 1 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M4398_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + uxtb r2, r2 + orrs r2, r12, r2 + cmp r2, 0 + bne SHORT G_M4398_IG16 + ;; size=10 bbWeight=1 PerfScore 4.00 +G_M4398_IG09: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp r1, 53 + blt SHORT G_M4398_IG16 + ;; size=4 bbWeight=0.52 PerfScore 1.04 +G_M4398_IG10: ; bbWeight=0.79, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + b SHORT G_M4398_IG12 + ;; size=2 bbWeight=0.79 PerfScore 0.79 +G_M4398_IG11: ; bbWeight=4.61, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref + add lr, lr, -1 + ;; size=4 bbWeight=4.61 PerfScore 4.61 +G_M4398_IG12: ; bbWeight=11.39, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp lr, 0 + ble SHORT G_M4398_IG24 + ;; size=6 bbWeight=11.39 PerfScore 22.77 +G_M4398_IG13: ; bbWeight=10.25, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + add r2, r3, lr + ldrb r2, [r2-0x01] + cmp r2, 57 + beq SHORT G_M4398_IG11 + ;; size=12 bbWeight=10.25 PerfScore 40.99 +G_M4398_IG14: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + add r2, r3, lr + subs r2, r2, 1 + ldrb r1, [r2] + adds r1, r1, 1 + strb r1, [r2] + b SHORT G_M4398_IG18 + ;; size=14 bbWeight=0.14 PerfScore 0.84 +G_M4398_IG15: ; bbWeight=12.44, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref + add lr, lr, -1 + ;; size=4 bbWeight=12.44 PerfScore 12.44 +G_M4398_IG16: ; bbWeight=30.72, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp lr, 0 + ble SHORT G_M4398_IG18 + ;; size=6 bbWeight=30.72 PerfScore 61.44 +G_M4398_IG17: ; bbWeight=27.65, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + add r2, r3, lr + ldrb r2, [r2-0x01] + cmp r2, 48
beq SHORT G_M4398_IG15
- movs r0, 0 - strb r0, [r4+0x08] - ;; size=14 bbWeight=0.50 PerfScore 3.50 -G_M4398_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref - movs r0, 0 - str r0, [r4+0x04] - ;; size=4 bbWeight=0.50 PerfScore 1.00 -G_M4398_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref - movs r0, 0 - strb r0, [r5+r6] - str r6, [r4] - mov r0, r4 - ; byrRegs +[r0]
+ ;; size=12 bbWeight=27.65 PerfScore 110.59 +G_M4398_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + cmp lr, 0 + bne SHORT G_M4398_IG22 + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M4398_IG19: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrb r2, [r0+0x0A] + cmp r2, 3 + beq SHORT G_M4398_IG21 + ;; size=6 bbWeight=0.80 PerfScore 2.40 +G_M4398_IG20: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref + movs r2, 0 + strb r2, [r0+0x08] + ;; size=4 bbWeight=0.42 PerfScore 0.83 +G_M4398_IG21: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref + movs r2, 0 + str r2, [r0+0x04] + ;; size=4 bbWeight=0.80 PerfScore 1.60 +G_M4398_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref + movs r2, 0 + strb r2, [r3+lr] + str lr, [r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; byrRegs -[r0 r4]
+ ; byrRegs -[r0]
; gcr arg pop 0 ...

benchmarks.run_tiered.linux.arm.checked.mch

-10 (-22.73%) : 24983.dasm - Jil.Common.Utils+<>cDisplayClass9_0:b6(System.Reflection.FieldInfo):int:this (Tier1)

@@ -2,26 +2,27 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Tier1 code ; optimized code
-; r11 based frame
+; optimized using Synthesized PGO +; sp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> r0 this class-hnd single-def <Jil.Common.Utils+<>c__DisplayClass9_0> ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Reflection.FieldInfo>
-; V02 loc0 [V02,T04] ( 2, 1 ) int -> r0 ld-addr-op
+; V02 loc0 [V02,T04] ( 2, 1.04) int -> r0 ld-addr-op
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V05 tmp2 [V05,T00] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V06 tmp3 [V06,T03] ( 3, 2.50) byref -> r0 single-def "Inline stloc first use temp"
+; V06 tmp3 [V06,T03] ( 3, 2.52) byref -> r0 single-def "Inline stloc first use temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M45289_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, 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_M45289_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0-r1] ldr r0, [r0+0x14] @@ -32,25 +33,25 @@ G_M45289_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b blx r3 // <unknown method> ; gcrRegs -[r0-r1] ; byrRegs +[r0]
+ ; gcr arg pop 0
cmp r0, 0
- beq SHORT G_M45289_IG04
+ beq SHORT G_M45289_IG05
;; size=22 bbWeight=1 PerfScore 8.00
-G_M45289_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+G_M45289_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
ldr r0, [r0] ; byrRegs -[r0]
- b SHORT G_M45289_IG06 - ;; size=4 bbWeight=0.50 PerfScore 1.00 -G_M45289_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=2 bbWeight=0.52 PerfScore 0.52 +G_M45289_IG04: ; bbWeight=0.52, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=0.52 PerfScore 0.52 +G_M45289_IG05: ; bbWeight=0.48, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mvn r0, 0x80000000
- ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M45289_IG05: ; bbWeight=0.50, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M45289_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r11,pc} - ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=0.48 PerfScore 0.48 +G_M45289_IG06: ; bbWeight=0.48, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=0.48 PerfScore 0.48
-; Total bytes of code 44, prolog size 6, PerfScore 12.50, instruction count 15, allocated bytes for code 44 (MethodHash=685a4f16) for method Jil.Common.Utils+<>c__DisplayClass9_0:<IdealMemberOrderForWriting>b__6(System.Reflection.FieldInfo):int:this (Tier1)
+; Total bytes of code 34, prolog size 2, PerfScore 11.00, instruction count 13, allocated bytes for code 34 (MethodHash=685a4f16) for method Jil.Common.Utils+<>c__DisplayClass9_0:<IdealMemberOrderForWriting>b__6(System.Reflection.FieldInfo):int:this (Tier1)
; ============================================================ Unwind Info: @@ -62,7 +63,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 17 (0x00011) Actual length = 34 (0x000022)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -74,7 +75,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

-44 (-21.36%) : 31944.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateMethod(System.Xml.Serialization.TypeMapping):this (Tier1)

@@ -2,39 +2,39 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Tier1 code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 6, 4.50) ref -> r5 this class-hnd single-def <System.Xml.Serialization.XmlSerializationReaderILGen> -; V01 arg1 [V01,T00] ( 9, 6 ) ref -> r4 class-hnd single-def <System.Xml.Serialization.TypeMapping>
+; V00 this [V00,T02] ( 6, 3.80) ref -> r5 this class-hnd single-def <System.Xml.Serialization.XmlSerializationReaderILGen> +; V01 arg1 [V01,T00] ( 9, 5.75) ref -> r4 class-hnd single-def <System.Xml.Serialization.TypeMapping>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T04] ( 3, 2.50) ref -> r0 class-hnd "spilling QMark2" <System.Xml.Serialization.StructMapping> -; V04 tmp2 [V04,T05] ( 3, 2.50) ref -> r0 class-hnd "spilling QMark2" <<unknown class>> -; V05 tmp3 [V05,T06] ( 3, 2.50) ref -> r0 class-hnd "spilling QMark2" <<unknown class>> -; V06 tmp4 [V06,T10] ( 2, 2 ) int -> r0 "fgMakeTemp is creating a new local variable" -; V07 tmp5 [V07,T07] ( 2, 2 ) ref -> r1 class-hnd single-def "spilling QMark2" <<unknown class>> -; V08 tmp6 [V08,T11] ( 2, 2 ) int -> r0 "fgMakeTemp is creating a new local variable" -; V09 tmp7 [V09,T08] ( 2, 2 ) ref -> r1 class-hnd single-def "spilling QMark2" <<unknown class>> -; V10 tmp8 [V10,T12] ( 2, 2 ) int -> r0 "fgMakeTemp is creating a new local variable" -; V11 tmp9 [V11,T09] ( 2, 2 ) ref -> r1 class-hnd single-def "spilling QMark2" <System.Xml.Serialization.StructMapping> -; V12 tmp10 [V12,T02] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.HashSet`1[System.Xml.Serialization.TypeMapping]>
+; V03 tmp1 [V03,T03] ( 3, 4 ) ref -> r0 class-hnd "spilling QMark2" <System.Xml.Serialization.StructMapping> +; V04 tmp2 [V04,T04] ( 3, 3.20) ref -> r0 class-hnd "spilling QMark2" <<unknown class>> +; V05 tmp3 [V05,T05] ( 3, 2.56) ref -> r0 class-hnd "spilling QMark2" <<unknown class>> +;* V06 tmp4 [V06,T07] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" +; V07 tmp5 [V07,T06] ( 2, 2.05) ref -> r1 class-hnd single-def "spilling QMark2" <<unknown class>> +;* V08 tmp6 [V08,T11] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" +; V09 tmp7 [V09,T09] ( 2, 0.51) ref -> r1 class-hnd single-def "spilling QMark2" <<unknown class>> +;* V10 tmp8 [V10,T10] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" +; V11 tmp9 [V11,T08] ( 2, 0.64) ref -> r1 class-hnd single-def "spilling QMark2" <System.Xml.Serialization.StructMapping> +; V12 tmp10 [V12,T01] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.HashSet`1[System.Xml.Serialization.TypeMapping]>
; V13 tmp11 [V13 ] ( 1, 1 ) int -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V14 cse0 [V14,T03] ( 9, 3 ) int -> r6 multi-def "CSE - aggressive"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M43558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r11,lr} - sub sp, 12 - add r11, sp, 24
+ push {r2,r3,r4,r5,r11,lr} + add r11, sp, 16
mov r5, r0 ; gcrRegs +[r5] mov r4, r1 ; gcrRegs +[r4]
- ;; size=14 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M43558_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ldr r0, [r5+0x2C] ; gcrRegs +[r0] @@ -48,35 +48,25 @@ G_M43558_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b blx r3 // <unknown method> ; gcrRegs -[r0-r1] cmp r0, 0
- bne SHORT G_M43558_IG04
+ beq SHORT G_M43558_IG07
;; size=26 bbWeight=1 PerfScore 10.00
-G_M43558_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[r4-r5] - add sp, 12 - pop {r4,r5,r6,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M43558_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4-r5]
+G_M43558_IG03: ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
mov r0, r4 ; gcrRegs +[r0] cmp r0, 0 beq SHORT G_M43558_IG08
- ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M43558_IG05: ; bbWeight=0.25, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz - ldr r6, [r0] - movw r0, 0xd1ff
+ ;; size=6 bbWeight=0.80 PerfScore 2.40 +G_M43558_IG04: ; bbWeight=0.40, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz + ldr r0, [r0]
; gcrRegs -[r0]
- movt r0, 0xd1ff - cmp r6, r0
+ movw r1, 0xd1ff + movt r1, 0xd1ff + cmp r0, r1
bne SHORT G_M43558_IG08
- ;; size=14 bbWeight=0.25 PerfScore 1.25 -G_M43558_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ;; size=14 bbWeight=0.40 PerfScore 2.00 +G_M43558_IG05: ; bbWeight=0.16, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
mov r1, r4 ; gcrRegs +[r1]
- movw r0, 0xd1ff - movt r0, 0xd1ff - cmp r6, r0 - bne SHORT G_M43558_IG15
mov r0, r5 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -84,81 +74,76 @@ G_M43558_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ldr r3, [r3] blx r3 // <unknown method> ; gcrRegs -[r0-r1 r4-r5]
- ;; size=28 bbWeight=0.50 PerfScore 5.00 -G_M43558_IG07: ; bbWeight=0.50, epilog, nogc, extend - add sp, 12 - pop {r4,r5,r6,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M43558_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=0.16 PerfScore 0.96 +G_M43558_IG06: ; bbWeight=0.16, epilog, nogc, extend + pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=0.16 PerfScore 0.16 +G_M43558_IG07: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=0.20 PerfScore 0.20 +G_M43558_IG08: ; bbWeight=0.64, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4-r5] mov r0, r4 ; gcrRegs +[r0] cmp r0, 0
+ beq SHORT G_M43558_IG13 + ;; size=6 bbWeight=0.64 PerfScore 1.92 +G_M43558_IG09: ; bbWeight=0.32, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz + ldr r0, [r0] + ; gcrRegs -[r0] + movw r1, 0xd1ff + movt r1, 0xd1ff + cmp r0, r1 + bne SHORT G_M43558_IG13 + ;; size=14 bbWeight=0.32 PerfScore 1.60 +G_M43558_IG10: ; bbWeight=0.13, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref + mov r1, r4 + ; gcrRegs +[r1] + mov r0, r5 + ; gcrRegs +[r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r0-r1 r4-r5] + ;; size=16 bbWeight=0.13 PerfScore 0.77 +G_M43558_IG11: ; bbWeight=0.13, epilog, nogc, extend + pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=0.13 PerfScore 0.13 +G_M43558_IG12: ; bbWeight=0.51, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r4-r5] + mov r1, r4 + ; gcrRegs +[r1] + mov r0, r5 + ; gcrRegs +[r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r0-r1 r4-r5] + b SHORT G_M43558_IG07 + ;; size=18 bbWeight=0.51 PerfScore 3.58 +G_M43558_IG13: ; bbWeight=0.51, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r4-r5] + mov r0, r4 + ; gcrRegs +[r0] + cmp r0, 0 + beq SHORT G_M43558_IG07 + ;; size=6 bbWeight=0.51 PerfScore 1.54 +G_M43558_IG14: ; bbWeight=0.26, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz + ldr r0, [r0] + ; gcrRegs -[r0] + movw r1, 0xd1ff + movt r1, 0xd1ff + cmp r0, r1
beq SHORT G_M43558_IG12
- ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M43558_IG09: ; bbWeight=0.25, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz - ldr r6, [r0] - movw r0, 0xd1ff - ; gcrRegs -[r0] - movt r0, 0xd1ff - cmp r6, r0 - bne SHORT G_M43558_IG12 - ;; size=14 bbWeight=0.25 PerfScore 1.25 -G_M43558_IG10: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz - mov r1, r4 - ; gcrRegs +[r1] - movw r0, 0xd1ff - movt r0, 0xd1ff - cmp r6, r0 - bne SHORT G_M43558_IG15 - mov r0, r5 - ; gcrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; gcrRegs -[r0-r1 r4-r5] - ;; size=28 bbWeight=0.50 PerfScore 5.00 -G_M43558_IG11: ; bbWeight=0.50, epilog, nogc, extend - add sp, 12 - pop {r4,r5,r6,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M43558_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4-r5] - mov r0, r4 - ; gcrRegs +[r0] - cmp r0, 0 - beq SHORT G_M43558_IG03 - ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M43558_IG13: ; bbWeight=0.25, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz - ldr r6, [r0] - movw r0, 0xd1ff - ; gcrRegs -[r0] - movt r0, 0xd1ff - cmp r6, r0 - bne SHORT G_M43558_IG03 - ;; size=14 bbWeight=0.25 PerfScore 1.25 -G_M43558_IG14: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz - mov r1, r4 - ; gcrRegs +[r1] - movw r0, 0xd1ff - movt r0, 0xd1ff - cmp r6, r0 - bne SHORT G_M43558_IG15 - mov r0, r5 - ; gcrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; gcrRegs -[r0-r1 r4-r5] - b SHORT G_M43558_IG03 - ;; size=30 bbWeight=0.50 PerfScore 5.50 -G_M43558_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - bkpt - ;; size=2 bbWeight=0 PerfScore 0.00
+ ;; size=14 bbWeight=0.26 PerfScore 1.28 +G_M43558_IG15: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r4-r5] + b SHORT G_M43558_IG07 + ;; size=2 bbWeight=0.13 PerfScore 0.13
-; Total bytes of code 206, prolog size 10, PerfScore 41.75, instruction count 77, allocated bytes for code 206 (MethodHash=1c0655d9) for method System.Xml.Serialization.XmlSerializationReaderILGen:GenerateMethod(System.Xml.Serialization.TypeMapping):this (Tier1)
+; Total bytes of code 162, prolog size 8, PerfScore 30.66, instruction count 61, allocated bytes for code 162 (MethodHash=1c0655d9) for method System.Xml.Serialization.XmlSerializationReaderILGen:GenerateMethod(System.Xml.Serialization.TypeMapping):this (Tier1)
; ============================================================ Unwind Info: ...

-18 (-20.45%) : 38540.dasm - System.Runtime.Serialization.XmlFormatGeneratorStatics:get_MemberNamesField():System.Reflection.FieldInfo (Tier1)

@@ -2,8 +2,10 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Tier1 code ; optimized code
+; optimized using Synthesized PGO
; sp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments @@ -11,25 +13,25 @@ ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V01 tmp1 [V01 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V02 tmp2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.FieldInfo>
+; V03 cse0 [V03,T00] ( 4, 3.80) int -> r4 "CSE - aggressive"
; TEMP_01 ref -> [sp+0x04] ;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M50305_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {lr} - sub sp, 12
+ push {r2,r3,r4,lr}
movs r0, 0 str r0, [sp+0x04]
- ;; size=8 bbWeight=1 PerfScore 4.00
+ ;; size=6 bbWeight=1 PerfScore 3.00
G_M50305_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0]
+ movw r4, 0xd1ff + movt r4, 0xd1ff + ldr r0, [r4]
; gcrRegs +[r0] cmp r0, 0 bne SHORT G_M50305_IG04 ;; size=14 bbWeight=1 PerfScore 5.00
-G_M50305_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50305_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movw r0, 0xd1ff movt r0, 0xd1ff @@ -43,28 +45,24 @@ G_M50305_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs +[r0] ; gcr arg pop 0 str r0, [sp+0x04]
- movw r0, 0xd1ff - ; gcrRegs -[r0] - movt r0, 0xd1ff
ldr r1, [sp+0x04] ; gcrRegs +[r1]
+ mov r0, r4 + ; gcrRegs -[r0]
movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1]
- ;; size=52 bbWeight=0.50 PerfScore 8.00
+ ;; size=46 bbWeight=0.80 PerfScore 12.00
G_M50305_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r0, [r0]
+ ldr r0, [r4]
; gcrRegs +[r0]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M50305_IG05: ; bbWeight=1, epilog, nogc, extend
- add sp, 12 - pop {pc} - ;; size=4 bbWeight=1 PerfScore 2.00
+ pop {r2,r3,r4,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 88, prolog size 8, PerfScore 22.00, instruction count 30, allocated bytes for code 88 (MethodHash=fa293b7e) for method System.Runtime.Serialization.XmlFormatGeneratorStatics:get_MemberNamesField():System.Reflection.FieldInfo (Tier1)
+; Total bytes of code 70, prolog size 6, PerfScore 22.00, instruction count 25, allocated bytes for code 70 (MethodHash=fa293b7e) for method System.Runtime.Serialization.XmlFormatGeneratorStatics:get_MemberNamesField():System.Reflection.FieldInfo (Tier1)
; ============================================================ Unwind Info: @@ -76,11 +74,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
+ Function Length : 35 (0x00023) Actual length = 70 (0x000046)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16 - ED 00 pop {lr} ; opsize 16
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16 + FF end
FF end

+34 (+28.33%) : 65000.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan1[uint],uint,System.Span1[uint]) (Tier0-FullOpts)

@@ -2,86 +2,106 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; fully interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T10] ( 4, 7 ) struct ( 8) [sp+0x34] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T02] ( 4, 10 ) int -> r4 single-def -; V02 arg2 [V02,T03] ( 4, 10 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[uint]>
+; V00 arg0 [V00,T18] ( 4, 4 ) struct ( 8) [sp+0x4C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T12] ( 3, 74.00) int -> r4 single-def +; V02 arg2 [V02,T19] ( 4, 4 ) struct ( 8) [sp+0x54] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[uint]>
;* V03 loc0 [V03 ] ( 0, 0 ) long -> zero-ref
-; V04 loc1 [V04,T00] ( 8, 26 ) int -> r7
+; V04 loc1 [V04,T00] ( 8,434.00) int -> r10
;* V05 loc2 [V05 ] ( 0, 0 ) long -> zero-ref
-; V06 loc3 [V06 ] ( 1, 4 ) long -> [sp+0x08] multireg-ret
+; V06 loc3 [V06 ] ( 1, 72.00) long -> [sp+0x20] multireg-ret
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T13] ( 3, 6 ) int -> r5 "V00.[004..008)" -; V09 cse0 [V09,T04] ( 3, 12 ) int -> r8 "CSE - aggressive" -; V10 rat0 [V10,T11] ( 3, 9 ) int -> r6 "field V03.lo (fldOffset=0x0)" P-INDEP -;* V11 rat1 [V11,T14] ( 0, 0 ) int -> zero-ref "field V03.hi (fldOffset=0x4)" P-INDEP -; V12 rat2 [V12,T05] ( 3, 12 ) int -> r9 "field V05.lo (fldOffset=0x0)" P-INDEP -; V13 rat3 [V13,T06] ( 2, 8 ) int -> r1 "field V05.hi (fldOffset=0x4)" P-INDEP -; V14 rat4 [V14,T07] ( 3, 12 ) int -> r0 "field V06.lo (fldOffset=0x0)" P-INDEP -; V15 rat5 [V15,T12] ( 2, 8 ) int -> r1 "field V06.hi (fldOffset=0x4)" P-INDEP -; V16 rat6 [V16,T01] ( 2, 16 ) int -> r6 "ReplaceWithLclVar is creating a new local variable" -; V17 rat7 [V17 ] ( 1, 8 ) long -> [sp+0x00] multireg-ret "ReplaceWithLclVar is creating a new local variable" -; V18 rat8 [V18,T08] ( 2, 12 ) int -> r0 "field V17.lo (fldOffset=0x0)" P-INDEP -; V19 rat9 [V19,T09] ( 1, 8 ) int -> r1 "field V17.hi (fldOffset=0x4)" P-INDEP
+; V08 tmp1 [V08,T14] ( 2, 73.00) byref -> [sp+0x04] spill-single-def "V00.[000..004)" +; V09 tmp2 [V09,T13] ( 3, 74.00) int -> r6 "V00.[004..008)" +; V10 tmp3 [V10,T15] ( 2, 73.00) byref -> r7 single-def "V02.[000..004)" +; V11 tmp4 [V11,T16] ( 2, 73.00) int -> r8 "V02.[004..008)" +; V12 cse0 [V12,T02] ( 3,216.00) int -> [sp+0x1C] spill-single-def "CSE - aggressive" +;* V13 cse1 [V13 ] ( 0, 0 ) long -> zero-ref "CSE - aggressive" +; V14 rat0 [V14,T10] ( 3,145.00) int -> r9 "field V03.lo (fldOffset=0x0)" P-INDEP +;* V15 rat1 [V15,T17] ( 0, 0 ) int -> zero-ref "field V03.hi (fldOffset=0x4)" P-INDEP +; V16 rat2 [V16,T03] ( 3,216.00) int -> r9 "field V05.lo (fldOffset=0x0)" P-INDEP +; V17 rat3 [V17,T04] ( 2,144.00) int -> r1 "field V05.hi (fldOffset=0x4)" P-INDEP +; V18 rat4 [V18,T05] ( 3,216.00) int -> r0 "field V06.lo (fldOffset=0x0)" P-INDEP +; V19 rat5 [V19,T11] ( 2,144.00) int -> r1 "field V06.hi (fldOffset=0x4)" P-INDEP +; V20 rat6 [V20,T06] ( 3,216.00) int -> [sp+0x18] spill-single-def "field V13.lo (fldOffset=0x0)" P-INDEP +; V21 rat7 [V21,T07] ( 3,216.00) int -> [sp+0x14] spill-single-def "field V13.hi (fldOffset=0x4)" P-INDEP +; V22 rat8 [V22,T01] ( 2,288.00) int -> r9 "ReplaceWithLclVar is creating a new local variable" +; V23 rat9 [V23 ] ( 1,144.00) long -> [sp+0x08] multireg-ret "ReplaceWithLclVar is creating a new local variable" +; V24 rat10 [V24,T08] ( 2,216.00) int -> r0 "field V23.lo (fldOffset=0x0)" P-INDEP +; V25 rat11 [V25,T09] ( 1,144.00) int -> r1 "field V23.hi (fldOffset=0x4)" P-INDEP
;
-; Lcl frame size = 20
+; Lcl frame size = 40
G_M41465_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1,r3}
- push {r4,r5,r6,r7,r8,r9,r11,lr} - sub sp, 20 - add r11, sp, 44
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr} + sub sp, 40 + add r11, sp, 68
mov r4, r2 ;; size=14 bbWeight=1 PerfScore 5.00 G_M41465_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r5, [sp+0x38] - movs r6, 0 - subs r7, r5, 1 - cmp r7, 0
+ ldr r5, [sp+0x4C] + ; byrRegs +[r5] + str r5, [sp+0x04] + ; GC ptr vars +{V08} + ldr r6, [sp+0x50] + ldr r7, [sp+0x54] + ; byrRegs +[r7] + ldr r8, [sp+0x58] + mov r9, 0 + add r10, r6, -1 + cmp r10, 0
blt SHORT G_M41465_IG04
- ;; size=10 bbWeight=1 PerfScore 5.00 -G_M41465_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp r7, r5
+ ;; size=26 bbWeight=1 PerfScore 9.00 +G_M41465_IG03: ; bbWeight=72.00, gcVars=00004000 {V08}, gcrefRegs=0000 {}, byrefRegs=00A0 {r5 r7}, gcvars, byref, isz + cmp r10, r6
bhs SHORT G_M41465_IG05
- ldr r2, [sp+0x34] - ; byrRegs +[r2] - lsl r8, r7, 2 - ldr r2, [r2+r8] - ; byrRegs -[r2] - orr r9, r2, 0 - orr r1, r6, 0 - mov r2, r4 - movs r3, 0
+ lsl lr, r10, 2 + str lr, [sp+0x1C] + ldr r2, [r5+lr] + orr r12, r2, 0 + orr r1, r9, 0 + mov r9, r12 + mov r12, 0 + mov r0, r4 + str r0, [sp+0x18] + str r12, [sp+0x14] + mov r2, r0 + mov r3, r12
mov r0, r9
- movw lr, 0xd1ff - movt lr, 0xd1ff - blx lr // CORINFO_HELP_ULDIV
+ movw r5, 0xd1ff + ; byrRegs -[r5] + movt r5, 0xd1ff + blx r5 // CORINFO_HELP_ULDIV
; gcr arg pop 0
- ldr r2, [sp+0x40] - cmp r7, r2
+ cmp r10, r8
bhs SHORT G_M41465_IG05
- ldr r2, [sp+0x3C] - ; byrRegs +[r2] - str r0, [r2+r8] - mov r2, r4 - ; byrRegs -[r2] - movs r3, 0
+ ldr r5, [sp+0x1C] // [V12 cse0] + str r0, [r7+r5] + ldr r2, [sp+0x18] // [V20 rat6] + ldr r3, [sp+0x14] // [V21 rat7]
movw lr, 0xd1ff movt lr, 0xd1ff blx lr // CORINFO_HELP_LMUL ; gcr arg pop 0
- subs r6, r9, r0 - subs r7, r7, 1 - cmp r7, 0
+ subs r9, r9, r0 + add r10, r10, -1 + cmp r10, 0 + ldr r5, [sp+0x04] // [V08 tmp1] + ; byrRegs +[r5]
bge SHORT G_M41465_IG03
- ;; size=74 bbWeight=4 PerfScore 108.00 -G_M41465_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - add sp, 20 - pop {r4,r5,r6,r7,r8,r9,r11,lr}
+ ;; size=92 bbWeight=72.00 PerfScore 2304.00 +G_M41465_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc + ; byrRegs -[r5 r7] + ; GC ptr vars -{V08} + add sp, 40 + pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 12 bx lr ;; size=10 bbWeight=1 PerfScore 4.00 @@ -93,7 +113,7 @@ G_M41465_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 14, PerfScore 122.00, instruction count 45, allocated bytes for code 120 (MethodHash=c1115e06) for method System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier0-FullOpts)
+; Total bytes of code 154, prolog size 14, PerfScore 2322.00, instruction count 54, allocated bytes for code 154 (MethodHash=c1115e06) for method System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -105,21 +125,23 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 120 (0x000078)
+ Function Length : 77 (0x0004d) Actual length = 154 (0x00009a)
---- 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 : 6 (0x06)
+ Epilog Start Index : 5 (0x05)
---- Unwind codes ----
- 05 add sp, sp, #20 ; opsize 16 - AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
+ 0A add sp, sp, #40 ; opsize 16 + DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
EC 0B pop {r0,r1,r3} ; opsize 16 FF end
- ---- Epilog start at index 6 ---- - 05 add sp, sp, #20 ; opsize 16 - AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
+ ---- Epilog start at index 5 ---- + 0A add sp, sp, #40 ; opsize 16 + DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
03 add sp, sp, #12 ; opsize 16 FD end + nop ; opsize 16 FF end
+ FF end + FF end

+28 (+31.11%) : 5901.dasm - System.Collections.Generic.Stack1[System.ValueTuple3[System.Canon,System.Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)

@@ -2,34 +2,38 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Tier1 code ; optimized code
-; sp based frame
+; optimized using Synthesized PGO +; r11 based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 5.50) ref -> r4 this class-hnd single-def <System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]>
+; V00 this [V00,T00] ( 8, 7.20) ref -> r4 this class-hnd single-def <System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]>
; V01 arg1 [V01,T01] ( 4, 3 ) byref -> registers single-def
-; V02 loc0 [V02,T02] ( 4, 3 ) int -> r3 -; V03 loc1 [V03,T04] ( 3, 2.50) ref -> r2 class-hnd exact single-def <<unknown class>>
+; V02 loc0 [V02,T03] ( 4, 3.60) int -> r3 +; V03 loc1 [V03,T05] ( 3, 2.80) ref -> r2 class-hnd exact single-def <<unknown class>>
;* V04 loc2 [V04 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op <System.ValueTuple`3[System.__Canon,System.__Canon,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 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.Item1 (fldOffset=0x0)" P-INDEP ;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.Item2 (fldOffset=0x4)" P-INDEP ;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.Item3 (fldOffset=0x8)" P-INDEP
-; V10 cse0 [V10,T06] ( 3, 1.50) byref -> r5 "CSE - moderate" -;* V11 rat0 [V11,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V10 cse0 [V10,T06] ( 3, 2.40) byref -> r5 "CSE - aggressive" +; V11 rat0 [V11,T04] ( 2, 3.20) int -> r0 "Spilling to split statement for tree"
;* V12 rat1 [V12,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V13 rat2 [V13,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V13 rat2 [V13,T02] ( 2, 3.20) int -> r0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 4
+; Lcl frame size = 8
G_M60687_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r3,r4,r5,lr}
+ push {r2,r3,r4,r5,r11,lr} + add r11, sp, 16 + str r0, [r11-0x0C]
mov r4, r0 ; gcrRegs +[r4]
- ;; size=4 bbWeight=1 PerfScore 2.00
+ ;; size=14 bbWeight=1 PerfScore 4.00
G_M60687_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0002 {r1}, byref, isz ; byrRegs +[r1] ldr r0, [r4+0x08] @@ -38,22 +42,9 @@ G_M60687_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0002 {r1}, by ; gcrRegs +[r2] ldr r0, [r2+0x04] cmp r0, r3
- bhi SHORT G_M60687_IG05
+ bls SHORT G_M60687_IG05
;; size=12 bbWeight=1 PerfScore 6.00
-G_M60687_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0002 {r1}, byref - ; gcrRegs -[r2] - movs r0, 0 - str r0, [r1] - str r0, [r1+0x04] - str r0, [r1+0x08] - ;; size=8 bbWeight=0.50 PerfScore 2.00 -G_M60687_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[r1] - pop {r3,r4,r5,pc} - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M60687_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4}, byrefRegs=0002 {r1}, gcvars, byref - ; gcrRegs +[r2] - ; byrRegs +[r1]
+G_M60687_IG03: ; bbWeight=0.80, gcrefRegs=0014 {r2 r4}, byrefRegs=0002 {r1}, byref, isz
ldr r0, [r4+0x0C] adds r0, r0, 1 str r0, [r4+0x0C] @@ -76,18 +67,42 @@ G_M60687_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4 movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_BYREF
- movs r0, 0
+ ldr r0, [r4]
; byrRegs -[r0]
+ ldr r0, [r0+0x24] + ldr r0, [r0] + ldr r0, [r0+0x0C] + cmp r0, 0 + bne SHORT G_M60687_IG07 + ;; size=64 bbWeight=0.80 PerfScore 20.00 +G_M60687_IG04: ; bbWeight=0.16, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz + ; byrRegs -[r1] + b SHORT G_M60687_IG07 + ;; size=2 bbWeight=0.16 PerfScore 0.16 +G_M60687_IG05: ; bbWeight=0.20, gcrefRegs=0010 {r4}, byrefRegs=0002 {r1}, byref + ; byrRegs -[r5] +[r1] + movs r0, 0 + str r0, [r1] + str r0, [r1+0x04] + str r0, [r1+0x08] + ;; size=8 bbWeight=0.20 PerfScore 0.80 +G_M60687_IG06: ; bbWeight=0.20, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, epilog, nogc + ; byrRegs -[r1] + pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=0.20 PerfScore 0.20 +G_M60687_IG07: ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref + ; byrRegs +[r5] + movs r0, 0
str r0, [r5] str r0, [r5+0x04] str r0, [r5+0x08] movs r0, 1
- ;; size=62 bbWeight=0.50 PerfScore 12.00 -G_M60687_IG06: ; bbWeight=0.50, epilog, nogc, extend - pop {r3,r4,r5,pc} - ;; size=2 bbWeight=0.50 PerfScore 0.50
+ ;; size=10 bbWeight=0.80 PerfScore 4.00 +G_M60687_IG08: ; bbWeight=0.80, epilog, nogc, extend + pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=0.80 PerfScore 0.80
-; Total bytes of code 90, prolog size 2, PerfScore 23.00, instruction count 38, allocated bytes for code 90 (MethodHash=056e12f0) for method System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
+; Total bytes of code 118, prolog size 12, PerfScore 35.96, instruction count 47, allocated bytes for code 118 (MethodHash=056e12f0) for method System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -99,7 +114,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 45 (0x0002d) Actual length = 90 (0x00005a)
+ Function Length : 59 (0x0003b) Actual length = 118 (0x000076)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -111,7 +126,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- ED 38 pop {r3,r4,r5,lr} ; opsize 16
+ A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32
FF end FF end

+12 (+54.55%) : 60578.dasm - System.ArgumentOutOfRangeException:ThrowIfGreaterThanOrEqualint (Tier1)

@@ -2,42 +2,53 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Tier1 code ; optimized code
-; sp based frame
+; optimized using Synthesized PGO +; r11 based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 4, 3 ) int -> r0 ld-addr-op single-def -; V01 arg1 [V01,T01] ( 4, 3 ) int -> r1 single-def
+; V00 arg0 [V00,T00] ( 5, 3.80) int -> r0 ld-addr-op single-def +; V01 arg1 [V01,T01] ( 5, 3.80) 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 = 4
+; Lcl frame size = 0
G_M34388_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,lr} - ;; size=2 bbWeight=1 PerfScore 1.00
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00
G_M34388_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r2] cmp r0, r1
- bge SHORT G_M34388_IG04
+ blt SHORT G_M34388_IG05
;; size=4 bbWeight=1 PerfScore 2.00
-G_M34388_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r3,pc} - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M34388_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, gcvars, byref
+G_M34388_IG03: ; bbWeight=0.80, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz + cmp r0, r1 + ble SHORT G_M34388_IG06 + ;; size=4 bbWeight=0.80 PerfScore 1.60 +G_M34388_IG04: ; bbWeight=0.42, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz + b SHORT G_M34388_IG06 + ;; size=2 bbWeight=0.42 PerfScore 0.42 +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]
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 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)
+; Total bytes of code 34, prolog size 6, PerfScore 7.02, instruction count 13, allocated bytes for code 34 (MethodHash=fe1b79ab) for method System.ArgumentOutOfRangeException:ThrowIfGreaterThanOrEqual[int](int,int,System.String) (Tier1)
; ============================================================ Unwind Info: @@ -49,7 +60,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 11 (0x0000b) Actual length = 22 (0x000016)
+ Function Length : 17 (0x00011) Actual length = 34 (0x000022)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -57,7 +68,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- ED 08 pop {r3,lr} ; opsize 16
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

coreclr_tests.run.linux.arm.checked.mch

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

@@ -2,65 +2,51 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; optimized using Synthesized PGO +; sp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; 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,T00] ( 2, 2 ) float -> f0 single-def
;# 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"
+;* V02 cse0 [V02,T01] ( 0, 0 ) float -> zero-ref "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

-6 (-33.33%) : 202421.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(ubyte):int (Tier0-FullOpts)

@@ -2,8 +2,10 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ; @@ -18,21 +20,14 @@ G_M63936_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push {r11,lr} mov r11, sp ;; size=6 bbWeight=1 PerfScore 2.00
-G_M63936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - b SHORT G_M63936_IG04 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M63936_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - b SHORT G_M63936_IG05 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M63936_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M63936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
uxtb r0, r0
- b SHORT G_M63936_IG03 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M63936_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M63936_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 18, prolog size 6, PerfScore 7.00, instruction count 7, allocated bytes for code 18 (MethodHash=0895063f) for method Runtime_40607.Program:ZeroExtendsWrittenValue(ubyte):int (Tier0-FullOpts)
+; Total bytes of code 12, prolog size 6, PerfScore 4.00, instruction count 4, allocated bytes for code 12 (MethodHash=0895063f) for method Runtime_40607.Program:ZeroExtendsWrittenValue(ubyte):int (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -44,7 +39,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 9 (0x00009) Actual length = 18 (0x000012)
+ Function Length : 6 (0x00006) Actual length = 12 (0x00000c)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-6 (-33.33%) : 202425.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(ushort):int (Tier0-FullOpts)

@@ -2,8 +2,10 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ; @@ -18,21 +20,14 @@ G_M59608_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push {r11,lr} mov r11, sp ;; size=6 bbWeight=1 PerfScore 2.00
-G_M59608_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - b SHORT G_M59608_IG04 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M59608_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - b SHORT G_M59608_IG05 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M59608_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M59608_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
uxth r0, r0
- b SHORT G_M59608_IG03 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M59608_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M59608_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 18, prolog size 6, PerfScore 7.00, instruction count 7, allocated bytes for code 18 (MethodHash=11ea1727) for method Runtime_40607.Program:ZeroExtendsWrittenValue(ushort):int (Tier0-FullOpts)
+; Total bytes of code 12, prolog size 6, PerfScore 4.00, instruction count 4, allocated bytes for code 12 (MethodHash=11ea1727) for method Runtime_40607.Program:ZeroExtendsWrittenValue(ushort):int (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -44,7 +39,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 9 (0x00009) Actual length = 18 (0x000012)
+ Function Length : 6 (0x00006) Actual length = 12 (0x00000c)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+32 (+32.00%) : 474731.dasm - Internal.IL.Stubs.ILCodeStream:Emit(int):this (FullOpts)

@@ -2,18 +2,24 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame
-; fully interruptible
+; partially interruptible +; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments ;
-; V00 this [V00,T00] ( 9, 6 ) ref -> r4 this class-hnd single-def <Internal.IL.Stubs.ILCodeStream>
+; V00 this [V00,T00] ( 14, 13.60) ref -> r4 this class-hnd single-def <Internal.IL.Stubs.ILCodeStream>
; V01 arg1 [V01,T01] ( 4, 4 ) int -> r5 single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 4, 2 ) int -> r0 "Inline stloc first use temp" -; V04 tmp2 [V04,T02] ( 3, 3 ) ref -> r1 class-hnd single-def "impAppendStmt" <<unknown class>> -; V05 cse0 [V05,T04] ( 3, 1.50) ref -> r1 "CSE - moderate"
+; V03 tmp1 [V03,T04] ( 4, 4 ) int -> r0 "Inline stloc first use temp" +; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> r1 class-hnd single-def "impAppendStmt" <<unknown class>> +; V05 tmp3 [V05,T05] ( 4, 4 ) int -> r2 "Inline stloc first use temp" +; V06 tmp4 [V06,T03] ( 3, 6 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>> +;* V07 tmp5 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V08 cse0 [V08,T06] ( 3, 2.80) ref -> r1 "CSE - aggressive" +; V09 cse1 [V09,T07] ( 3, 2.80) ref -> r1 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -27,14 +33,14 @@ G_M192_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n G_M192_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz cmp r5, 256 ble SHORT G_M192_IG05
- ;; size=6 bbWeight=1 PerfScore 2.00 -G_M192_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r1, [r4+0x04] ; gcrRegs +[r1] ldr r0, [r1+0x04] ldr r3, [r4+0x0C] cmp r0, r3 bne SHORT G_M192_IG04
+ ;; size=16 bbWeight=1 PerfScore 7.00 +G_M192_IG03: ; bbWeight=0.80, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
ldr r1, [r1+0x04] ; gcrRegs -[r1] lsls r1, r1, 1 @@ -46,9 +52,8 @@ G_M192_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byr ldr r3, [r3] blx r3 // System.Array:Resize[ubyte](byref,int) ; byrRegs -[r0]
- ; gcr arg pop 0 - ;; size=30 bbWeight=0.50 PerfScore 6.50 -G_M192_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=0.80 PerfScore 6.40 +G_M192_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r1, [r4+0x04] ; gcrRegs +[r1] ldr r0, [r4+0x0C] @@ -56,37 +61,62 @@ G_M192_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byr str r3, [r4+0x0C] ldr r3, [r1+0x04] cmp r0, r3
- bhs SHORT G_M192_IG07
+ bhs SHORT G_M192_IG09
adds r1, 8 ; gcrRegs -[r1] ; byrRegs +[r1] movs r3, 254 strb r3, [r1+r0]
- ;; size=20 bbWeight=0.50 PerfScore 5.00 -G_M192_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ;; size=20 bbWeight=1 PerfScore 10.00 +G_M192_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r1]
- uxtb r1, r5 - mov r0, r4 - ; gcrRegs +[r0]
+ ldr r1, [r4+0x04] + ; gcrRegs +[r1] + ldr r0, [r1+0x04] + ldr r3, [r4+0x0C] + cmp r0, r3 + bne SHORT G_M192_IG07 + ;; size=10 bbWeight=1 PerfScore 5.00 +G_M192_IG06: ; bbWeight=0.80, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref + ldr r1, [r1+0x04] + ; gcrRegs -[r1] + lsls r1, r1, 1 + adds r1, 10 + adds r0, r4, 4 + ; byrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3]
- ;; size=14 bbWeight=1 PerfScore 5.00 -G_M192_IG06: ; bbWeight=1, epilog, nogc, extend - pop {r4,r5,r11,lr} - bx r3 // Internal.IL.Stubs.ILCodeStream:EmitByte(ubyte):this - ; gcr arg pop 0 - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M192_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0 r4]
+ blx r3 // System.Array:Resize[ubyte](byref,int) + ; byrRegs -[r0] + ;; size=20 bbWeight=0.80 PerfScore 6.40 +G_M192_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + ldr r3, [r4+0x04] + ; gcrRegs +[r3] + ldr r2, [r4+0x0C] + adds r1, r2, 1 + str r1, [r4+0x0C] + ldr r1, [r3+0x04] + cmp r2, r1 + bhs SHORT G_M192_IG09 + adds r3, 8 + ; gcrRegs -[r3] + ; byrRegs +[r3] + strb r5, [r3+r2] + ;; size=18 bbWeight=1 PerfScore 9.00 +G_M192_IG08: ; bbWeight=1, epilog, nogc, extend + pop {r4,r5,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M192_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r4] + ; byrRegs -[r3]
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 100, prolog size 12, PerfScore 24.50, instruction count 40, allocated bytes for code 100 (MethodHash=f1f1ff3f) for method Internal.IL.Stubs.ILCodeStream:Emit(int):this (FullOpts)
+; Total bytes of code 132, prolog size 8, PerfScore 48.80, instruction count 56, allocated bytes for code 132 (MethodHash=f1f1ff3f) for method Internal.IL.Stubs.ILCodeStream:Emit(int):this (FullOpts)
; ============================================================ Unwind Info: @@ -98,7 +128,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 50 (0x00032) Actual length = 100 (0x000064)
+ Function Length : 66 (0x00042) Actual length = 132 (0x000084)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+18 (+45.00%) : 70745.dasm - System.MemoryExtensions:AsMemory(System.String):System.ReadOnlyMemory`1ushort

@@ -5,63 +5,70 @@ ; optimized using Dynamic PGO ; sp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1745 -; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1745 +; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ;
-; V00 RetBuf [V00,T00] ( 6, 5 ) byref -> r2 single-def -; V01 arg0 [V01,T01] ( 5, 5 ) ref -> r1 class-hnd single-def <System.String>
+; V00 RetBuf [V00,T00] ( 6, 5 ) byref -> r4 single-def +; V01 arg0 [V01,T01] ( 5, 5 ) ref -> r5 class-hnd single-def <System.String>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op <System.ReadOnlyMemory`1[ushort]> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]> ;* V05 tmp2 [V05,T05] ( 0, 0 ) int -> zero-ref
-; V06 tmp3 [V06,T02] ( 2, 4 ) int -> r4 "Inlining Arg" -;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V08 tmp5 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "field V02._object (fldOffset=0x0)" P-INDEP -;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "field V02._index (fldOffset=0x4)" P-INDEP -;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP -; V12 tmp9 [V12,T03] ( 2, 2 ) ref -> r1 single-def "field V04._object (fldOffset=0x0)" P-INDEP -;* V13 tmp10 [V13,T06] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x4)" P-INDEP -; V14 tmp11 [V14,T04] ( 2, 2 ) int -> r4 "field V04._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T02] ( 2, 4 ) int -> r6 "Inlining Arg" +;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def "field V02._object (fldOffset=0x0)" P-INDEP +;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "field V02._index (fldOffset=0x4)" P-INDEP +;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP +; V10 tmp7 [V10,T03] ( 2, 2 ) ref -> r1 single-def "field V04._object (fldOffset=0x0)" P-INDEP +;* V11 tmp8 [V11,T06] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x4)" P-INDEP +; V12 tmp9 [V12,T04] ( 2, 2 ) int -> r6 "field V04._length (fldOffset=0x8)" P-INDEP
; ; Lcl frame size = 0 G_M48010_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,lr} - mov r2, r0 - ; byrRegs +[r2] - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M48010_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0004 {r2}, byref, isz - ; gcrRegs +[r1] - cmp r1, 0
+ push {r4,r5,r6,lr} + mov r4, r0 + ; byrRegs +[r4] + mov r5, r1 + ; gcrRegs +[r5] + ;; size=6 bbWeight=1 PerfScore 3.00 +G_M48010_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz + cmp r5, 0
beq SHORT G_M48010_IG04
- ldr r4, [r1+0x04] - mov r0, r2
+ ldr r6, [r5+0x04] + movs r0, 1 + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // System.Diagnostics.Debug:Assert(ubyte) + ; gcr arg pop 0 + mov r1, r5 + ; gcrRegs +[r1] + mov r0, r4
; byrRegs +[r0] movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[r1]
+ ; gcrRegs -[r1 r5]
; byrRegs -[r0] movs r3, 0
- str r3, [r2+0x04] - str r4, [r2+0x08] - ;; size=24 bbWeight=1 PerfScore 10.00
+ str r3, [r4+0x04] + str r6, [r4+0x08] + ;; size=40 bbWeight=1 PerfScore 16.00
G_M48010_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r4,pc}
+ pop {r4,r5,r6,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M48010_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, gcvars, byref
+G_M48010_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, gcvars, byref
movs r3, 0
- str r3, [r2] - str r3, [r2+0x04] - str r3, [r2+0x08]
+ str r3, [r4] + str r3, [r4+0x04] + str r3, [r4+0x08]
;; size=8 bbWeight=0 PerfScore 0.00 G_M48010_IG05: ; bbWeight=0, epilog, nogc, extend
- pop {r4,pc}
+ pop {r4,r5,r6,pc}
;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 40, prolog size 2, PerfScore 13.00, instruction count 18, allocated bytes for code 40 (MethodHash=16ac4475) for method System.MemoryExtensions:AsMemory(System.String):System.ReadOnlyMemory`1[ushort] (Tier1)
+; Total bytes of code 58, prolog size 2, PerfScore 20.00, instruction count 25, allocated bytes for code 58 (MethodHash=16ac4475) for method System.MemoryExtensions:AsMemory(System.String):System.ReadOnlyMemory`1[ushort] (Tier1)
; ============================================================ Unwind Info: @@ -73,7 +80,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 20 (0x00014) Actual length = 40 (0x000028)
+ Function Length : 29 (0x0001d) Actual length = 58 (0x00003a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -85,7 +92,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- D4 pop {r4,lr} ; opsize 16
+ D6 pop {r4,r5,r6,lr} ; opsize 16
FF end FF end FF end

+18 (+45.00%) : 211012.dasm - System.MemoryExtensions:AsMemory(System.String):System.ReadOnlyMemory`1ushort

@@ -5,63 +5,70 @@ ; optimized using Dynamic PGO ; sp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 29828 -; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 29828 +; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ;
-; V00 RetBuf [V00,T00] ( 6, 5 ) byref -> r2 single-def -; V01 arg0 [V01,T01] ( 5, 5 ) ref -> r1 class-hnd single-def <System.String>
+; V00 RetBuf [V00,T00] ( 6, 5 ) byref -> r4 single-def +; V01 arg0 [V01,T01] ( 5, 5 ) ref -> r5 class-hnd single-def <System.String>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op <System.ReadOnlyMemory`1[ushort]> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]> ;* V05 tmp2 [V05,T05] ( 0, 0 ) int -> zero-ref
-; V06 tmp3 [V06,T02] ( 2, 4 ) int -> r4 "Inlining Arg" -;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V08 tmp5 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "field V02._object (fldOffset=0x0)" P-INDEP -;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "field V02._index (fldOffset=0x4)" P-INDEP -;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP -; V12 tmp9 [V12,T03] ( 2, 2 ) ref -> r1 single-def "field V04._object (fldOffset=0x0)" P-INDEP -;* V13 tmp10 [V13,T06] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x4)" P-INDEP -; V14 tmp11 [V14,T04] ( 2, 2 ) int -> r4 "field V04._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T02] ( 2, 4 ) int -> r6 "Inlining Arg" +;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def "field V02._object (fldOffset=0x0)" P-INDEP +;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "field V02._index (fldOffset=0x4)" P-INDEP +;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP +; V10 tmp7 [V10,T03] ( 2, 2 ) ref -> r1 single-def "field V04._object (fldOffset=0x0)" P-INDEP +;* V11 tmp8 [V11,T06] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x4)" P-INDEP +; V12 tmp9 [V12,T04] ( 2, 2 ) int -> r6 "field V04._length (fldOffset=0x8)" P-INDEP
; ; Lcl frame size = 0 G_M48010_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,lr} - mov r2, r0 - ; byrRegs +[r2] - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M48010_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0004 {r2}, byref, isz - ; gcrRegs +[r1] - cmp r1, 0
+ push {r4,r5,r6,lr} + mov r4, r0 + ; byrRegs +[r4] + mov r5, r1 + ; gcrRegs +[r5] + ;; size=6 bbWeight=1 PerfScore 3.00 +G_M48010_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz + cmp r5, 0
beq SHORT G_M48010_IG04
- ldr r4, [r1+0x04] - mov r0, r2
+ ldr r6, [r5+0x04] + movs r0, 1 + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // System.Diagnostics.Debug:Assert(ubyte) + ; gcr arg pop 0 + mov r1, r5 + ; gcrRegs +[r1] + mov r0, r4
; byrRegs +[r0] movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[r1]
+ ; gcrRegs -[r1 r5]
; byrRegs -[r0] movs r3, 0
- str r3, [r2+0x04] - str r4, [r2+0x08] - ;; size=24 bbWeight=1 PerfScore 10.00
+ str r3, [r4+0x04] + str r6, [r4+0x08] + ;; size=40 bbWeight=1 PerfScore 16.00
G_M48010_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r4,pc}
+ pop {r4,r5,r6,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M48010_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, gcvars, byref
+G_M48010_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, gcvars, byref
movs r3, 0
- str r3, [r2] - str r3, [r2+0x04] - str r3, [r2+0x08]
+ str r3, [r4] + str r3, [r4+0x04] + str r3, [r4+0x08]
;; size=8 bbWeight=0 PerfScore 0.00 G_M48010_IG05: ; bbWeight=0, epilog, nogc, extend
- pop {r4,pc}
+ pop {r4,r5,r6,pc}
;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 40, prolog size 2, PerfScore 13.00, instruction count 18, allocated bytes for code 40 (MethodHash=16ac4475) for method System.MemoryExtensions:AsMemory(System.String):System.ReadOnlyMemory`1[ushort] (Tier1)
+; Total bytes of code 58, prolog size 2, PerfScore 20.00, instruction count 25, allocated bytes for code 58 (MethodHash=16ac4475) for method System.MemoryExtensions:AsMemory(System.String):System.ReadOnlyMemory`1[ushort] (Tier1)
; ============================================================ Unwind Info: @@ -73,7 +80,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 20 (0x00014) Actual length = 40 (0x000028)
+ Function Length : 29 (0x0001d) Actual length = 58 (0x00003a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -85,7 +92,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- D4 pop {r4,lr} ; opsize 16
+ D6 pop {r4,r5,r6,lr} ; opsize 16
FF end FF end FF end

libraries.crossgen2.linux.arm.checked.mch

-34 (-32.69%) : 104229.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+Closure$:Lambda$__2-1(ushort):ubyte:this (FullOpts)

@@ -3,72 +3,78 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__>
-; V01 arg1 [V01,T00] ( 3, 3 ) ushort -> r1 single-def
+; V01 arg1 [V01,T01] ( 3, 3 ) ushort -> r1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T01] ( 7, 4.50) int -> r5 "CSE - aggressive"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp" +;* V04 tmp2 [V04,T04] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V05 tmp3 [V05 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp" +;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V07 tmp5 [V07 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp" +;* V08 tmp6 [V08,T06] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +; V09 tmp7 [V09,T02] ( 3, 2.52) ushort -> r0 "Inline stloc first use temp" +; V10 tmp8 [V10,T03] ( 3, 2 ) ubyte -> r0 "Inline stloc first use temp" +; V11 cse0 [V11,T00] ( 7, 6.64) int -> r0 "CSE - aggressive"
; ; Lcl frame size = 0
-G_M44010_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG - push {r4,r5,r11,lr} - add r11, sp, 8 - ;; size=8 bbWeight=1 PerfScore 2.00
+G_M44010_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_M44010_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- uxth r5, r1 - mov r0, r5 - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - ldr r3, [r4] - blx r3 // Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsMethodBlock(ushort):ubyte - cmp r0, 0 - bne SHORT G_M44010_IG05 - ;; size=22 bbWeight=1 PerfScore 9.00 -G_M44010_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp r5, 81 - beq SHORT G_M44010_IG05 - cmp r5, 82 - beq SHORT G_M44010_IG05 - mov r0, r5 - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - ldr r3, [r4] - blx r3 // Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsAccessorBlock(ushort):ubyte - cmp r0, 0 - bne SHORT G_M44010_IG05 - mov r0, r5 - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - ldr r3, [r4] - blx r3 // Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsMultiLineLambdaExpression(ushort):ubyte - cmp r0, 0 - bne SHORT G_M44010_IG05 - mov r0, r5 - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - ldr r3, [r4] - blx r3 // Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsSingleLineLambdaExpression(ushort):ubyte - ;; size=64 bbWeight=0.50 PerfScore 13.00 -G_M44010_IG04: ; bbWeight=0.50, epilog, nogc, extend - pop {r4,r5,r11,pc} - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M44010_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ uxth r0, r1 + sub r3, r0, 79 + cmp r3, 1 + bls SHORT G_M44010_IG08 + cmp r0, 81 + beq SHORT G_M44010_IG08 + ;; size=14 bbWeight=1 PerfScore 6.00 +G_M44010_IG03: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cmp r0, 82 + beq SHORT G_M44010_IG08 + ;; size=4 bbWeight=0.64 PerfScore 1.28 +G_M44010_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + sub r3, r0, 83 + cmp r3, 4 + bls SHORT G_M44010_IG08 + subw r3, r0, 343 + cmp r3, 1 + bls SHORT G_M44010_IG08 + movw r3, 0xd1ff + cmp r0, r3 + beq SHORT G_M44010_IG06 + ;; size=24 bbWeight=1 PerfScore 9.00 +G_M44010_IG05: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cmp r0, 342 + bne SHORT G_M44010_IG10 + ;; size=6 bbWeight=0.52 PerfScore 1.04 +G_M44010_IG06: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1
- ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M44010_IG06: ; bbWeight=0.50, epilog, nogc, extend - pop {r4,r5,r11,pc} - ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=2 bbWeight=0.75 PerfScore 0.75 +G_M44010_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M44010_IG08: ; bbWeight=0.79, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + movs r0, 1 + ;; size=2 bbWeight=0.79 PerfScore 0.79 +G_M44010_IG09: ; bbWeight=0.79, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=0.79 PerfScore 0.79 +G_M44010_IG10: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + movs r0, 0 + b SHORT G_M44010_IG07 + ;; size=4 bbWeight=0.25 PerfScore 0.50
-; Total bytes of code 104, prolog size 8, PerfScore 25.50, instruction count 40, allocated bytes for code 104 (MethodHash=f0a25415) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-1(ushort):ubyte:this (FullOpts)
+; Total bytes of code 70, prolog size 6, PerfScore 23.14, instruction count 27, allocated bytes for code 70 (MethodHash=f0a25415) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-1(ushort):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -80,7 +86,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 52 (0x00034) Actual length = 104 (0x000068)
+ Function Length : 35 (0x00023) Actual length = 70 (0x000046)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -92,7 +98,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

-32 (-29.09%) : 158123.dasm - Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,int[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)

@@ -3,16 +3,18 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> r5 class-hnd single-def <System.String> ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r6 class-hnd single-def <int[]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 7, 14 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.FileIO.TextFieldParser>
+; V03 tmp1 [V03,T00] ( 6, 12 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.FileIO.TextFieldParser>
; ; Lcl frame size = 0 @@ -52,32 +54,17 @@ G_M8139_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by ldr r3, [r4] blx r3 // Microsoft.VisualBasic.FileIO.TextFieldParser:set_FieldWidths(int[]):this ; gcrRegs -[r0-r1 r6]
- movw r2, LOW RELOC 0xD1FFAB1E - movt r2, HIGH RELOC 0xD1FFAB1E - add r2, pc - ldr r2, [r2] - ldr r2, [r2] - ; gcrRegs +[r2] - mov r0, r7 - ; gcrRegs +[r0] - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - movs r1, 1 - ldr r3, [r4] - blx r3 // Microsoft.VisualBasic.FileIO.TextFieldParser:ValidateFieldTypeEnumValue(int,System.String):this - ; gcrRegs -[r0 r2]
movs r0, 1 str r0, [r7+0x50] strb r0, [r7+0x6F] mov r0, r7 ; gcrRegs +[r0]
- ;; size=94 bbWeight=1 PerfScore 36.00
+ ;; size=62 bbWeight=1 PerfScore 24.00
G_M8139_IG03: ; bbWeight=1, epilog, nogc, extend pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 110, prolog size 8, PerfScore 41.00, instruction count 41, allocated bytes for code 110 (MethodHash=07e2e034) for method Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,int[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
+; Total bytes of code 78, prolog size 8, PerfScore 29.00, instruction count 29, allocated bytes for code 78 (MethodHash=07e2e034) for method Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,int[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
; ============================================================ Unwind Info: @@ -89,7 +76,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 55 (0x00037) Actual length = 110 (0x00006e)
+ Function Length : 39 (0x00027) Actual length = 78 (0x00004e)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-32 (-28.57%) : 158122.dasm - Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,System.String[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)

@@ -3,16 +3,18 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> r5 class-hnd single-def <System.String> ; V01 arg1 [V01,T02] ( 3, 3 ) 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,T00] ( 7, 14 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.FileIO.TextFieldParser>
+; V03 tmp1 [V03,T00] ( 6, 12 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.FileIO.TextFieldParser>
; ; Lcl frame size = 0 @@ -52,33 +54,18 @@ G_M21542_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b ldr r3, [r4] blx r3 // Microsoft.VisualBasic.FileIO.TextFieldParser:set_Delimiters(System.String[]):this ; gcrRegs -[r0-r1 r6]
- movw r2, LOW RELOC 0xD1FFAB1E - movt r2, HIGH RELOC 0xD1FFAB1E - add r2, pc - ldr r2, [r2] - ldr r2, [r2] - ; gcrRegs +[r2] - mov r0, r7 - ; gcrRegs +[r0] - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - movs r1, 0 - ldr r3, [r4] - blx r3 // Microsoft.VisualBasic.FileIO.TextFieldParser:ValidateFieldTypeEnumValue(int,System.String):this - ; gcrRegs -[r0 r2]
movs r0, 0 str r0, [r7+0x50] movs r0, 1 strb r0, [r7+0x6F] mov r0, r7 ; gcrRegs +[r0]
- ;; size=96 bbWeight=1 PerfScore 37.00
+ ;; size=64 bbWeight=1 PerfScore 25.00
G_M21542_IG03: ; bbWeight=1, epilog, nogc, extend pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 112, prolog size 8, PerfScore 42.00, instruction count 42, allocated bytes for code 112 (MethodHash=4b06abd9) for method Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,System.String[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 30.00, instruction count 30, allocated bytes for code 80 (MethodHash=4b06abd9) for method Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,System.String[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
; ============================================================ Unwind Info: @@ -90,7 +77,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 56 (0x00038) Actual length = 112 (0x000070)
+ Function Length : 40 (0x00028) Actual length = 80 (0x000050)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+12 (+60.00%) : 98042.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)

@@ -3,50 +3,67 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
-; sp based frame
+; optimized using Synthesized PGO +; r11 based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> r0 single-def ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V02 tmp1 [V02,T01] ( 3, 2.52) ushort -> r0 "Inline stloc first use temp" +; V03 tmp2 [V03,T02] ( 3, 2 ) ubyte -> r0 "Inline stloc first use temp"
; ; Lcl frame size = 0 G_M24505_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,lr} - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M24505_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M24505_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
uxth r0, r0
- movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - ldr r3, [r4] - blx r3 // Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderSubOrFunctionKeyword(ushort):ubyte - ; gcr arg pop 0 - ;; size=16 bbWeight=1 PerfScore 6.00 -G_M24505_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r4,pc} - ;; size=2 bbWeight=1 PerfScore 1.00
+ cmp r0, 478 + beq SHORT G_M24505_IG04 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M24505_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + movw r3, 0xd1ff + cmp r0, r3 + bne SHORT G_M24505_IG06 + ;; size=8 bbWeight=0.52 PerfScore 1.56 +G_M24505_IG04: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 1 + ;; size=2 bbWeight=0.75 PerfScore 0.75 +G_M24505_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M24505_IG06: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + movs r0, 0 + b SHORT G_M24505_IG05 + ;; size=4 bbWeight=0.25 PerfScore 0.50
-; Total bytes of code 20, prolog size 2, PerfScore 8.00, instruction count 8, allocated bytes for code 20 (MethodHash=7ce7a046) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
+; Total bytes of code 32, prolog size 6, PerfScore 8.81, instruction count 12, allocated bytes for code 32 (MethodHash=7ce7a046) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 0
+ Epilog Count : 1
F bit : 0
- E bit : 1
+ E bit : 0
X bit : 0 Vers : 0
- Function Length : 10 (0x0000a) Actual length = 20 (0x000014) - --- One epilog, unwind codes at 0
+ Function Length : 16 (0x00010) Actual length = 32 (0x000020) + ---- 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)
---- Unwind codes ---- ---- Epilog start at index 0 ----
- D4 pop {r4,lr} ; opsize 16 - FF end
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

+12 (+60.00%) : 98043.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsMethodStatementKeyword(ushort):ubyte (FullOpts)

@@ -3,50 +3,67 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
-; sp based frame
+; optimized using Synthesized PGO +; r11 based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> r0 single-def ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V02 tmp1 [V02,T01] ( 3, 2.52) ushort -> r0 "Inline stloc first use temp" +; V03 tmp2 [V03,T02] ( 3, 2 ) ubyte -> r0 "Inline stloc first use temp"
; ; Lcl frame size = 0 G_M45947_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,lr} - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M45947_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M45947_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
uxth r0, r0
- movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - ldr r3, [r4] - blx r3 // Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsMethodStatementSubOrFunctionKeyword(ushort):ubyte - ; gcr arg pop 0 - ;; size=16 bbWeight=1 PerfScore 6.00 -G_M45947_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r4,pc} - ;; size=2 bbWeight=1 PerfScore 1.00
+ cmp r0, 478 + beq SHORT G_M45947_IG04 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M45947_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + movw r3, 0xd1ff + cmp r0, r3 + bne SHORT G_M45947_IG06 + ;; size=8 bbWeight=0.52 PerfScore 1.56 +G_M45947_IG04: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 1 + ;; size=2 bbWeight=0.75 PerfScore 0.75 +G_M45947_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M45947_IG06: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + movs r0, 0 + b SHORT G_M45947_IG05 + ;; size=4 bbWeight=0.25 PerfScore 0.50
-; Total bytes of code 20, prolog size 2, PerfScore 8.00, instruction count 8, allocated bytes for code 20 (MethodHash=26ba4c84) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsMethodStatementKeyword(ushort):ubyte (FullOpts)
+; Total bytes of code 32, prolog size 6, PerfScore 8.81, instruction count 12, allocated bytes for code 32 (MethodHash=26ba4c84) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsMethodStatementKeyword(ushort):ubyte (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 0
+ Epilog Count : 1
F bit : 0
- E bit : 1
+ E bit : 0
X bit : 0 Vers : 0
- Function Length : 10 (0x0000a) Actual length = 20 (0x000014) - --- One epilog, unwind codes at 0
+ Function Length : 16 (0x00010) Actual length = 32 (0x000020) + ---- 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)
---- Unwind codes ---- ---- Epilog start at index 0 ----
- D4 pop {r4,lr} ; opsize 16 - FF end
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

+12 (+60.00%) : 98040.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementKeyword(ushort):ubyte (FullOpts)

@@ -3,50 +3,67 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
-; sp based frame
+; optimized using Synthesized PGO +; r11 based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> r0 single-def ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V02 tmp1 [V02,T01] ( 3, 2.52) ushort -> r0 "Inline stloc first use temp" +; V03 tmp2 [V03,T02] ( 3, 2 ) ubyte -> r0 "Inline stloc first use temp"
; ; Lcl frame size = 0 G_M64956_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,lr} - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M64956_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M64956_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
uxth r0, r0
- movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - ldr r3, [r4] - blx r3 // Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementSubOrFunctionKeyword(ushort):ubyte - ; gcr arg pop 0 - ;; size=16 bbWeight=1 PerfScore 6.00 -G_M64956_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r4,pc} - ;; size=2 bbWeight=1 PerfScore 1.00
+ cmp r0, 478 + beq SHORT G_M64956_IG04 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M64956_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + movw r3, 0xd1ff + cmp r0, r3 + bne SHORT G_M64956_IG06 + ;; size=8 bbWeight=0.52 PerfScore 1.56 +G_M64956_IG04: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 1 + ;; size=2 bbWeight=0.75 PerfScore 0.75 +G_M64956_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M64956_IG06: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + movs r0, 0 + b SHORT G_M64956_IG05 + ;; size=4 bbWeight=0.25 PerfScore 0.50
-; Total bytes of code 20, prolog size 2, PerfScore 8.00, instruction count 8, allocated bytes for code 20 (MethodHash=cd320243) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementKeyword(ushort):ubyte (FullOpts)
+; Total bytes of code 32, prolog size 6, PerfScore 8.81, instruction count 12, allocated bytes for code 32 (MethodHash=cd320243) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementKeyword(ushort):ubyte (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 0
+ Epilog Count : 1
F bit : 0
- E bit : 1
+ E bit : 0
X bit : 0 Vers : 0
- Function Length : 10 (0x0000a) Actual length = 20 (0x000014) - --- One epilog, unwind codes at 0
+ Function Length : 16 (0x00010) Actual length = 32 (0x000020) + ---- 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)
---- Unwind codes ---- ---- Epilog start at index 0 ----
- D4 pop {r4,lr} ; opsize 16 - FF end
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

libraries.pmi.linux.arm.checked.mch

-12 (-50.00%) : 237730.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)

@@ -2,63 +2,55 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; optimized using Synthesized PGO +; sp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 3, 2.50) ref -> r0 this class-hnd single-def <System.IO.Compression.DeflateManagedStream>
+; V00 this [V00,T01] ( 3, 2.80) ref -> r0 this class-hnd single-def <System.IO.Compression.DeflateManagedStream>
; V01 arg1 [V01,T00] ( 3, 3 ) ubyte -> r1 single-def ;# 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 cmp r3, 0
- bne SHORT G_M40773_IG04
+ beq SHORT G_M40773_IG04
;; 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 -G_M40773_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r0]
+G_M40773_IG03: ; bbWeight=0.80, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
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=2 bbWeight=0.80 PerfScore 0.80 +G_M40773_IG04: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r0] + pop {r3,pc} + ;; size=2 bbWeight=0.38 PerfScore 0.38
-; 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 12, prolog size 2, PerfScore 5.18, instruction count 6, allocated bytes for code 12 (MethodHash=8a3760ba) for method System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (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 : 12 (0x0000c) Actual length = 24 (0x000018) - ---- 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 : 6 (0x00006) Actual length = 12 (0x00000c) + --- 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

-44 (-32.35%) : 142200.dasm - System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],System.IFormatProvider,byref):ubyte (FullOpts)

@@ -2,87 +2,76 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 1 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 1 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 4, 4 ) struct ( 8) [sp+0x20] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ushort]> -; V01 arg1 [V01,T01] ( 4, 3.13) ref -> r2 class-hnd single-def <System.IFormatProvider>
+; V00 arg0 [V00,T00] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ushort]> +; V01 arg1 [V01,T01] ( 4, 3.25) ref -> r2 class-hnd single-def <System.IFormatProvider>
; V02 arg2 [V02,T02] ( 3, 3 ) byref -> r4 single-def ; V03 OutArgs [V03 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 3, 1.50) ref -> r5 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> -; V05 tmp2 [V05,T03] ( 2, 2 ) int -> r0 "Inline return value spill temp" -; V06 tmp3 [V06 ] ( 3, 2 ) ref -> [sp+0x0C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <<unknown class>>
+; V04 tmp1 [V04,T03] ( 3, 2 ) ref -> r3 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> +;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inline ldloca(s) first use temp" <<unknown class>> +;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;
-; Lcl frame size = 16
+; Lcl frame size = 12
G_M47970_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1}
- push {r4,r5,r11,lr} - sub sp, 16 - add r11, sp, 24 - movs r0, 0 - str r0, [sp+0x0C] // [V06 tmp3]
+ push {r4,r11,lr} + sub sp, 12 + add r11, sp, 16
mov r4, r3 ; byrRegs +[r4]
- ;; size=18 bbWeight=1 PerfScore 7.00
+ ;; size=14 bbWeight=1 PerfScore 5.00
G_M47970_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs +[r2] cmp r2, 0 bne SHORT G_M47970_IG07 ;; size=4 bbWeight=1 PerfScore 2.00
-G_M47970_IG03: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
+G_M47970_IG03: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
; gcrRegs -[r2] movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo ; gcrRegs +[r0]
- mov r5, r0 - ; gcrRegs +[r5] - ;; size=14 bbWeight=0.37 PerfScore 1.87 -G_M47970_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz - ; gcrRegs -[r0] - add r1, sp, 12 - movs r0, 7 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Number:TryValidateParseStyleInteger(int,byref):ubyte - cmp r0, 0 - beq SHORT G_M47970_IG08 - str r4, [sp] - ldr r0, [sp+0x20] - ; byrRegs +[r0] - ldr r1, [sp+0x24] - mov r3, r5
+ mov r3, r0
; gcrRegs +[r3]
+ ;; size=14 bbWeight=0.75 PerfScore 3.73 +G_M47970_IG04: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0010 {r4}, byref, isz + ; gcrRegs -[r0] + str r4, [sp] + ldr r0, [sp+0x18] + ; byrRegs +[r0] + ldr r1, [sp+0x1C]
movs r2, 7 movw lr, 0xd1ff movt lr, 0xd1ff ldr lr, [lr] blx lr // <unknown method>
- ; gcrRegs -[r3 r5]
+ ; gcrRegs -[r3]
; byrRegs -[r0 r4]
- movs r3, 0 - str r3, [sp+0x0C] // [V06 tmp3]
cmp r0, 0 beq SHORT G_M47970_IG05 movs r0, 0 b SHORT G_M47970_IG06
- ;; size=56 bbWeight=1 PerfScore 23.00
+ ;; size=30 bbWeight=1 PerfScore 12.00
G_M47970_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00 G_M47970_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 16 - pop {r4,r5,r11,lr}
+ add sp, 12 + pop {r4,r11,lr}
add sp, 8 bx lr ;; size=10 bbWeight=1 PerfScore 4.00
-G_M47970_IG07: ; bbWeight=0.13, gcVars=00000000 {}, gcrefRegs=0004 {r2}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M47970_IG07: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0004 {r2}, byrefRegs=0010 {r4}, gcvars, byref, isz
; gcrRegs +[r2] ; byrRegs +[r4] mov r0, r2 @@ -92,23 +81,12 @@ G_M47970_IG07: ; bbWeight=0.13, gcVars=00000000 {}, gcrefRegs=0004 {r2}, ldr r3, [r3] blx r3 // System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo ; gcrRegs -[r2]
- mov r5, r0 - ; gcrRegs +[r5]
+ mov r3, r0 + ; gcrRegs +[r3]
b SHORT G_M47970_IG04
- ;; size=18 bbWeight=0.13 PerfScore 0.89 -G_M47970_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0 r5] - ; byrRegs -[r4] - ldr r0, [sp+0x0C] // [V06 tmp3] - ; gcrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_THROW - ; gcrRegs -[r0] - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=18 bbWeight=0.25 PerfScore 1.78
-; Total bytes of code 136, prolog size 16, PerfScore 39.75, instruction count 54, allocated bytes for code 136 (MethodHash=22f2449d) for method System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],System.IFormatProvider,byref):ubyte (FullOpts)
+; Total bytes of code 92, prolog size 12, PerfScore 29.51, instruction count 36, allocated bytes for code 92 (MethodHash=22f2449d) for method System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],System.IFormatProvider,byref):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -120,20 +98,20 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 68 (0x00044) Actual length = 136 (0x000088)
+ Function Length : 46 (0x0002e) Actual length = 92 (0x00005c)
---- 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 : 6 (0x06) ---- Unwind codes ----
- 04 add sp, sp, #16 ; opsize 16 - A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ 03 add sp, sp, #12 ; opsize 16 + A8 10 pop {r4,r11,lr} ; opsize 32
EC 03 pop {r0,r1} ; opsize 16 FF end ---- Epilog start at index 6 ----
- 04 add sp, sp, #16 ; opsize 16 - A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ 03 add sp, sp, #12 ; opsize 16 + A8 10 pop {r4,r11,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16 FD end + nop ; opsize 16 FF end

-44 (-30.14%) : 141995.dasm - System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)

@@ -2,32 +2,33 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 1 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 1 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 4, 4 ) struct ( 8) [sp+0x20] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
+; V00 arg0 [V00,T00] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
; V01 arg1 [V01,T01] ( 3, 3 ) byref -> r4 single-def ; V02 OutArgs [V02 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 4.25) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Globalization.NumberFormatInfo> -; V04 tmp2 [V04,T04] ( 3, 1.50) ref -> r5 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> -; V05 tmp3 [V05,T03] ( 2, 2 ) int -> r0 "Inline return value spill temp" -; V06 tmp4 [V06 ] ( 3, 2 ) ref -> [sp+0x0C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <<unknown class>>
+; V03 tmp1 [V03,T02] ( 3, 4.51) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Globalization.NumberFormatInfo> +; V04 tmp2 [V04,T03] ( 3, 2 ) ref -> r3 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> +;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inline ldloca(s) first use temp" <<unknown class>> +;* V07 tmp5 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;
-; Lcl frame size = 16
+; Lcl frame size = 12
G_M37262_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1}
- push {r4,r5,r11,lr} - sub sp, 16 - add r11, sp, 24 - movs r0, 0 - str r0, [sp+0x0C] // [V06 tmp4]
+ push {r4,r11,lr} + sub sp, 12 + add r11, sp, 16
mov r4, r2 ; byrRegs +[r4]
- ;; size=18 bbWeight=1 PerfScore 7.00
+ ;; size=14 bbWeight=1 PerfScore 5.00
G_M37262_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz movw r3, 0xd1ff movt r3, 0xd1ff @@ -37,79 +38,56 @@ G_M37262_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre cmp r0, 0 bne SHORT G_M37262_IG07 ;; size=16 bbWeight=1 PerfScore 6.00
-G_M37262_IG03: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
+G_M37262_IG03: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
; gcrRegs -[r0] movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo ; gcrRegs +[r0]
- mov r5, r0 - ; gcrRegs +[r5] - ;; size=14 bbWeight=0.37 PerfScore 1.87 -G_M37262_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz - ; gcrRegs -[r0] - add r1, sp, 12 - movs r0, 7 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Number:TryValidateParseStyleInteger(int,byref):ubyte - cmp r0, 0 - beq SHORT G_M37262_IG08 - str r4, [sp] - ldr r0, [sp+0x20] - ; byrRegs +[r0] - ldr r1, [sp+0x24] - mov r3, r5
+ mov r3, r0
; gcrRegs +[r3]
+ ;; size=14 bbWeight=0.75 PerfScore 3.73 +G_M37262_IG04: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0010 {r4}, byref, isz + ; gcrRegs -[r0] + str r4, [sp] + ldr r0, [sp+0x18] + ; byrRegs +[r0] + ldr r1, [sp+0x1C]
movs r2, 7 movw lr, 0xd1ff movt lr, 0xd1ff ldr lr, [lr] blx lr // <unknown method>
- ; gcrRegs -[r3 r5]
+ ; gcrRegs -[r3]
; byrRegs -[r0 r4]
- movs r3, 0 - str r3, [sp+0x0C] // [V06 tmp4]
cmp r0, 0 beq SHORT G_M37262_IG05 movs r0, 0 b SHORT G_M37262_IG06
- ;; size=56 bbWeight=1 PerfScore 23.00
+ ;; size=30 bbWeight=1 PerfScore 12.00
G_M37262_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00 G_M37262_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 16 - pop {r4,r5,r11,lr}
+ add sp, 12 + pop {r4,r11,lr}
add sp, 8 bx lr ;; size=10 bbWeight=1 PerfScore 4.00
-G_M37262_IG07: ; bbWeight=0.13, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M37262_IG07: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref, isz
; gcrRegs +[r0] ; byrRegs +[r4] movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo
- mov r5, r0 - ; gcrRegs +[r5]
+ mov r3, r0 + ; gcrRegs +[r3]
b SHORT G_M37262_IG04
- ;; size=16 bbWeight=0.13 PerfScore 0.76 -G_M37262_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0 r5] - ; byrRegs -[r4] - ldr r0, [sp+0x0C] // [V06 tmp4] - ; gcrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_THROW - ; gcrRegs -[r0] - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0.25 PerfScore 1.52
-; Total bytes of code 146, prolog size 16, PerfScore 43.63, instruction count 57, allocated bytes for code 146 (MethodHash=7dc46e71) for method System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
+; Total bytes of code 102, prolog size 12, PerfScore 33.25, instruction count 39, allocated bytes for code 102 (MethodHash=7dc46e71) for method System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -121,20 +99,20 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 73 (0x00049) Actual length = 146 (0x000092)
+ Function Length : 51 (0x00033) Actual length = 102 (0x000066)
---- 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 : 6 (0x06) ---- Unwind codes ----
- 04 add sp, sp, #16 ; opsize 16 - A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ 03 add sp, sp, #12 ; opsize 16 + A8 10 pop {r4,r11,lr} ; opsize 32
EC 03 pop {r0,r1} ; opsize 16 FF end ---- Epilog start at index 6 ----
- 04 add sp, sp, #16 ; opsize 16 - A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ 03 add sp, sp, #12 ; opsize 16 + A8 10 pop {r4,r11,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16 FD end + nop ; opsize 16 FF end

+22 (+100.00%) : 105405.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)

@@ -2,59 +2,75 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; sp based frame -; fully interruptible
+; optimized using Synthesized PGO +; r11 based frame +; partially interruptible +; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser>
-; V01 arg1 [V01,T00] ( 3, 3 ) ref -> r1 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 tmp1 [V03,T02] ( 3, 2 ) ubyte -> r0 "Inline return value spill temp" +; V04 tmp2 [V04,T00] ( 4, 6.43) ushort -> r0 "Inlining Arg"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M39608_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,lr} - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M39608_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M39608_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r1] ldrh r0, [r1+0x08] movw r3, 0xd1ff
- movt r3, 0xd1ff - ldr r3, [r3] - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M39608_IG03: ; bbWeight=1, epilog, nogc, extend - add sp, 4 - pop lr - bx r3 // Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsTerminator(ushort):ubyte - ; gcr arg pop 0 - ;; size=8 bbWeight=1 PerfScore 3.00
+ cmp r0, r3 + beq SHORT G_M39608_IG07 + ;; size=10 bbWeight=1 PerfScore 4.00 +G_M39608_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r1] + cmp r0, 652 + beq SHORT G_M39608_IG07 + ;; size=6 bbWeight=0.80 PerfScore 1.60 +G_M39608_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + movw r3, 0xd1ff + cmp r0, r3 + beq SHORT G_M39608_IG05 + movs r0, 0 + b SHORT G_M39608_IG06 + ;; size=12 bbWeight=0.42 PerfScore 2.08 +G_M39608_IG05: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 1 + ;; size=2 bbWeight=0.42 PerfScore 0.42 +G_M39608_IG06: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + b SHORT G_M39608_IG08 + ;; size=2 bbWeight=0.42 PerfScore 0.42 +G_M39608_IG07: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 1 + ;; size=2 bbWeight=0.58 PerfScore 0.58 +G_M39608_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 22, prolog size 2, PerfScore 8.00, instruction count 8, allocated bytes for code 22 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 44, prolog size 6, PerfScore 12.10, instruction count 17, allocated bytes for code 44 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2 - Epilog Count : 1
+ Code Words : 1 + Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- 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) - Condition : 14 (0xe) (always) - Epilog Start Index : 3 (0x03)
+ Function Length : 22 (0x00016) Actual length = 44 (0x00002c) + --- One epilog, unwind codes at 0
---- Unwind codes ----
- ED 08 pop {r3,lr} ; opsize 16 - FF end - ---- Epilog start at index 3 ---- - 01 add sp, sp, #4 ; opsize 16 - A0 00 pop {lr} ; opsize 32
+ ---- Epilog start at index 0 ---- + A8 00 pop {r11,lr} ; opsize 32
FF end FF end

+22 (+100.00%) : 105399.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)

@@ -2,59 +2,75 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; sp based frame -; fully interruptible
+; optimized using Synthesized PGO +; r11 based frame +; partially interruptible +; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser>
-; V01 arg1 [V01,T00] ( 3, 3 ) ref -> r1 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 tmp1 [V03,T02] ( 3, 2 ) ubyte -> r0 "Inline return value spill temp" +; V04 tmp2 [V04,T00] ( 4, 6.43) ushort -> r0 "Inlining Arg"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M28613_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,lr} - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M28613_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M28613_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r1] ldrh r0, [r1+0x08] movw r3, 0xd1ff
- movt r3, 0xd1ff - ldr r3, [r3] - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M28613_IG03: ; bbWeight=1, epilog, nogc, extend - add sp, 4 - pop lr - bx r3 // Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsTerminator(ushort):ubyte - ; gcr arg pop 0 - ;; size=8 bbWeight=1 PerfScore 3.00
+ cmp r0, r3 + beq SHORT G_M28613_IG07 + ;; size=10 bbWeight=1 PerfScore 4.00 +G_M28613_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r1] + cmp r0, 652 + beq SHORT G_M28613_IG07 + ;; size=6 bbWeight=0.80 PerfScore 1.60 +G_M28613_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + movw r3, 0xd1ff + cmp r0, r3 + beq SHORT G_M28613_IG05 + movs r0, 0 + b SHORT G_M28613_IG06 + ;; size=12 bbWeight=0.42 PerfScore 2.08 +G_M28613_IG05: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 1 + ;; size=2 bbWeight=0.42 PerfScore 0.42 +G_M28613_IG06: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + b SHORT G_M28613_IG08 + ;; size=2 bbWeight=0.42 PerfScore 0.42 +G_M28613_IG07: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 1 + ;; size=2 bbWeight=0.58 PerfScore 0.58 +G_M28613_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 22, prolog size 2, PerfScore 8.00, instruction count 8, allocated bytes for code 22 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 44, prolog size 6, PerfScore 12.10, instruction count 17, allocated bytes for code 44 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2 - Epilog Count : 1
+ Code Words : 1 + Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- 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) - Condition : 14 (0xe) (always) - Epilog Start Index : 3 (0x03)
+ Function Length : 22 (0x00016) Actual length = 44 (0x00002c) + --- One epilog, unwind codes at 0
---- Unwind codes ----
- ED 08 pop {r3,lr} ; opsize 16 - FF end - ---- Epilog start at index 3 ---- - 01 add sp, sp, #4 ; opsize 16 - A0 00 pop {lr} ; opsize 32
+ ---- Epilog start at index 0 ---- + A8 00 pop {r11,lr} ; opsize 32
FF end FF end

+30 (+115.38%) : 61460.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)

@@ -2,43 +2,73 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; sp based frame
+; optimized using Synthesized PGO +; r11 based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> r0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol>
-; V01 loc0 [V01,T01] ( 3, 2.50) int -> r0 single-def
+;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 tmp1 [V03,T02] ( 6, 2.48) int -> r0 "Inline return value spill temp" +;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V05 tmp3 [V05,T01] ( 4, 3.44) int -> r0 single-def "Inline stloc first use temp"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
-G_M4118_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG - push {r3,lr} - ;; size=2 bbWeight=1 PerfScore 1.00
+G_M4118_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_M4118_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0] ldr r0, [r0+0x40] ; gcrRegs -[r0]
- movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // Microsoft.CodeAnalysis.TypeAttributesExtensions:ToCharSet(int):int - ; gcr arg pop 0
+ and r0, r0, 0x30000
cmp r0, 0
- bne SHORT G_M4118_IG05 - ;; size=18 bbWeight=1 PerfScore 7.00 -G_M4118_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq SHORT G_M4118_IG11 + ;; size=10 bbWeight=1 PerfScore 4.00 +G_M4118_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cmp r0, 0x10000 + beq SHORT G_M4118_IG12 + ;; size=6 bbWeight=0.80 PerfScore 1.60 +G_M4118_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cmp r0, 0x20000 + bne SHORT G_M4118_IG10 + ;; size=6 bbWeight=0.64 PerfScore 1.28 +G_M4118_IG05: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 4 + ;; size=2 bbWeight=0.33 PerfScore 0.33 +G_M4118_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cmp r0, 0 + bne SHORT G_M4118_IG09 + ;; size=4 bbWeight=1 PerfScore 2.00 +G_M4118_IG07: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 2
- ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M4118_IG04: ; bbWeight=0.50, epilog, nogc, extend - pop {r3,pc} - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M4118_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r3,pc} - ;; size=2 bbWeight=0.50 PerfScore 0.50
+ ;; size=2 bbWeight=0.52 PerfScore 0.52 +G_M4118_IG08: ; bbWeight=0.52, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=0.52 PerfScore 0.52 +G_M4118_IG09: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc} + ;; size=4 bbWeight=0.48 PerfScore 0.48 +G_M4118_IG10: ; bbWeight=0.31, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + movs r0, 0 + b SHORT G_M4118_IG06 + ;; size=4 bbWeight=0.31 PerfScore 0.61 +G_M4118_IG11: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + movs r0, 2 + b SHORT G_M4118_IG06 + ;; size=4 bbWeight=0.20 PerfScore 0.40 +G_M4118_IG12: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + movs r0, 3 + b SHORT G_M4118_IG06 + ;; size=4 bbWeight=0.16 PerfScore 0.32
-; Total bytes of code 26, prolog size 2, PerfScore 9.50, instruction count 11, allocated bytes for code 26 (MethodHash=fe4cefe9) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
+; Total bytes of code 56, prolog size 6, PerfScore 14.07, instruction count 22, allocated bytes for code 56 (MethodHash=fe4cefe9) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
; ============================================================ Unwind Info: @@ -50,7 +80,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 26 (0x00001a)
+ 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) @@ -62,7 +92,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- ED 08 pop {r3,lr} ; opsize 16
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

libraries_tests.run.linux.arm.Release.mch

-38 (-31.15%) : 9337.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)

@@ -6,150 +6,144 @@ ; r11 based frame ; partially interruptible ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 7
-; 3 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data
+; 3 inlinees with PGO data; 9 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 7, 3.83) ref -> r0 class-hnd single-def <System.String> -; V01 arg1 [V01,T00] ( 9, 5.83) ref -> r4 class-hnd single-def <System.String>
+; V00 arg0 [V00,T19] ( 6, 18.12) ref -> r0 class-hnd single-def <System.String> +; V01 arg1 [V01,T20] ( 6, 18.12) ref -> r1 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 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V06 tmp4 [V06,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V07 tmp5 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V06 tmp4 [V06,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V07 tmp5 [V07,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V08 tmp6 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V09 tmp7 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp8 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp9 [V11,T03] ( 2, 4.00) int -> r2 "Inlining Arg" -; V12 tmp10 [V12,T02] ( 2, 4.00) byref -> r3 single-def "Inlining Arg"
+; V11 tmp9 [V11,T03] ( 2, 57.14) int -> r4 "Inlining Arg" +; V12 tmp10 [V12,T00] ( 2, 57.14) byref -> r12 single-def "Inlining Arg"
;* V13 tmp11 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp12 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V15 tmp13 [V15,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V15 tmp13 [V15,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V16 tmp14 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V17 tmp15 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V18 tmp16 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp17 [V19,T17] ( 2, 0 ) int -> r6 "Inlining Arg" -; V20 tmp18 [V20,T11] ( 2, 0 ) byref -> r5 single-def "Inlining Arg" -;* V21 tmp19 [V21 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> -;* V22 tmp20 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> -;* V23 tmp21 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> -; V24 tmp22 [V24,T18] ( 2, 0 ) int -> r4 "Inlining Arg" -; V25 tmp23 [V25,T12] ( 2, 0 ) byref -> r7 single-def "Inlining Arg" -;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP -;* V27 tmp25 [V27 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP -; V28 tmp26 [V28,T13] ( 2, 0 ) byref -> r5 "field V04._reference (fldOffset=0x0)" P-INDEP -; V29 tmp27 [V29,T19] ( 2, 0 ) int -> r6 "field V04._length (fldOffset=0x4)" P-INDEP -;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP -;* V31 tmp29 [V31 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x4)" P-INDEP -; V32 tmp30 [V32,T04] ( 2, 2.00) byref -> r3 "field V08._reference (fldOffset=0x0)" P-INDEP -; V33 tmp31 [V33,T06] ( 2, 2.00) int -> r2 "field V08._length (fldOffset=0x4)" P-INDEP -; V34 tmp32 [V34,T05] ( 2, 2.00) byref -> r3 single-def "field V09._reference (fldOffset=0x0)" P-INDEP -; V35 tmp33 [V35,T07] ( 2, 2.00) int -> r2 "field V09._length (fldOffset=0x4)" P-INDEP -;* V36 tmp34 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP -;* V37 tmp35 [V37 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP -;* V38 tmp36 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP -;* V39 tmp37 [V39 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x4)" P-INDEP -; V40 tmp38 [V40,T14] ( 2, 0 ) byref -> r5 single-def "field V17._reference (fldOffset=0x0)" P-INDEP -; V41 tmp39 [V41,T20] ( 2, 0 ) int -> r6 "field V17._length (fldOffset=0x4)" P-INDEP -;* V42 tmp40 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP -;* V43 tmp41 [V43 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP -; V44 tmp42 [V44,T15] ( 2, 0 ) byref -> r2 "field V21._reference (fldOffset=0x0)" P-INDEP -; V45 tmp43 [V45,T21] ( 2, 0 ) int -> r3 "field V21._length (fldOffset=0x4)" P-INDEP -; V46 tmp44 [V46,T16] ( 2, 0 ) byref -> r2 single-def "field V22._reference (fldOffset=0x0)" P-INDEP -; V47 tmp45 [V47,T22] ( 2, 0 ) int -> r3 "field V22._length (fldOffset=0x4)" P-INDEP -;* V48 tmp46 [V48 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP -;* V49 tmp47 [V49 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP
+; V19 tmp17 [V19,T04] ( 2, 57.14) int -> r2 "Inlining Arg" +; V20 tmp18 [V20,T01] ( 2, 57.14) byref -> r0 single-def "Inlining Arg" +;* V21 tmp19 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V22 tmp20 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V23 tmp21 [V23 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> +;* V24 tmp22 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> +;* V25 tmp23 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> +; V26 tmp24 [V26,T05] ( 2, 57.14) int -> r3 "Inlining Arg" +; V27 tmp25 [V27,T02] ( 2, 57.14) byref -> lr single-def "Inlining Arg" +;* V28 tmp26 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V29 tmp27 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP +;* V31 tmp29 [V31 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP +; V32 tmp30 [V32,T08] ( 2, 28.57) byref -> r0 "field V04._reference (fldOffset=0x0)" P-INDEP +; V33 tmp31 [V33,T13] ( 2, 28.57) int -> r1 "field V04._length (fldOffset=0x4)" P-INDEP +;* V34 tmp32 [V34 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP +;* V35 tmp33 [V35 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x4)" P-INDEP +; V36 tmp34 [V36,T22] ( 2, 15.29) byref -> r12 "field V08._reference (fldOffset=0x0)" P-INDEP +; V37 tmp35 [V37,T14] ( 2, 28.57) int -> r4 "field V08._length (fldOffset=0x4)" P-INDEP +; V38 tmp36 [V38,T09] ( 2, 28.57) byref -> r12 single-def "field V09._reference (fldOffset=0x0)" P-INDEP +; V39 tmp37 [V39,T15] ( 2, 28.57) int -> r4 "field V09._length (fldOffset=0x4)" P-INDEP +;* V40 tmp38 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP +;* V41 tmp39 [V41 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP +;* V42 tmp40 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP +;* V43 tmp41 [V43 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x4)" P-INDEP +; V44 tmp42 [V44,T10] ( 2, 28.57) byref -> r0 single-def "field V17._reference (fldOffset=0x0)" P-INDEP +; V45 tmp43 [V45,T16] ( 2, 28.57) int -> r1 "field V17._length (fldOffset=0x4)" P-INDEP +;* V46 tmp44 [V46 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP +;* V47 tmp45 [V47 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP +; V48 tmp46 [V48,T11] ( 2, 28.57) byref -> r2 "field V23._reference (fldOffset=0x0)" P-INDEP +; V49 tmp47 [V49,T17] ( 2, 28.57) int -> r3 "field V23._length (fldOffset=0x4)" P-INDEP +; V50 tmp48 [V50,T12] ( 2, 28.57) byref -> r2 single-def "field V24._reference (fldOffset=0x0)" P-INDEP +; V51 tmp49 [V51,T18] ( 2, 28.57) int -> r3 "field V24._length (fldOffset=0x4)" P-INDEP +;* V52 tmp50 [V52 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP +;* V53 tmp51 [V53 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x4)" P-INDEP +; V54 cse0 [V54,T07] ( 4, 30.24) int -> r3 "CSE - aggressive" +; V55 cse1 [V55,T21] ( 3, 15.95) int -> r2 "CSE - moderate" +; V56 cse2 [V56,T06] ( 3, 42.86) byref -> lr "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M49441_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr} - add r11, sp, 16 - mov r4, r1 - ; gcrRegs +[r4] - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M49441_IG02: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0]
+ push {r3,r4,r11,lr} + add r11, sp, 8 + ;; size=8 bbWeight=1 PerfScore 2.00 +G_M49441_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r0-r1]
cmp r0, 0
- beq SHORT G_M49441_IG08 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M49441_IG03: ; bbWeight=0.83, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz - ldr r3, [r0+0x04] - cmp r3, 0 - beq SHORT G_M49441_IG08 - ;; size=6 bbWeight=0.83 PerfScore 2.50 -G_M49441_IG04: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz - cmp r4, 0
beq SHORT G_M49441_IG10 ;; size=4 bbWeight=1 PerfScore 2.00
-G_M49441_IG05: ; bbWeight=0.83, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz - ldr r3, [r4+0x04] - cmp r3, 0 - beq SHORT G_M49441_IG10 - ;; size=6 bbWeight=0.83 PerfScore 2.50 -G_M49441_IG06: ; bbWeight=1.00, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz - add r3, r4, 8 - ; byrRegs +[r3] - ldr r2, [r4+0x04]
+G_M49441_IG03: ; bbWeight=0.83, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz + ldr r2, [r0+0x04]
cmp r2, 0
- ble SHORT G_M49441_IG11 - ;; size=10 bbWeight=1.00 PerfScore 4.00 -G_M49441_IG07: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0008 {r3}, byref, isz - ldrh r3, [r3] - ; byrRegs -[r3] - cmp r3, 47 - bne SHORT G_M49441_IG11 - ;; size=6 bbWeight=1 PerfScore 3.00 -G_M49441_IG08: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ beq SHORT G_M49441_IG10 + ;; size=6 bbWeight=0.83 PerfScore 2.50 +G_M49441_IG04: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz + cmp r1, 0 + beq SHORT G_M49441_IG12 + ;; size=4 bbWeight=1 PerfScore 2.00 +G_M49441_IG05: ; bbWeight=0.83, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz + ldr r3, [r1+0x04] + cmp r3, 0 + beq SHORT G_M49441_IG12 + ;; size=6 bbWeight=0.83 PerfScore 2.50 +G_M49441_IG06: ; bbWeight=14.29, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz + add lr, r1, 8 + ; byrRegs +[lr] + mov r12, lr + ; byrRegs +[r12] + mov r4, r3 + cmp r4, 0 + bgt SHORT G_M49441_IG09 + ;; size=12 bbWeight=14.29 PerfScore 71.43 +G_M49441_IG07: ; bbWeight=14.29, gcrefRegs=0001 {r0}, byrefRegs=4000 {lr}, byref + ; gcrRegs -[r1] + ; byrRegs -[r12] + adds r0, 8
; gcrRegs -[r0]
- mov r0, r4 - ; gcrRegs +[r0] - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M49441_IG09: ; bbWeight=0, epilog, nogc, extend - pop {r4,r5,r6,r7,r11,pc} - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M49441_IG10: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[r4] - pop {r4,r5,r6,r7,r11,pc} - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M49441_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[r4] - add r5, r0, 8 - ; byrRegs +[r5] - ldr r6, [r0+0x04] - movs r0, 1 - ; gcrRegs -[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Diagnostics.Debug:Assert(ubyte) - add r7, r4, 8 - ; byrRegs +[r7] - ldr r4, [r4+0x04] - ; gcrRegs -[r4] - movs r0, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Diagnostics.Debug:Assert(ubyte) - mov r2, r7 - ; byrRegs +[r2] - mov r3, r4 - mov r0, r5
; byrRegs +[r0]
- mov r1, r6
+ mov r1, r2 + mov r2, lr + ; byrRegs +[r2]
movw lr, 0xd1ff
+ ; byrRegs -[lr]
movt lr, 0xd1ff ldr lr, [lr] blx lr // System.IO.Path:JoinInternal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.String ; gcrRegs +[r0]
- ; byrRegs -[r0 r2 r5 r7] - ;; size=62 bbWeight=0 PerfScore 0.00 -G_M49441_IG12: ; bbWeight=0, epilog, nogc, extend - pop {r4,r5,r6,r7,r11,pc}
+ ; byrRegs -[r0 r2] + ;; size=20 bbWeight=14.29 PerfScore 100.00 +G_M49441_IG08: ; bbWeight=14.29, epilog, nogc, extend + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=14.29 PerfScore 14.29 +G_M49441_IG09: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=5000 {r12 lr}, gcvars, byref, isz + ; gcrRegs +[r1] + ; byrRegs +[r12 lr] + ldrh r12, [r12] + ; byrRegs -[r12] + cmp r12, 47 + bne SHORT G_M49441_IG07 + ;; size=10 bbWeight=1 PerfScore 3.00 +G_M49441_IG10: ; bbWeight=0, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0] + ; byrRegs -[lr] + mov r0, r1 + ; gcrRegs +[r0] + ;; size=2 bbWeight=0 PerfScore 0.00 +G_M49441_IG11: ; bbWeight=0, epilog, nogc, extend + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M49441_IG12: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
...

-38 (-31.15%) : 15817.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)

@@ -6,147 +6,144 @@ ; r11 based frame ; partially interruptible ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 17
-; 3 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data
+; 3 inlinees with PGO data; 9 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 7, 5.83) ref -> r0 class-hnd single-def <System.String> -; V01 arg1 [V01,T00] ( 9, 7.83) ref -> r4 class-hnd single-def <System.String>
+; V00 arg0 [V00,T19] ( 6, 9.72) ref -> r0 class-hnd single-def <System.String> +; V01 arg1 [V01,T20] ( 6, 9.72) ref -> r1 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 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V06 tmp4 [V06,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V07 tmp5 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V06 tmp4 [V06,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V07 tmp5 [V07,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V08 tmp6 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V09 tmp7 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp8 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp9 [V11,T03] ( 2, 4 ) int -> r2 "Inlining Arg" -; V12 tmp10 [V12,T02] ( 2, 4 ) byref -> r3 single-def "Inlining Arg"
+; V11 tmp9 [V11,T03] ( 2, 23.53) int -> r4 "Inlining Arg" +; V12 tmp10 [V12,T00] ( 2, 23.53) byref -> r12 single-def "Inlining Arg"
;* V13 tmp11 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp12 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V15 tmp13 [V15,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V15 tmp13 [V15,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V16 tmp14 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V17 tmp15 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V18 tmp16 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp17 [V19,T13] ( 2, 4 ) int -> r6 "Inlining Arg" -; V20 tmp18 [V20,T11] ( 2, 4 ) byref -> r5 single-def "Inlining Arg" -;* V21 tmp19 [V21 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> -;* V22 tmp20 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> -;* V23 tmp21 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> -; V24 tmp22 [V24,T14] ( 2, 4 ) int -> r4 "Inlining Arg" -; V25 tmp23 [V25,T12] ( 2, 4 ) byref -> r7 single-def "Inlining Arg" -;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP -;* V27 tmp25 [V27 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP -; V28 tmp26 [V28,T15] ( 2, 2 ) byref -> r5 "field V04._reference (fldOffset=0x0)" P-INDEP -; V29 tmp27 [V29,T19] ( 2, 2 ) int -> r6 "field V04._length (fldOffset=0x4)" P-INDEP -;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP -;* V31 tmp29 [V31 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x4)" P-INDEP -; V32 tmp30 [V32,T04] ( 2, 2 ) byref -> r3 "field V08._reference (fldOffset=0x0)" P-INDEP -; V33 tmp31 [V33,T06] ( 2, 2 ) int -> r2 "field V08._length (fldOffset=0x4)" P-INDEP -; V34 tmp32 [V34,T05] ( 2, 2 ) byref -> r3 single-def "field V09._reference (fldOffset=0x0)" P-INDEP -; V35 tmp33 [V35,T07] ( 2, 2 ) int -> r2 "field V09._length (fldOffset=0x4)" P-INDEP -;* V36 tmp34 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP -;* V37 tmp35 [V37 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP -;* V38 tmp36 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP -;* V39 tmp37 [V39 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x4)" P-INDEP -; V40 tmp38 [V40,T16] ( 2, 2 ) byref -> r5 single-def "field V17._reference (fldOffset=0x0)" P-INDEP -; V41 tmp39 [V41,T20] ( 2, 2 ) int -> r6 "field V17._length (fldOffset=0x4)" P-INDEP -;* V42 tmp40 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP -;* V43 tmp41 [V43 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP -; V44 tmp42 [V44,T17] ( 2, 2 ) byref -> r2 "field V21._reference (fldOffset=0x0)" P-INDEP -; V45 tmp43 [V45,T21] ( 2, 2 ) int -> r3 "field V21._length (fldOffset=0x4)" P-INDEP -; V46 tmp44 [V46,T18] ( 2, 2 ) byref -> r2 single-def "field V22._reference (fldOffset=0x0)" P-INDEP -; V47 tmp45 [V47,T22] ( 2, 2 ) int -> r3 "field V22._length (fldOffset=0x4)" P-INDEP -;* V48 tmp46 [V48 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP -;* V49 tmp47 [V49 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP
+; V19 tmp17 [V19,T04] ( 2, 23.53) int -> r2 "Inlining Arg" +; V20 tmp18 [V20,T01] ( 2, 23.53) byref -> r0 single-def "Inlining Arg" +;* V21 tmp19 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V22 tmp20 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V23 tmp21 [V23 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> +;* V24 tmp22 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> +;* V25 tmp23 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> +; V26 tmp24 [V26,T05] ( 2, 23.53) int -> r3 "Inlining Arg" +; V27 tmp25 [V27,T02] ( 2, 23.53) byref -> lr single-def "Inlining Arg" +;* V28 tmp26 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V29 tmp27 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP +;* V31 tmp29 [V31 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP +; V32 tmp30 [V32,T08] ( 2, 11.76) byref -> r0 "field V04._reference (fldOffset=0x0)" P-INDEP +; V33 tmp31 [V33,T13] ( 2, 11.76) int -> r1 "field V04._length (fldOffset=0x4)" P-INDEP +;* V34 tmp32 [V34 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP +;* V35 tmp33 [V35 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x4)" P-INDEP +; V36 tmp34 [V36,T22] ( 2, 6.88) byref -> r12 "field V08._reference (fldOffset=0x0)" P-INDEP +; V37 tmp35 [V37,T14] ( 2, 11.76) int -> r4 "field V08._length (fldOffset=0x4)" P-INDEP +; V38 tmp36 [V38,T09] ( 2, 11.76) byref -> r12 single-def "field V09._reference (fldOffset=0x0)" P-INDEP +; V39 tmp37 [V39,T15] ( 2, 11.76) int -> r4 "field V09._length (fldOffset=0x4)" P-INDEP +;* V40 tmp38 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP +;* V41 tmp39 [V41 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP +;* V42 tmp40 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP +;* V43 tmp41 [V43 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x4)" P-INDEP +; V44 tmp42 [V44,T10] ( 2, 11.76) byref -> r0 single-def "field V17._reference (fldOffset=0x0)" P-INDEP +; V45 tmp43 [V45,T16] ( 2, 11.76) int -> r1 "field V17._length (fldOffset=0x4)" P-INDEP +;* V46 tmp44 [V46 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP +;* V47 tmp45 [V47 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP +; V48 tmp46 [V48,T11] ( 2, 11.76) byref -> r2 "field V23._reference (fldOffset=0x0)" P-INDEP +; V49 tmp47 [V49,T17] ( 2, 11.76) int -> r3 "field V23._length (fldOffset=0x4)" P-INDEP +; V50 tmp48 [V50,T12] ( 2, 11.76) byref -> r2 single-def "field V24._reference (fldOffset=0x0)" P-INDEP +; V51 tmp49 [V51,T18] ( 2, 11.76) int -> r3 "field V24._length (fldOffset=0x4)" P-INDEP +;* V52 tmp50 [V52 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP +;* V53 tmp51 [V53 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x4)" P-INDEP +; V54 cse0 [V54,T07] ( 4, 13.43) int -> r3 "CSE - aggressive" +; V55 cse1 [V55,T21] ( 3, 7.55) int -> r2 "CSE - moderate" +; V56 cse2 [V56,T06] ( 3, 17.65) byref -> lr "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M49441_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr} - add r11, sp, 16 - mov r4, r1 - ; gcrRegs +[r4] - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M49441_IG02: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0]
+ push {r3,r4,r11,lr} + add r11, sp, 8 + ;; size=8 bbWeight=1 PerfScore 2.00 +G_M49441_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r0-r1]
cmp r0, 0
- beq SHORT G_M49441_IG09
+ beq SHORT G_M49441_IG10
;; size=4 bbWeight=1 PerfScore 2.00
-G_M49441_IG03: ; bbWeight=0.83, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz - ldr r3, [r0+0x04] - cmp r3, 0 - beq SHORT G_M49441_IG09 - ;; size=6 bbWeight=0.83 PerfScore 2.50 -G_M49441_IG04: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz - cmp r4, 0 - beq SHORT G_M49441_IG11 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M49441_IG05: ; bbWeight=0.83, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz - ldr r3, [r4+0x04] - cmp r3, 0 - beq SHORT G_M49441_IG11 - ;; size=6 bbWeight=0.83 PerfScore 2.50 -G_M49441_IG06: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz - add r3, r4, 8 - ; byrRegs +[r3] - ldr r2, [r4+0x04]
+G_M49441_IG03: ; bbWeight=0.83, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz + ldr r2, [r0+0x04]
cmp r2, 0
- ble SHORT G_M49441_IG07 - ldrh r3, [r3] - ; byrRegs -[r3] - cmp r3, 47 - beq SHORT G_M49441_IG09 - ;; size=16 bbWeight=1 PerfScore 7.00 -G_M49441_IG07: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref - add r5, r0, 8 - ; byrRegs +[r5] - ldr r6, [r0+0x04] - movs r0, 1
+ beq SHORT G_M49441_IG10 + ;; size=6 bbWeight=0.83 PerfScore 2.50 +G_M49441_IG04: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz + cmp r1, 0 + beq SHORT G_M49441_IG12 + ;; size=4 bbWeight=1 PerfScore 2.00 +G_M49441_IG05: ; bbWeight=0.83, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz + ldr r3, [r1+0x04] + cmp r3, 0 + beq SHORT G_M49441_IG12 + ;; size=6 bbWeight=0.83 PerfScore 2.50 +G_M49441_IG06: ; bbWeight=5.88, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz + add lr, r1, 8 + ; byrRegs +[lr] + mov r12, lr + ; byrRegs +[r12] + mov r4, r3 + cmp r4, 0 + bgt SHORT G_M49441_IG09 + ;; size=12 bbWeight=5.88 PerfScore 29.41 +G_M49441_IG07: ; bbWeight=5.88, gcrefRegs=0001 {r0}, byrefRegs=4000 {lr}, byref + ; gcrRegs -[r1] + ; byrRegs -[r12] + adds r0, 8
; gcrRegs -[r0]
- movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Diagnostics.Debug:Assert(ubyte) - add r7, r4, 8 - ; byrRegs +[r7] - ldr r4, [r4+0x04] - ; gcrRegs -[r4] - movs r0, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Diagnostics.Debug:Assert(ubyte) - mov r2, r7 - ; byrRegs +[r2] - mov r3, r4 - mov r0, r5
; byrRegs +[r0]
- mov r1, r6
+ mov r1, r2 + mov r2, lr + ; byrRegs +[r2]
movw lr, 0xd1ff
+ ; byrRegs -[lr]
movt lr, 0xd1ff ldr lr, [lr] blx lr // System.IO.Path:JoinInternal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.String ; gcrRegs +[r0]
- ; byrRegs -[r0 r2 r5 r7] - ;; size=62 bbWeight=1 PerfScore 22.00 -G_M49441_IG08: ; bbWeight=1, epilog, nogc, extend - pop {r4,r5,r6,r7,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M49441_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0] +[r4] - mov r0, r4
+ ; byrRegs -[r0 r2] + ;; size=20 bbWeight=5.88 PerfScore 41.18 +G_M49441_IG08: ; bbWeight=5.88, epilog, nogc, extend + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=5.88 PerfScore 5.88 +G_M49441_IG09: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=5000 {r12 lr}, gcvars, byref, isz + ; gcrRegs +[r1] + ; byrRegs +[r12 lr] + ldrh r12, [r12] + ; byrRegs -[r12] + cmp r12, 47 + bne SHORT G_M49441_IG07 + ;; size=10 bbWeight=1 PerfScore 3.00 +G_M49441_IG10: ; bbWeight=0, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0] + ; byrRegs -[lr] + mov r0, r1
; gcrRegs +[r0] ;; size=2 bbWeight=0 PerfScore 0.00
-G_M49441_IG10: ; bbWeight=0, epilog, nogc, extend - pop {r4,r5,r6,r7,r11,pc}
+G_M49441_IG11: ; bbWeight=0, epilog, nogc, extend + pop {r3,r4,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-G_M49441_IG11: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[r4] - pop {r4,r5,r6,r7,r11,pc}
+G_M49441_IG12: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r1] + pop {r3,r4,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 122, prolog size 8, PerfScore 42.00, instruction count 46, allocated bytes for code 122 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
...

-34 (-28.81%) : 1145.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)

@@ -6,139 +6,138 @@ ; r11 based frame ; partially interruptible ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 15
-; 3 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data
+; 3 inlinees with PGO data; 9 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 7, 6 ) ref -> r0 class-hnd single-def <System.String> -; V01 arg1 [V01,T00] ( 7, 6 ) ref -> r4 class-hnd single-def <System.String>
+; V00 arg0 [V00,T19] ( 6, 10.67) ref -> r0 class-hnd single-def <System.String> +; V01 arg1 [V01,T20] ( 6, 10.67) ref -> r1 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 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V06 tmp4 [V06,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V07 tmp5 [V07,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V06 tmp4 [V06,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V07 tmp5 [V07,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V08 tmp6 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V09 tmp7 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp8 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp9 [V11,T03] ( 2, 4 ) int -> r2 "Inlining Arg" -; V12 tmp10 [V12,T02] ( 2, 4 ) byref -> r3 single-def "Inlining Arg"
+; V11 tmp9 [V11,T03] ( 2, 26.67) int -> r4 "Inlining Arg" +; V12 tmp10 [V12,T00] ( 2, 26.67) byref -> r12 single-def "Inlining Arg"
;* V13 tmp11 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp12 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V15 tmp13 [V15,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V15 tmp13 [V15,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V16 tmp14 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V17 tmp15 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V18 tmp16 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp17 [V19,T14] ( 2, 4 ) int -> r7 "Inlining Arg" -; V20 tmp18 [V20,T12] ( 2, 4 ) byref -> r6 single-def "Inlining Arg" -;* V21 tmp19 [V21 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> -;* V22 tmp20 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> -;* V23 tmp21 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> -; V24 tmp22 [V24,T15] ( 2, 4 ) int -> r5 "Inlining Arg" -; V25 tmp23 [V25,T13] ( 2, 4 ) byref -> r4 single-def "Inlining Arg" -;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP -;* V27 tmp25 [V27 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP -; V28 tmp26 [V28,T16] ( 2, 2 ) byref -> r6 "field V04._reference (fldOffset=0x0)" P-INDEP -; V29 tmp27 [V29,T20] ( 2, 2 ) int -> r7 "field V04._length (fldOffset=0x4)" P-INDEP -;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP -;* V31 tmp29 [V31 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x4)" P-INDEP -; V32 tmp30 [V32,T05] ( 2, 2 ) byref -> r3 "field V08._reference (fldOffset=0x0)" P-INDEP -; V33 tmp31 [V33,T07] ( 2, 2 ) int -> r2 "field V08._length (fldOffset=0x4)" P-INDEP -; V34 tmp32 [V34,T06] ( 2, 2 ) byref -> r3 single-def "field V09._reference (fldOffset=0x0)" P-INDEP -; V35 tmp33 [V35,T08] ( 2, 2 ) int -> r2 "field V09._length (fldOffset=0x4)" P-INDEP -;* V36 tmp34 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP -;* V37 tmp35 [V37 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP -;* V38 tmp36 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP -;* V39 tmp37 [V39 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x4)" P-INDEP -; V40 tmp38 [V40,T17] ( 2, 2 ) byref -> r6 single-def "field V17._reference (fldOffset=0x0)" P-INDEP -; V41 tmp39 [V41,T21] ( 2, 2 ) int -> r7 "field V17._length (fldOffset=0x4)" P-INDEP -;* V42 tmp40 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP -;* V43 tmp41 [V43 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP -; V44 tmp42 [V44,T18] ( 2, 2 ) byref -> r2 "field V21._reference (fldOffset=0x0)" P-INDEP -; V45 tmp43 [V45,T22] ( 2, 2 ) int -> r3 "field V21._length (fldOffset=0x4)" P-INDEP -; V46 tmp44 [V46,T19] ( 2, 2 ) byref -> r2 single-def "field V22._reference (fldOffset=0x0)" P-INDEP -; V47 tmp45 [V47,T23] ( 2, 2 ) int -> r3 "field V22._length (fldOffset=0x4)" P-INDEP -;* V48 tmp46 [V48 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP -;* V49 tmp47 [V49 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP -; V50 cse0 [V50,T04] ( 4, 4 ) int -> r5 "CSE - aggressive"
+; V19 tmp17 [V19,T04] ( 2, 26.67) int -> r2 "Inlining Arg" +; V20 tmp18 [V20,T01] ( 2, 26.67) byref -> r0 single-def "Inlining Arg" +;* V21 tmp19 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V22 tmp20 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V23 tmp21 [V23 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> +;* V24 tmp22 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> +;* V25 tmp23 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> +; V26 tmp24 [V26,T05] ( 2, 26.67) int -> r3 "Inlining Arg" +; V27 tmp25 [V27,T02] ( 2, 26.67) byref -> lr single-def "Inlining Arg" +;* V28 tmp26 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V29 tmp27 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP +;* V31 tmp29 [V31 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP +; V32 tmp30 [V32,T08] ( 2, 13.33) byref -> r0 "field V04._reference (fldOffset=0x0)" P-INDEP +; V33 tmp31 [V33,T13] ( 2, 13.33) int -> r1 "field V04._length (fldOffset=0x4)" P-INDEP +;* V34 tmp32 [V34 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP +;* V35 tmp33 [V35 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x4)" P-INDEP +; V36 tmp34 [V36,T22] ( 2, 7.67) byref -> r12 "field V08._reference (fldOffset=0x0)" P-INDEP +; V37 tmp35 [V37,T14] ( 2, 13.33) int -> r4 "field V08._length (fldOffset=0x4)" P-INDEP +; V38 tmp36 [V38,T09] ( 2, 13.33) byref -> r12 single-def "field V09._reference (fldOffset=0x0)" P-INDEP +; V39 tmp37 [V39,T15] ( 2, 13.33) int -> r4 "field V09._length (fldOffset=0x4)" P-INDEP +;* V40 tmp38 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP +;* V41 tmp39 [V41 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP +;* V42 tmp40 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP +;* V43 tmp41 [V43 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x4)" P-INDEP +; V44 tmp42 [V44,T10] ( 2, 13.33) byref -> r0 single-def "field V17._reference (fldOffset=0x0)" P-INDEP +; V45 tmp43 [V45,T16] ( 2, 13.33) int -> r1 "field V17._length (fldOffset=0x4)" P-INDEP +;* V46 tmp44 [V46 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP +;* V47 tmp45 [V47 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP +; V48 tmp46 [V48,T11] ( 2, 13.33) byref -> r2 "field V23._reference (fldOffset=0x0)" P-INDEP +; V49 tmp47 [V49,T17] ( 2, 13.33) int -> r3 "field V23._length (fldOffset=0x4)" P-INDEP +; V50 tmp48 [V50,T12] ( 2, 13.33) byref -> r2 single-def "field V24._reference (fldOffset=0x0)" P-INDEP +; V51 tmp49 [V51,T18] ( 2, 13.33) int -> r3 "field V24._length (fldOffset=0x4)" P-INDEP +;* V52 tmp50 [V52 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP +;* V53 tmp51 [V53 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x4)" P-INDEP +; V54 cse0 [V54,T07] ( 4, 15.33) int -> r3 "CSE - aggressive" +; V55 cse1 [V55,T21] ( 3, 8.67) int -> r2 "CSE - moderate" +; V56 cse2 [V56,T06] ( 3, 20.00) byref -> lr "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M49441_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr} - add r11, sp, 16 - mov r4, r1 - ; gcrRegs +[r4] - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M49441_IG02: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0]
+ push {r3,r4,r11,lr} + add r11, sp, 8 + ;; size=8 bbWeight=1 PerfScore 2.00 +G_M49441_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r0-r1]
cmp r0, 0
- beq SHORT G_M49441_IG05 - ldr r3, [r0+0x04] - cmp r3, 0 - beq SHORT G_M49441_IG05 - cmp r4, 0
beq SHORT G_M49441_IG07
- ldr r5, [r4+0x04] - cmp r5, 0 - beq SHORT G_M49441_IG07 - add r3, r4, 8 - ; byrRegs +[r3] - mov r2, r5
+ ldr r2, [r0+0x04]
cmp r2, 0
- ble SHORT G_M49441_IG03 - ldrh r3, [r3] - ; byrRegs -[r3] - cmp r3, 47 - beq SHORT G_M49441_IG05 - ;; size=36 bbWeight=1 PerfScore 17.00 -G_M49441_IG03: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref - add r6, r0, 8 - ; byrRegs +[r6] - ldr r7, [r0+0x04] - movs r0, 1
+ beq SHORT G_M49441_IG07 + cmp r1, 0 + beq SHORT G_M49441_IG09 + ldr r3, [r1+0x04] + cmp r3, 0 + beq SHORT G_M49441_IG09 + ;; size=20 bbWeight=1 PerfScore 10.00 +G_M49441_IG03: ; bbWeight=6.67, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz + add lr, r1, 8 + ; byrRegs +[lr] + mov r12, lr + ; byrRegs +[r12] + mov r4, r3 + cmp r4, 0 + bgt SHORT G_M49441_IG06 + ;; size=12 bbWeight=6.67 PerfScore 33.33 +G_M49441_IG04: ; bbWeight=6.67, gcrefRegs=0001 {r0}, byrefRegs=4000 {lr}, byref + ; gcrRegs -[r1] + ; byrRegs -[r12] + adds r0, 8
; gcrRegs -[r0]
- movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Diagnostics.Debug:Assert(ubyte) - adds r4, 8 - ; gcrRegs -[r4] - ; byrRegs +[r4] - movs r0, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Diagnostics.Debug:Assert(ubyte) - mov r2, r4 - ; byrRegs +[r2] - mov r3, r5 - mov r0, r6
; byrRegs +[r0]
- mov r1, r7
+ mov r1, r2 + mov r2, lr + ; byrRegs +[r2]
movw lr, 0xd1ff
+ ; byrRegs -[lr]
movt lr, 0xd1ff ldr lr, [lr] blx lr // System.IO.Path:JoinInternal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.String ; gcrRegs +[r0]
- ; byrRegs -[r0 r2 r4 r6] - ;; size=58 bbWeight=1 PerfScore 21.00 -G_M49441_IG04: ; bbWeight=1, epilog, nogc, extend - pop {r4,r5,r6,r7,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M49441_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0] +[r4] - mov r0, r4
+ ; byrRegs -[r0 r2] + ;; size=20 bbWeight=6.67 PerfScore 46.67 +G_M49441_IG05: ; bbWeight=6.67, epilog, nogc, extend + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=6.67 PerfScore 6.67 +G_M49441_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=5000 {r12 lr}, gcvars, byref, isz + ; gcrRegs +[r1] + ; byrRegs +[r12 lr] + ldrh r12, [r12] + ; byrRegs -[r12] + cmp r12, 47 + bne SHORT G_M49441_IG04 + ;; size=10 bbWeight=1 PerfScore 3.00 +G_M49441_IG07: ; bbWeight=0, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0] + ; byrRegs -[lr] + mov r0, r1
; gcrRegs +[r0] ;; size=2 bbWeight=0 PerfScore 0.00
-G_M49441_IG06: ; bbWeight=0, epilog, nogc, extend - pop {r4,r5,r6,r7,r11,pc}
+G_M49441_IG08: ; bbWeight=0, epilog, nogc, extend + pop {r3,r4,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-G_M49441_IG07: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[r4] - pop {r4,r5,r6,r7,r11,pc}
+G_M49441_IG09: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r1] + pop {r3,r4,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 118, prolog size 8, PerfScore 42.00, instruction count 45, allocated bytes for code 118 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
+; Total bytes of code 84, prolog size 8, PerfScore 101.67, instruction count 31, allocated bytes for code 84 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
; ============================================================ Unwind Info: @@ -150,7 +149,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 59 (0x0003b) Actual length = 118 (0x000076)
+ Function Length : 42 (0x0002a) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -166,7 +165,7 @@ Unwind Info: ...

+46 (+21.70%) : 21916.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)

@@ -5,16 +5,16 @@ ; optimized using Dynamic PGO ; r11 based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1046 -; 0 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1046 +; 0 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 5, 9.76) int -> r0 single-def -; V01 arg1 [V01,T05] ( 7, 10.65) int -> r4 single-def -; V02 arg2 [V02,T08] ( 3, 3 ) int -> r2 single-def -; V03 loc0 [V03,T02] ( 16, 32.32) int -> r5 -; V04 loc1 [V04,T09] ( 4, 4 ) int -> r1 -; V05 loc2 [V05,T03] ( 16, 30.32) int -> r6
+; V00 arg0 [V00,T07] ( 5, 9.76) int -> r5 single-def +; V01 arg1 [V01,T06] ( 7, 10.65) int -> r4 single-def +; V02 arg2 [V02,T09] ( 3, 3 ) int -> r2 single-def +; V03 loc0 [V03,T02] ( 16, 32.32) int -> r6 +; V04 loc1 [V04,T10] ( 4, 4 ) int -> r7 +; V05 loc2 [V05,T03] ( 17, 30.49) int -> r9
;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref ;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -28,103 +28,121 @@ ;* V16 loc13 [V16 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] double-align <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V17 loc14 [V17 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] double-align <System.Runtime.Intrinsics.Vector128`1[ushort]> ;* V18 loc15 [V18 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] double-align <System.Runtime.Intrinsics.Vector128`1[ushort]>
-; V19 loc16 [V19,T07] ( 2, 7.15) int -> r3
+; V19 loc16 [V19,T08] ( 2, 7.15) int -> r8
;# V20 OutArgs [V20 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V21 tmp1 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp2 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V23 tmp3 [V23,T00] ( 6, 73.85) int -> lr "Inlining Arg" -; V24 tmp4 [V24,T01] ( 5, 61.54) byref -> r2 "Inlining Arg"
+; V23 tmp3 [V23,T00] ( 6, 73.85) int -> r0 "Inlining Arg" +; V24 tmp4 [V24,T01] ( 5, 61.54) byref -> r10 "Inlining Arg"
;* V25 tmp5 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V26 tmp6 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V27 tmp7 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V28 cse0 [V28,T04] ( 3, 18.46) int -> r2 "CSE - aggressive" -; V29 cse1 [V29,T10] ( 3, 3.00) int -> r2 "CSE - aggressive" -; V30 cse2 [V30,T11] ( 3, 2.68) int -> r3 "CSE - aggressive" -; V31 cse3 [V31,T12] ( 3, 2.13) int -> r1 "CSE - aggressive"
+; V26 cse0 [V26,T04] ( 3, 18.46) int -> r0 "CSE - aggressive" +; V27 cse1 [V27,T05] ( 3, 18.46) int -> r3 "CSE - aggressive" +; V28 cse2 [V28,T11] ( 3, 3.00) int -> r2 "CSE - aggressive" +; V29 cse3 [V29,T12] ( 3, 2.68) int -> r0 "CSE - aggressive" +; V30 cse4 [V30,T13] ( 3, 2.13) int -> r0 "CSE - aggressive"
; ; Lcl frame size = 4 G_M51273_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r11,lr} - add r11, sp, 16
+ push {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr} + add r11, sp, 32 + mov r5, r0
mov r4, r1
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M51273_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movs r5, 0 - mov r1, r2 - cmp r1, 4 - blo SHORT G_M51273_IG05
+ movs r6, 0 + mov r7, r2 + cmp r7, 4 + blo SHORT G_M51273_IG07
;; size=8 bbWeight=1 PerfScore 4.00 G_M51273_IG03: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- subs r3, r2, 4 - ;; size=2 bbWeight=1.00 PerfScore 1.00
+ sub r8, r2, 4 + ;; size=4 bbWeight=1.00 PerfScore 1.00
G_M51273_IG04: ; bbWeight=6.15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r2, r5 - ldr r6, [r0+r2] - ands lr, r6, -0x7f7f7f80 - cmp lr, 0 - bne SHORT G_M51273_IG11 - lsls r2, r2, 1 - adds r2, r4, r2 - uxtb lr, r6 - strh lr, [r2] - lsr lr, r6, 8 - uxtb r12, lr - strh r12, [r2+0x02] - lsr lr, lr, 8 - uxtb r12, lr - strh r12, [r2+0x04] - lsr lr, lr, 8 - strh lr, [r2+0x06] - adds r5, r5, 4 - cmp r5, r3 - bls SHORT G_M51273_IG04 - ;; size=64 bbWeight=6.15 PerfScore 123.08 -G_M51273_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ands r3, r1, 2
+ mov r0, r6 + ldr r9, [r5+r0] + ands r3, r9, -0x7f7f7f80
cmp r3, 0
- beq SHORT G_M51273_IG07 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M51273_IG06: ; bbWeight=0.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov r3, r5 - ldrh r6, [r0+r3] - ands r2, r6, -0x7f7f7f80 - cmp r2, 0 - bne SHORT G_M51273_IG11 - uxtb r2, r6 - lsls r3, r3, 1 - strh r2, [r4+r3] - lsrs r3, r6, 8 - adds r2, r5, 1 - lsls r2, r2, 1 - strh r3, [r4+r2] - adds r5, r5, 2 - ;; size=28 bbWeight=0.89 PerfScore 11.61
+ bne SHORT G_M51273_IG13 + lsls r0, r0, 1 + add r10, r4, r0 + cmp r3, 0 + beq SHORT G_M51273_IG05 + movs r0, 0 + b SHORT G_M51273_IG06 + ;; size=28 bbWeight=6.15 PerfScore 67.69 +G_M51273_IG05: ; bbWeight=6.15, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref + ; byrRegs +[r10] + movs r0, 1 + ;; size=2 bbWeight=6.15 PerfScore 6.15 +G_M51273_IG06: ; bbWeight=6.15, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // System.Diagnostics.Debug:Assert(ubyte) + ; gcr arg pop 0 + uxtb r0, r9 + strh r0, [r10] + lsr r0, r9, 8 + uxtb r1, r0 + strh r1, [r10+0x02] + lsrs r0, r0, 8 + uxtb r1, r0 + strh r1, [r10+0x04] + lsrs r0, r0, 8 + strh r0, [r10+0x06] + adds r6, r6, 4 + cmp r6, r8 + bls SHORT G_M51273_IG04 + ;; size=50 bbWeight=6.15 PerfScore 104.62
G_M51273_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ands r1, r1, 1 - cmp r1, 0
+ ; byrRegs -[r10] + ands r0, r7, 2 + cmp r0, 0
beq SHORT G_M51273_IG09 ;; size=8 bbWeight=1 PerfScore 3.00
-G_M51273_IG08: ; bbWeight=0.71, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov r1, r5 - ldrb r6, [r0+r1] - ands r0, r6, 128 - cmp r0, 0 - bne SHORT G_M51273_IG09 - lsls r0, r1, 1 - strh r6, [r4+r0] - adds r5, r5, 1 - ;; size=18 bbWeight=0.71 PerfScore 5.68 -G_M51273_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov r0, r5 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M51273_IG10: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r5,r6,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M51273_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ands r0, r6, -0x7f7f7f80 - cmp r0, 0
+G_M51273_IG08: ; bbWeight=0.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov r0, r6 + ldrh r9, [r5+r0] + ands r1, r9, -0x7f7f7f80 + cmp r1, 0
bne SHORT G_M51273_IG13
+ uxtb r1, r9 + lsls r0, r0, 1 + strh r1, [r4+r0] + lsr r0, r9, 8 + adds r1, r6, 1 + lsls r1, r1, 1 + strh r0, [r4+r1] + adds r6, r6, 2 + ;; size=34 bbWeight=0.89 PerfScore 11.61 +G_M51273_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ands r0, r7, 1 + cmp r0, 0 + beq SHORT G_M51273_IG11 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M51273_IG10: ; bbWeight=0.71, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov r0, r6 + ldrb r9, [r5+r0] + ands r1, r9, 128 + cmp r1, 0 + bne SHORT G_M51273_IG11 + lsls r0, r0, 1 + strh r9, [r4+r0] + adds r6, r6, 1 + ;; size=22 bbWeight=0.71 PerfScore 5.68 +G_M51273_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov r0, r6 + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M51273_IG12: ; bbWeight=1, epilog, nogc, extend + pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M51273_IG13: ; bbWeight=0.10, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ands r0, r9, -0x7f7f7f80 + cmp r0, 0 + bne SHORT G_M51273_IG16 + ;; size=8 bbWeight=0.10 PerfScore 0.29 +G_M51273_IG14: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff @@ -134,24 +152,27 @@ G_M51273_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref ldr r3, [r3] blx r3 // <unknown method> ; gcr arg pop 0
- b SHORT G_M51273_IG13 - ;; size=38 bbWeight=0 PerfScore 0.00 -G_M51273_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - uxtb r3, r6 - lsls r2, r5, 1 - strh r3, [r4+r2] - adds r5, r5, 1 - lsrs r6, r6, 8 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M51273_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - uxtb r3, r6
+ uxtb r3, r9
ands r3, r3, 128 cmp r3, 0
- beq SHORT G_M51273_IG12 - b SHORT G_M51273_IG09 - ;; size=12 bbWeight=0 PerfScore 0.00
+ bne SHORT G_M51273_IG11 + ;; size=40 bbWeight=0.08 PerfScore 0.92 +G_M51273_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
...

+46 (+21.70%) : 30752.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)

@@ -5,16 +5,16 @@ ; optimized using Dynamic PGO ; r11 based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1051 -; 0 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1051 +; 0 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 5, 9.60) int -> r0 single-def -; V01 arg1 [V01,T05] ( 7, 10.50) int -> r4 single-def -; V02 arg2 [V02,T08] ( 3, 3 ) int -> r2 single-def -; V03 loc0 [V03,T02] ( 16, 31.69) int -> r5 -; V04 loc1 [V04,T09] ( 4, 4 ) int -> r1 -; V05 loc2 [V05,T03] ( 16, 29.69) int -> r6
+; V00 arg0 [V00,T07] ( 5, 9.60) int -> r5 single-def +; V01 arg1 [V01,T06] ( 7, 10.50) int -> r4 single-def +; V02 arg2 [V02,T09] ( 3, 3 ) int -> r2 single-def +; V03 loc0 [V03,T02] ( 16, 31.69) int -> r6 +; V04 loc1 [V04,T10] ( 4, 4 ) int -> r7 +; V05 loc2 [V05,T03] ( 17, 29.86) int -> r9
;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref ;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -28,103 +28,121 @@ ;* V16 loc13 [V16 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] double-align <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V17 loc14 [V17 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] double-align <System.Runtime.Intrinsics.Vector128`1[ushort]> ;* V18 loc15 [V18 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] double-align <System.Runtime.Intrinsics.Vector128`1[ushort]>
-; V19 loc16 [V19,T07] ( 2, 6.99) int -> r3
+; V19 loc16 [V19,T08] ( 2, 6.99) int -> r8
;# V20 OutArgs [V20 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V21 tmp1 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp2 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V23 tmp3 [V23,T00] ( 6, 71.91) int -> lr "Inlining Arg" -; V24 tmp4 [V24,T01] ( 5, 59.92) byref -> r2 "Inlining Arg"
+; V23 tmp3 [V23,T00] ( 6, 71.91) int -> r0 "Inlining Arg" +; V24 tmp4 [V24,T01] ( 5, 59.92) byref -> r10 "Inlining Arg"
;* V25 tmp5 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V26 tmp6 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V27 tmp7 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V28 cse0 [V28,T04] ( 3, 17.98) int -> r2 "CSE - aggressive" -; V29 cse1 [V29,T10] ( 3, 3.00) int -> r2 "CSE - aggressive" -; V30 cse2 [V30,T11] ( 3, 2.70) int -> r3 "CSE - aggressive" -; V31 cse3 [V31,T12] ( 3, 2.12) int -> r1 "CSE - aggressive"
+; V26 cse0 [V26,T04] ( 3, 17.98) int -> r0 "CSE - aggressive" +; V27 cse1 [V27,T05] ( 3, 17.98) int -> r3 "CSE - aggressive" +; V28 cse2 [V28,T11] ( 3, 3.00) int -> r2 "CSE - aggressive" +; V29 cse3 [V29,T12] ( 3, 2.70) int -> r0 "CSE - aggressive" +; V30 cse4 [V30,T13] ( 3, 2.12) int -> r0 "CSE - aggressive"
; ; Lcl frame size = 4 G_M51273_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r11,lr} - add r11, sp, 16
+ push {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr} + add r11, sp, 32 + mov r5, r0
mov r4, r1
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M51273_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movs r5, 0 - mov r1, r2 - cmp r1, 4 - blo SHORT G_M51273_IG05
+ movs r6, 0 + mov r7, r2 + cmp r7, 4 + blo SHORT G_M51273_IG07
;; size=8 bbWeight=1 PerfScore 4.00 G_M51273_IG03: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- subs r3, r2, 4 - ;; size=2 bbWeight=1.00 PerfScore 1.00
+ sub r8, r2, 4 + ;; size=4 bbWeight=1.00 PerfScore 1.00
G_M51273_IG04: ; bbWeight=5.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r2, r5 - ldr r6, [r0+r2] - ands lr, r6, -0x7f7f7f80 - cmp lr, 0 - bne SHORT G_M51273_IG11 - lsls r2, r2, 1 - adds r2, r4, r2 - uxtb lr, r6 - strh lr, [r2] - lsr lr, r6, 8 - uxtb r12, lr - strh r12, [r2+0x02] - lsr lr, lr, 8 - uxtb r12, lr - strh r12, [r2+0x04] - lsr lr, lr, 8 - strh lr, [r2+0x06] - adds r5, r5, 4 - cmp r5, r3 - bls SHORT G_M51273_IG04 - ;; size=64 bbWeight=5.99 PerfScore 119.85 -G_M51273_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ands r3, r1, 2
+ mov r0, r6 + ldr r9, [r5+r0] + ands r3, r9, -0x7f7f7f80
cmp r3, 0
- beq SHORT G_M51273_IG07 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M51273_IG06: ; bbWeight=0.90, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov r3, r5 - ldrh r6, [r0+r3] - ands r2, r6, -0x7f7f7f80 - cmp r2, 0 - bne SHORT G_M51273_IG11 - uxtb r2, r6 - lsls r3, r3, 1 - strh r2, [r4+r3] - lsrs r3, r6, 8 - adds r2, r5, 1 - lsls r2, r2, 1 - strh r3, [r4+r2] - adds r5, r5, 2 - ;; size=28 bbWeight=0.90 PerfScore 11.70
+ bne SHORT G_M51273_IG13 + lsls r0, r0, 1 + add r10, r4, r0 + cmp r3, 0 + beq SHORT G_M51273_IG05 + movs r0, 0 + b SHORT G_M51273_IG06 + ;; size=28 bbWeight=5.99 PerfScore 65.92 +G_M51273_IG05: ; bbWeight=5.99, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref + ; byrRegs +[r10] + movs r0, 1 + ;; size=2 bbWeight=5.99 PerfScore 5.99 +G_M51273_IG06: ; bbWeight=5.99, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // System.Diagnostics.Debug:Assert(ubyte) + ; gcr arg pop 0 + uxtb r0, r9 + strh r0, [r10] + lsr r0, r9, 8 + uxtb r1, r0 + strh r1, [r10+0x02] + lsrs r0, r0, 8 + uxtb r1, r0 + strh r1, [r10+0x04] + lsrs r0, r0, 8 + strh r0, [r10+0x06] + adds r6, r6, 4 + cmp r6, r8 + bls SHORT G_M51273_IG04 + ;; size=50 bbWeight=5.99 PerfScore 101.87
G_M51273_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ands r1, r1, 1 - cmp r1, 0
+ ; byrRegs -[r10] + ands r0, r7, 2 + cmp r0, 0
beq SHORT G_M51273_IG09 ;; size=8 bbWeight=1 PerfScore 3.00
-G_M51273_IG08: ; bbWeight=0.71, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov r1, r5 - ldrb r6, [r0+r1] - ands r0, r6, 128 - cmp r0, 0 - bne SHORT G_M51273_IG09 - lsls r0, r1, 1 - strh r6, [r4+r0] - adds r5, r5, 1 - ;; size=18 bbWeight=0.71 PerfScore 5.65 -G_M51273_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov r0, r5 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M51273_IG10: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r5,r6,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M51273_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ands r0, r6, -0x7f7f7f80 - cmp r0, 0
+G_M51273_IG08: ; bbWeight=0.90, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov r0, r6 + ldrh r9, [r5+r0] + ands r1, r9, -0x7f7f7f80 + cmp r1, 0
bne SHORT G_M51273_IG13
+ uxtb r1, r9 + lsls r0, r0, 1 + strh r1, [r4+r0] + lsr r0, r9, 8 + adds r1, r6, 1 + lsls r1, r1, 1 + strh r0, [r4+r1] + adds r6, r6, 2 + ;; size=34 bbWeight=0.90 PerfScore 11.70 +G_M51273_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ands r0, r7, 1 + cmp r0, 0 + beq SHORT G_M51273_IG11 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M51273_IG10: ; bbWeight=0.71, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov r0, r6 + ldrb r9, [r5+r0] + ands r1, r9, 128 + cmp r1, 0 + bne SHORT G_M51273_IG11 + lsls r0, r0, 1 + strh r9, [r4+r0] + adds r6, r6, 1 + ;; size=22 bbWeight=0.71 PerfScore 5.65 +G_M51273_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov r0, r6 + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M51273_IG12: ; bbWeight=1, epilog, nogc, extend + pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M51273_IG13: ; bbWeight=0.10, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ands r0, r9, -0x7f7f7f80 + cmp r0, 0 + bne SHORT G_M51273_IG16 + ;; size=8 bbWeight=0.10 PerfScore 0.29 +G_M51273_IG14: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff @@ -134,24 +152,27 @@ G_M51273_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref ldr r3, [r3] blx r3 // <unknown method> ; gcr arg pop 0
- b SHORT G_M51273_IG13 - ;; size=38 bbWeight=0 PerfScore 0.00 -G_M51273_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - uxtb r3, r6 - lsls r2, r5, 1 - strh r3, [r4+r2] - adds r5, r5, 1 - lsrs r6, r6, 8 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M51273_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - uxtb r3, r6
+ uxtb r3, r9
ands r3, r3, 128 cmp r3, 0
- beq SHORT G_M51273_IG12 - b SHORT G_M51273_IG09 - ;; size=12 bbWeight=0 PerfScore 0.00
+ bne SHORT G_M51273_IG11 + ;; size=40 bbWeight=0.08 PerfScore 0.91 +G_M51273_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
...

+46 (+21.70%) : 32016.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)

@@ -5,16 +5,16 @@ ; optimized using Dynamic PGO ; r11 based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1046 -; 0 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1046 +; 0 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 5, 11.33) int -> r0 single-def -; V01 arg1 [V01,T05] ( 7, 12.22) int -> r4 single-def -; V02 arg2 [V02,T08] ( 3, 3 ) int -> r2 single-def -; V03 loc0 [V03,T02] ( 16, 38.62) int -> r5 -; V04 loc1 [V04,T09] ( 4, 4 ) int -> r1 -; V05 loc2 [V05,T03] ( 16, 36.62) int -> r6
+; V00 arg0 [V00,T07] ( 5, 11.33) int -> r5 single-def +; V01 arg1 [V01,T06] ( 7, 12.22) int -> r4 single-def +; V02 arg2 [V02,T09] ( 3, 3 ) int -> r2 single-def +; V03 loc0 [V03,T02] ( 16, 38.62) int -> r6 +; V04 loc1 [V04,T10] ( 4, 4 ) int -> r7 +; V05 loc2 [V05,T03] ( 17, 36.79) int -> r9
;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref ;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -28,103 +28,121 @@ ;* V16 loc13 [V16 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] double-align <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V17 loc14 [V17 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] double-align <System.Runtime.Intrinsics.Vector128`1[ushort]> ;* V18 loc15 [V18 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] double-align <System.Runtime.Intrinsics.Vector128`1[ushort]>
-; V19 loc16 [V19,T07] ( 2, 8.73) int -> r3
+; V19 loc16 [V19,T08] ( 2, 8.73) int -> r8
;# V20 OutArgs [V20 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V21 tmp1 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp2 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V23 tmp3 [V23,T00] ( 6, 92.78) int -> lr "Inlining Arg" -; V24 tmp4 [V24,T01] ( 5, 77.31) byref -> r2 "Inlining Arg"
+; V23 tmp3 [V23,T00] ( 6, 92.78) int -> r0 "Inlining Arg" +; V24 tmp4 [V24,T01] ( 5, 77.31) byref -> r10 "Inlining Arg"
;* V25 tmp5 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V26 tmp6 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V27 tmp7 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V28 cse0 [V28,T04] ( 3, 23.19) int -> r2 "CSE - aggressive" -; V29 cse1 [V29,T10] ( 3, 3.00) int -> r2 "CSE - aggressive" -; V30 cse2 [V30,T11] ( 3, 2.68) int -> r3 "CSE - aggressive" -; V31 cse3 [V31,T12] ( 3, 2.12) int -> r1 "CSE - aggressive"
+; V26 cse0 [V26,T04] ( 3, 23.19) int -> r0 "CSE - aggressive" +; V27 cse1 [V27,T05] ( 3, 23.19) int -> r3 "CSE - aggressive" +; V28 cse2 [V28,T11] ( 3, 3.00) int -> r2 "CSE - aggressive" +; V29 cse3 [V29,T12] ( 3, 2.68) int -> r0 "CSE - aggressive" +; V30 cse4 [V30,T13] ( 3, 2.12) int -> r0 "CSE - aggressive"
; ; Lcl frame size = 4 G_M51273_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r11,lr} - add r11, sp, 16
+ push {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr} + add r11, sp, 32 + mov r5, r0
mov r4, r1
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M51273_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movs r5, 0 - mov r1, r2 - cmp r1, 4 - blo SHORT G_M51273_IG05
+ movs r6, 0 + mov r7, r2 + cmp r7, 4 + blo SHORT G_M51273_IG07
;; size=8 bbWeight=1 PerfScore 4.00 G_M51273_IG03: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- subs r3, r2, 4 - ;; size=2 bbWeight=1.00 PerfScore 1.00
+ sub r8, r2, 4 + ;; size=4 bbWeight=1.00 PerfScore 1.00
G_M51273_IG04: ; bbWeight=7.73, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r2, r5 - ldr r6, [r0+r2] - ands lr, r6, -0x7f7f7f80 - cmp lr, 0 - bne SHORT G_M51273_IG11 - lsls r2, r2, 1 - adds r2, r4, r2 - uxtb lr, r6 - strh lr, [r2] - lsr lr, r6, 8 - uxtb r12, lr - strh r12, [r2+0x02] - lsr lr, lr, 8 - uxtb r12, lr - strh r12, [r2+0x04] - lsr lr, lr, 8 - strh lr, [r2+0x06] - adds r5, r5, 4 - cmp r5, r3 - bls SHORT G_M51273_IG04 - ;; size=64 bbWeight=7.73 PerfScore 154.63 -G_M51273_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ands r3, r1, 2
+ mov r0, r6 + ldr r9, [r5+r0] + ands r3, r9, -0x7f7f7f80
cmp r3, 0
- beq SHORT G_M51273_IG07 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M51273_IG06: ; bbWeight=0.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov r3, r5 - ldrh r6, [r0+r3] - ands r2, r6, -0x7f7f7f80 - cmp r2, 0 - bne SHORT G_M51273_IG11 - uxtb r2, r6 - lsls r3, r3, 1 - strh r2, [r4+r3] - lsrs r3, r6, 8 - adds r2, r5, 1 - lsls r2, r2, 1 - strh r3, [r4+r2] - adds r5, r5, 2 - ;; size=28 bbWeight=0.89 PerfScore 11.61
+ bne SHORT G_M51273_IG13 + lsls r0, r0, 1 + add r10, r4, r0 + cmp r3, 0 + beq SHORT G_M51273_IG05 + movs r0, 0 + b SHORT G_M51273_IG06 + ;; size=28 bbWeight=7.73 PerfScore 85.04 +G_M51273_IG05: ; bbWeight=7.73, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref + ; byrRegs +[r10] + movs r0, 1 + ;; size=2 bbWeight=7.73 PerfScore 7.73 +G_M51273_IG06: ; bbWeight=7.73, gcrefRegs=0000 {}, byrefRegs=0400 {r10}, byref, isz + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // System.Diagnostics.Debug:Assert(ubyte) + ; gcr arg pop 0 + uxtb r0, r9 + strh r0, [r10] + lsr r0, r9, 8 + uxtb r1, r0 + strh r1, [r10+0x02] + lsrs r0, r0, 8 + uxtb r1, r0 + strh r1, [r10+0x04] + lsrs r0, r0, 8 + strh r0, [r10+0x06] + adds r6, r6, 4 + cmp r6, r8 + bls SHORT G_M51273_IG04 + ;; size=50 bbWeight=7.73 PerfScore 131.43
G_M51273_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ands r1, r1, 1 - cmp r1, 0
+ ; byrRegs -[r10] + ands r0, r7, 2 + cmp r0, 0
beq SHORT G_M51273_IG09 ;; size=8 bbWeight=1 PerfScore 3.00
-G_M51273_IG08: ; bbWeight=0.71, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov r1, r5 - ldrb r6, [r0+r1] - ands r0, r6, 128 - cmp r0, 0 - bne SHORT G_M51273_IG09 - lsls r0, r1, 1 - strh r6, [r4+r0] - adds r5, r5, 1 - ;; size=18 bbWeight=0.71 PerfScore 5.66 -G_M51273_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov r0, r5 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M51273_IG10: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r5,r6,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M51273_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ands r0, r6, -0x7f7f7f80 - cmp r0, 0
+G_M51273_IG08: ; bbWeight=0.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov r0, r6 + ldrh r9, [r5+r0] + ands r1, r9, -0x7f7f7f80 + cmp r1, 0
bne SHORT G_M51273_IG13
+ uxtb r1, r9 + lsls r0, r0, 1 + strh r1, [r4+r0] + lsr r0, r9, 8 + adds r1, r6, 1 + lsls r1, r1, 1 + strh r0, [r4+r1] + adds r6, r6, 2 + ;; size=34 bbWeight=0.89 PerfScore 11.61 +G_M51273_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ands r0, r7, 1 + cmp r0, 0 + beq SHORT G_M51273_IG11 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M51273_IG10: ; bbWeight=0.71, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov r0, r6 + ldrb r9, [r5+r0] + ands r1, r9, 128 + cmp r1, 0 + bne SHORT G_M51273_IG11 + lsls r0, r0, 1 + strh r9, [r4+r0] + adds r6, r6, 1 + ;; size=22 bbWeight=0.71 PerfScore 5.66 +G_M51273_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov r0, r6 + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M51273_IG12: ; bbWeight=1, epilog, nogc, extend + pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M51273_IG13: ; bbWeight=0.10, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ands r0, r9, -0x7f7f7f80 + cmp r0, 0 + bne SHORT G_M51273_IG16 + ;; size=8 bbWeight=0.10 PerfScore 0.29 +G_M51273_IG14: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff @@ -134,24 +152,27 @@ G_M51273_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref ldr r3, [r3] blx r3 // <unknown method> ; gcr arg pop 0
- b SHORT G_M51273_IG13 - ;; size=38 bbWeight=0 PerfScore 0.00 -G_M51273_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - uxtb r3, r6 - lsls r2, r5, 1 - strh r3, [r4+r2] - adds r5, r5, 1 - lsrs r6, r6, 8 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M51273_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - uxtb r3, r6
+ uxtb r3, r9
ands r3, r3, 128 cmp r3, 0
- beq SHORT G_M51273_IG12 - b SHORT G_M51273_IG09 - ;; size=12 bbWeight=0 PerfScore 0.00
+ bne SHORT G_M51273_IG11 + ;; size=40 bbWeight=0.08 PerfScore 0.92 +G_M51273_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
...

librariestestsnotieredcompilation.run.linux.arm.Release.mch

-48 (-82.76%) : 183186.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareHandles():this (FullOpts)

@@ -2,10 +2,12 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 14 inlinees with PGO data; 94 single block inlinees; 12 inlinees without PGO data
+; 14 inlinees with PGO data; 98 single block inlinees; 14 inlinees without PGO data
; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Reflection.Metadata.Tests.HandleComparerTests> @@ -54,350 +56,339 @@ ;* V43 tmp42 [V43 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Reflection.Metadata.Handle> ;* V44 tmp43 [V44 ] ( 0, 0 ) long -> zero-ref ld-addr-op single-def "Inline stloc first use temp" ;* V45 tmp44 [V45 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.Handle>
-;* V46 tmp45 [V46,T01] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
+;* V46 tmp45 [V46,T00] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
;* V47 tmp46 [V47 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V48 tmp47 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V49 tmp48 [V49 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V50 tmp49 [V50 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V51 tmp50 [V51 ] ( 0, 0 ) long -> zero-ref ld-addr-op single-def "Inline stloc first use temp" ;* V52 tmp51 [V52 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.Handle>
-;* V53 tmp52 [V53,T02] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
+;* V53 tmp52 [V53,T01] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
;* V54 tmp53 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V55 tmp54 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V56 tmp55 [V56 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V57 tmp56 [V57 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V58 tmp57 [V58 ] ( 0, 0 ) long -> zero-ref ld-addr-op single-def "Inline stloc first use temp" ;* V59 tmp58 [V59 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.Handle>
-;* V60 tmp59 [V60,T03] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
+;* V60 tmp59 [V60,T02] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
;* V61 tmp60 [V61 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V62 tmp61 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V63 tmp62 [V63 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V64 tmp63 [V64 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V65 tmp64 [V65 ] ( 0, 0 ) long -> zero-ref ld-addr-op single-def "Inline stloc first use temp" ;* V66 tmp65 [V66 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.Handle>
-;* V67 tmp66 [V67,T04] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
+;* V67 tmp66 [V67,T03] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
;* V68 tmp67 [V68 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V69 tmp68 [V69 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V70 tmp69 [V70 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V71 tmp70 [V71 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V72 tmp71 [V72 ] ( 0, 0 ) long -> zero-ref ld-addr-op single-def "Inline stloc first use temp" ;* V73 tmp72 [V73 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.Handle>
-;* V74 tmp73 [V74,T05] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
+;* V74 tmp73 [V74,T04] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
;* V75 tmp74 [V75 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V76 tmp75 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V77 tmp76 [V77 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V78 tmp77 [V78 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V79 tmp78 [V79 ] ( 0, 0 ) long -> zero-ref ld-addr-op single-def "Inline stloc first use temp" ;* V80 tmp79 [V80 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.Handle>
-;* V81 tmp80 [V81,T06] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
+;* V81 tmp80 [V81,T05] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
;* V82 tmp81 [V82 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V83 tmp82 [V83 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V84 tmp83 [V84 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V85 tmp84 [V85 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V86 tmp85 [V86 ] ( 0, 0 ) long -> zero-ref ld-addr-op single-def "Inline stloc first use temp" ;* V87 tmp86 [V87 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.Handle>
-;* V88 tmp87 [V88,T07] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
+;* V88 tmp87 [V88,T06] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
;* V89 tmp88 [V89 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V90 tmp89 [V90 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V91 tmp90 [V91 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V92 tmp91 [V92 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V93 tmp92 [V93 ] ( 0, 0 ) long -> zero-ref ld-addr-op single-def "Inline stloc first use temp" ;* V94 tmp93 [V94 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.Handle>
-;* V95 tmp94 [V95,T08] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
+;* V95 tmp94 [V95,T07] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
;* V96 tmp95 [V96 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V97 tmp96 [V97 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V98 tmp97 [V98 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V99 tmp98 [V99 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V100 tmp99 [V100 ] ( 0, 0 ) long -> zero-ref ld-addr-op single-def "Inline stloc first use temp" ;* V101 tmp100 [V101 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.Handle>
-;* V102 tmp101 [V102,T09] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
+;* V102 tmp101 [V102,T08] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
;* V103 tmp102 [V103 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V104 tmp103 [V104 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V105 tmp104 [V105 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V106 tmp105 [V106 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V107 tmp106 [V107 ] ( 0, 0 ) long -> zero-ref ld-addr-op single-def "Inline stloc first use temp" ;* V108 tmp107 [V108 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.Handle>
-;* V109 tmp108 [V109,T10] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
+;* V109 tmp108 [V109,T09] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
;* V110 tmp109 [V110 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V111 tmp110 [V111 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V112 tmp111 [V112 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V113 tmp112 [V113 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V114 tmp113 [V114 ] ( 0, 0 ) long -> zero-ref ld-addr-op single-def "Inline stloc first use temp" ;* V115 tmp114 [V115 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.Handle>
-;* V116 tmp115 [V116,T11] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
+;* V116 tmp115 [V116,T10] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
;* V117 tmp116 [V117 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V118 tmp117 [V118 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V119 tmp118 [V119 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V120 tmp119 [V120 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V121 tmp120 [V121 ] ( 0, 0 ) long -> zero-ref ld-addr-op single-def "Inline stloc first use temp" ;* V122 tmp121 [V122 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.Handle>
-;* V123 tmp122 [V123,T12] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V123 tmp122 [V123,T11] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V124 tmp123 [V124 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V125 tmp124 [V125 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V126 tmp125 [V126 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V127 tmp126 [V127 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V128 tmp127 [V128 ] ( 0, 0 ) long -> zero-ref ld-addr-op single-def "Inline stloc first use temp" ;* V129 tmp128 [V129 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.Handle>
-;* V130 tmp129 [V130,T13] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V130 tmp129 [V130,T12] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V131 tmp130 [V131 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V132 tmp131 [V132 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V133 tmp132 [V133 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-;* V134 tmp133 [V134 ] ( 0, 0 ) long -> zero-ref ld-addr-op single-def "Inline stloc first use temp" -;* V135 tmp134 [V135 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.Handle> -;* V136 tmp135 [V136,T14] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" -;* V137 tmp136 [V137 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V138 tmp137 [V138 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V139 tmp138 [V139 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> -;* V140 tmp139 [V140 ] ( 0, 0 ) int -> zero-ref single-def "field V02._value (fldOffset=0x0)" P-INDEP -;* V141 tmp140 [V141 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V02._vType (fldOffset=0x4)" P-INDEP -;* V142 tmp141 [V142 ] ( 0, 0 ) int -> zero-ref single-def "field V03._value (fldOffset=0x0)" P-INDEP -;* V143 tmp142 [V143 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._vType (fldOffset=0x4)" P-INDEP -;* V144 tmp143 [V144 ] ( 0, 0 ) int -> zero-ref single-def "field V04._value (fldOffset=0x0)" P-INDEP -;* V145 tmp144 [V145 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V04._vType (fldOffset=0x4)" P-INDEP -;* V146 tmp145 [V146 ] ( 0, 0 ) int -> zero-ref single-def "field V05._value (fldOffset=0x0)" P-INDEP -;* V147 tmp146 [V147 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V05._vType (fldOffset=0x4)" P-INDEP -;* V148 tmp147 [V148 ] ( 0, 0 ) int -> zero-ref single-def "field V06._value (fldOffset=0x0)" P-INDEP -;* V149 tmp148 [V149 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V06._vType (fldOffset=0x4)" P-INDEP -;* V150 tmp149 [V150 ] ( 0, 0 ) int -> zero-ref single-def "field V07._value (fldOffset=0x0)" P-INDEP -;* V151 tmp150 [V151 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V07._vType (fldOffset=0x4)" P-INDEP -;* V152 tmp151 [V152 ] ( 0, 0 ) int -> zero-ref single-def "field V08._value (fldOffset=0x0)" P-INDEP -;* V153 tmp152 [V153 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V08._vType (fldOffset=0x4)" P-INDEP -;* V154 tmp153 [V154 ] ( 0, 0 ) int -> zero-ref single-def "field V09._value (fldOffset=0x0)" P-INDEP -;* V155 tmp154 [V155 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V09._vType (fldOffset=0x4)" P-INDEP -;* V156 tmp155 [V156 ] ( 0, 0 ) int -> zero-ref single-def "field V10._value (fldOffset=0x0)" P-INDEP -;* V157 tmp156 [V157 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V10._vType (fldOffset=0x4)" P-INDEP -;* V158 tmp157 [V158 ] ( 0, 0 ) int -> zero-ref single-def "field V11._value (fldOffset=0x0)" P-INDEP -;* V159 tmp158 [V159 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V11._vType (fldOffset=0x4)" P-INDEP -;* V160 tmp159 [V160 ] ( 0, 0 ) int -> zero-ref single-def "field V12._value (fldOffset=0x0)" P-INDEP -;* V161 tmp160 [V161 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V12._vType (fldOffset=0x4)" P-INDEP -;* V162 tmp161 [V162 ] ( 0, 0 ) int -> zero-ref single-def "field V13._value (fldOffset=0x0)" P-INDEP -;* V163 tmp162 [V163 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V13._vType (fldOffset=0x4)" P-INDEP -;* V164 tmp163 [V164 ] ( 0, 0 ) int -> zero-ref single-def "field V14._value (fldOffset=0x0)" P-INDEP -;* V165 tmp164 [V165 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V14._vType (fldOffset=0x4)" P-INDEP -;* V166 tmp165 [V166 ] ( 0, 0 ) int -> zero-ref single-def "field V15._value (fldOffset=0x0)" P-INDEP -;* V167 tmp166 [V167 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V15._vType (fldOffset=0x4)" P-INDEP -;* V168 tmp167 [V168 ] ( 0, 0 ) int -> zero-ref single-def "field V16._value (fldOffset=0x0)" P-INDEP -;* V169 tmp168 [V169 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V16._vType (fldOffset=0x4)" P-INDEP -;* V170 tmp169 [V170 ] ( 0, 0 ) int -> zero-ref single-def "field V17._value (fldOffset=0x0)" P-INDEP -;* V171 tmp170 [V171 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V17._vType (fldOffset=0x4)" P-INDEP -;* V172 tmp171 [V172 ] ( 0, 0 ) int -> zero-ref single-def "field V18._value (fldOffset=0x0)" P-INDEP -;* V173 tmp172 [V173 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V18._vType (fldOffset=0x4)" P-INDEP -;* V174 tmp173 [V174 ] ( 0, 0 ) int -> zero-ref single-def "field V19._value (fldOffset=0x0)" P-INDEP -;* V175 tmp174 [V175 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V19._vType (fldOffset=0x4)" P-INDEP -;* V176 tmp175 [V176 ] ( 0, 0 ) int -> zero-ref single-def "field V20._value (fldOffset=0x0)" P-INDEP -;* V177 tmp176 [V177 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V20._vType (fldOffset=0x4)" P-INDEP -;* V178 tmp177 [V178 ] ( 0, 0 ) int -> zero-ref single-def "field V21._value (fldOffset=0x0)" P-INDEP -;* V179 tmp178 [V179 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V21._vType (fldOffset=0x4)" P-INDEP -;* V180 tmp179 [V180 ] ( 0, 0 ) int -> zero-ref single-def "field V22._value (fldOffset=0x0)" P-INDEP -;* V181 tmp180 [V181 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V22._vType (fldOffset=0x4)" P-INDEP -;* V182 tmp181 [V182 ] ( 0, 0 ) int -> zero-ref single-def "field V23._value (fldOffset=0x0)" P-INDEP -;* V183 tmp182 [V183 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V23._vType (fldOffset=0x4)" P-INDEP -;* V184 tmp183 [V184 ] ( 0, 0 ) int -> zero-ref single-def "field V24._value (fldOffset=0x0)" P-INDEP -;* V185 tmp184 [V185 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V24._vType (fldOffset=0x4)" P-INDEP -;* V186 tmp185 [V186 ] ( 0, 0 ) int -> zero-ref single-def "field V25._value (fldOffset=0x0)" P-INDEP -;* V187 tmp186 [V187 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V25._vType (fldOffset=0x4)" P-INDEP -;* V188 tmp187 [V188 ] ( 0, 0 ) int -> zero-ref single-def "field V26._value (fldOffset=0x0)" P-INDEP -;* V189 tmp188 [V189 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V26._vType (fldOffset=0x4)" P-INDEP -;* V190 tmp189 [V190 ] ( 0, 0 ) int -> zero-ref single-def "field V27._value (fldOffset=0x0)" P-INDEP -;* V191 tmp190 [V191 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V27._vType (fldOffset=0x4)" P-INDEP -;* V192 tmp191 [V192 ] ( 0, 0 ) int -> zero-ref single-def "field V28._value (fldOffset=0x0)" P-INDEP -;* V193 tmp192 [V193 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V28._vType (fldOffset=0x4)" P-INDEP -;* V194 tmp193 [V194 ] ( 0, 0 ) int -> zero-ref single-def "field V29._value (fldOffset=0x0)" P-INDEP -;* V195 tmp194 [V195 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V29._vType (fldOffset=0x4)" P-INDEP -;* V196 tmp195 [V196 ] ( 0, 0 ) int -> zero-ref single-def "field V30._value (fldOffset=0x0)" P-INDEP -;* V197 tmp196 [V197 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V30._vType (fldOffset=0x4)" P-INDEP -;* V198 tmp197 [V198 ] ( 0, 0 ) int -> zero-ref single-def "field V31._value (fldOffset=0x0)" P-INDEP -;* V199 tmp198 [V199 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V31._vType (fldOffset=0x4)" P-INDEP -;* V200 tmp199 [V200 ] ( 0, 0 ) int -> zero-ref single-def "field V32._value (fldOffset=0x0)" P-INDEP -;* V201 tmp200 [V201 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V32._vType (fldOffset=0x4)" P-INDEP -;* V202 tmp201 [V202 ] ( 0, 0 ) int -> zero-ref single-def "field V33._value (fldOffset=0x0)" P-INDEP -;* V203 tmp202 [V203 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V33._vType (fldOffset=0x4)" P-INDEP -;* V204 tmp203 [V204 ] ( 0, 0 ) int -> zero-ref single-def "field V34._value (fldOffset=0x0)" P-INDEP -;* V205 tmp204 [V205 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V34._vType (fldOffset=0x4)" P-INDEP -;* V206 tmp205 [V206,T15] ( 0, 0 ) int -> zero-ref single-def "field V35._value (fldOffset=0x0)" P-INDEP -;* V207 tmp206 [V207 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V35._vType (fldOffset=0x4)" P-INDEP -;* V208 tmp207 [V208 ] ( 0, 0 ) int -> zero-ref single-def "field V36._value (fldOffset=0x0)" P-INDEP -;* V209 tmp208 [V209 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V36._vType (fldOffset=0x4)" P-INDEP -;* V210 tmp209 [V210 ] ( 0, 0 ) int -> zero-ref single-def "field V37._value (fldOffset=0x0)" P-INDEP -;* V211 tmp210 [V211 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V37._vType (fldOffset=0x4)" P-INDEP -;* V212 tmp211 [V212 ] ( 0, 0 ) int -> zero-ref single-def "field V38._value (fldOffset=0x0)" P-INDEP -;* V213 tmp212 [V213 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V38._vType (fldOffset=0x4)" P-INDEP -;* V214 tmp213 [V214,T16] ( 0, 0 ) int -> zero-ref single-def "field V39._value (fldOffset=0x0)" P-INDEP -;* V215 tmp214 [V215 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V39._vType (fldOffset=0x4)" P-INDEP -;* V216 tmp215 [V216 ] ( 0, 0 ) int -> zero-ref single-def "field V40._value (fldOffset=0x0)" P-INDEP -;* V217 tmp216 [V217 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V40._vType (fldOffset=0x4)" P-INDEP -;* V218 tmp217 [V218 ] ( 0, 0 ) int -> zero-ref single-def "field V41._value (fldOffset=0x0)" P-INDEP -;* V219 tmp218 [V219 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V41._vType (fldOffset=0x4)" P-INDEP -;* V220 tmp219 [V220 ] ( 0, 0 ) int -> zero-ref single-def "field V42._value (fldOffset=0x0)" P-INDEP -;* V221 tmp220 [V221 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V42._vType (fldOffset=0x4)" P-INDEP -;* V222 tmp221 [V222 ] ( 0, 0 ) int -> zero-ref single-def "field V43._value (fldOffset=0x0)" P-INDEP -;* V223 tmp222 [V223 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V43._vType (fldOffset=0x4)" P-INDEP -;* V224 tmp223 [V224 ] ( 0, 0 ) int -> zero-ref single-def "field V45._value (fldOffset=0x0)" P-INDEP -;* V225 tmp224 [V225 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V45._vType (fldOffset=0x4)" P-INDEP -;* V226 tmp225 [V226,T17] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.hasValue (fldOffset=0x0)" P-INDEP -;* V227 tmp226 [V227,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.value (fldOffset=0x1)" P-INDEP -;* V228 tmp227 [V228 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V50.hasValue (fldOffset=0x0)" P-INDEP -;* V229 tmp228 [V229 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V50.value (fldOffset=0x1)" P-INDEP -;* V230 tmp229 [V230 ] ( 0, 0 ) int -> zero-ref single-def "field V52._value (fldOffset=0x0)" P-INDEP -;* V231 tmp230 [V231 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V52._vType (fldOffset=0x4)" P-INDEP -;* V232 tmp231 [V232,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V56.hasValue (fldOffset=0x0)" P-INDEP -;* V233 tmp232 [V233,T20] ( 0, 0 ) ubyte -> zero-ref single-def "field V56.value (fldOffset=0x1)" P-INDEP -;* V234 tmp233 [V234 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V57.hasValue (fldOffset=0x0)" P-INDEP -;* V235 tmp234 [V235 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V57.value (fldOffset=0x1)" P-INDEP -;* V236 tmp235 [V236 ] ( 0, 0 ) int -> zero-ref single-def "field V59._value (fldOffset=0x0)" P-INDEP -;* V237 tmp236 [V237 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V59._vType (fldOffset=0x4)" P-INDEP -;* V238 tmp237 [V238,T21] ( 0, 0 ) ubyte -> zero-ref single-def "field V63.hasValue (fldOffset=0x0)" P-INDEP -;* V239 tmp238 [V239,T22] ( 0, 0 ) ubyte -> zero-ref single-def "field V63.value (fldOffset=0x1)" P-INDEP -;* V240 tmp239 [V240 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V64.hasValue (fldOffset=0x0)" P-INDEP -;* V241 tmp240 [V241 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V64.value (fldOffset=0x1)" P-INDEP -;* V242 tmp241 [V242 ] ( 0, 0 ) int -> zero-ref single-def "field V66._value (fldOffset=0x0)" P-INDEP -;* V243 tmp242 [V243 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V66._vType (fldOffset=0x4)" P-INDEP -;* V244 tmp243 [V244,T23] ( 0, 0 ) ubyte -> zero-ref single-def "field V70.hasValue (fldOffset=0x0)" P-INDEP -;* V245 tmp244 [V245,T24] ( 0, 0 ) ubyte -> zero-ref single-def "field V70.value (fldOffset=0x1)" P-INDEP -;* V246 tmp245 [V246 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V71.hasValue (fldOffset=0x0)" P-INDEP -;* V247 tmp246 [V247 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V71.value (fldOffset=0x1)" P-INDEP -;* V248 tmp247 [V248 ] ( 0, 0 ) int -> zero-ref single-def "field V73._value (fldOffset=0x0)" P-INDEP -;* V249 tmp248 [V249 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V73._vType (fldOffset=0x4)" P-INDEP -;* V250 tmp249 [V250,T25] ( 0, 0 ) ubyte -> zero-ref single-def "field V77.hasValue (fldOffset=0x0)" P-INDEP -;* V251 tmp250 [V251,T26] ( 0, 0 ) ubyte -> zero-ref single-def "field V77.value (fldOffset=0x1)" P-INDEP -;* V252 tmp251 [V252 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V78.hasValue (fldOffset=0x0)" P-INDEP -;* V253 tmp252 [V253 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V78.value (fldOffset=0x1)" P-INDEP -;* V254 tmp253 [V254 ] ( 0, 0 ) int -> zero-ref single-def "field V80._value (fldOffset=0x0)" P-INDEP -;* V255 tmp254 [V255 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V80._vType (fldOffset=0x4)" P-INDEP -;* V256 tmp255 [V256,T27] ( 0, 0 ) ubyte -> zero-ref single-def "field V84.hasValue (fldOffset=0x0)" P-INDEP -;* V257 tmp256 [V257,T28] ( 0, 0 ) ubyte -> zero-ref single-def "field V84.value (fldOffset=0x1)" P-INDEP -;* V258 tmp257 [V258 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V85.hasValue (fldOffset=0x0)" P-INDEP -;* V259 tmp258 [V259 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V85.value (fldOffset=0x1)" P-INDEP -;* V260 tmp259 [V260 ] ( 0, 0 ) int -> zero-ref single-def "field V87._value (fldOffset=0x0)" P-INDEP -;* V261 tmp260 [V261 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V87._vType (fldOffset=0x4)" P-INDEP -;* V262 tmp261 [V262,T29] ( 0, 0 ) ubyte -> zero-ref single-def "field V91.hasValue (fldOffset=0x0)" P-INDEP -;* V263 tmp262 [V263,T30] ( 0, 0 ) ubyte -> zero-ref single-def "field V91.value (fldOffset=0x1)" P-INDEP -;* V264 tmp263 [V264 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V92.hasValue (fldOffset=0x0)" P-INDEP
...

-48 (-82.76%) : 183184.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareEntityHandles():this (FullOpts)

@@ -2,10 +2,12 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 14 inlinees with PGO data; 94 single block inlinees; 12 inlinees without PGO data
+; 14 inlinees with PGO data; 98 single block inlinees; 14 inlinees without PGO data
; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Reflection.Metadata.Tests.HandleComparerTests> @@ -54,252 +56,241 @@ ;* V43 tmp42 [V43 ] ( 0, 0 ) struct ( 4) zero-ref "impAppendStmt" <System.Reflection.Metadata.EntityHandle> ;* V44 tmp43 [V44 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle> ;* V45 tmp44 [V45 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* V46 tmp45 [V46,T01] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V46 tmp45 [V46,T00] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V47 tmp46 [V47 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V48 tmp47 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V49 tmp48 [V49 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V50 tmp49 [V50 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V51 tmp50 [V51 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle> ;* V52 tmp51 [V52 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* V53 tmp52 [V53,T02] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V53 tmp52 [V53,T01] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V54 tmp53 [V54 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V55 tmp54 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V56 tmp55 [V56 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V57 tmp56 [V57 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V58 tmp57 [V58 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle> ;* V59 tmp58 [V59 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* V60 tmp59 [V60,T03] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V60 tmp59 [V60,T02] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V61 tmp60 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V62 tmp61 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V63 tmp62 [V63 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V64 tmp63 [V64 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V65 tmp64 [V65 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle> ;* V66 tmp65 [V66 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* V67 tmp66 [V67,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V67 tmp66 [V67,T03] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V68 tmp67 [V68 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V69 tmp68 [V69 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V70 tmp69 [V70 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V71 tmp70 [V71 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V72 tmp71 [V72 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle> ;* V73 tmp72 [V73 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* V74 tmp73 [V74,T05] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V74 tmp73 [V74,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V75 tmp74 [V75 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V76 tmp75 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V77 tmp76 [V77 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V78 tmp77 [V78 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V79 tmp78 [V79 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle> ;* V80 tmp79 [V80 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* V81 tmp80 [V81,T06] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V81 tmp80 [V81,T05] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V82 tmp81 [V82 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V83 tmp82 [V83 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V84 tmp83 [V84 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V85 tmp84 [V85 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V86 tmp85 [V86 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle> ;* V87 tmp86 [V87 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* V88 tmp87 [V88,T07] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V88 tmp87 [V88,T06] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V89 tmp88 [V89 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V90 tmp89 [V90 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V91 tmp90 [V91 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V92 tmp91 [V92 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V93 tmp92 [V93 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle> ;* V94 tmp93 [V94 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* V95 tmp94 [V95,T08] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V95 tmp94 [V95,T07] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V96 tmp95 [V96 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V97 tmp96 [V97 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V98 tmp97 [V98 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V99 tmp98 [V99 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V100 tmp99 [V100 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle> ;* V101 tmp100 [V101 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* V102 tmp101 [V102,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V102 tmp101 [V102,T08] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V103 tmp102 [V103 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V104 tmp103 [V104 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V105 tmp104 [V105 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V106 tmp105 [V106 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V107 tmp106 [V107 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle> ;* V108 tmp107 [V108 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* V109 tmp108 [V109,T10] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
+;* V109 tmp108 [V109,T09] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
;* V110 tmp109 [V110 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V111 tmp110 [V111 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V112 tmp111 [V112 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V113 tmp112 [V113 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V114 tmp113 [V114 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle> ;* V115 tmp114 [V115 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* V116 tmp115 [V116,T11] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
+;* V116 tmp115 [V116,T10] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
;* V117 tmp116 [V117 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V118 tmp117 [V118 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V119 tmp118 [V119 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V120 tmp119 [V120 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V121 tmp120 [V121 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle> ;* V122 tmp121 [V122 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* V123 tmp122 [V123,T12] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
+;* V123 tmp122 [V123,T11] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
;* V124 tmp123 [V124 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V125 tmp124 [V125 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V126 tmp125 [V126 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V127 tmp126 [V127 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V128 tmp127 [V128 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle> ;* V129 tmp128 [V129 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* V130 tmp129 [V130,T13] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
+;* V130 tmp129 [V130,T12] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
;* V131 tmp130 [V131 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V132 tmp131 [V132 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V133 tmp132 [V133 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-;* V134 tmp133 [V134 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle> -;* V135 tmp134 [V135 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle> -;* V136 tmp135 [V136,T14] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" -;* V137 tmp136 [V137 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V138 tmp137 [V138 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V139 tmp138 [V139 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> -;* V140 tmp139 [V140,T15] ( 0, 0 ) int -> zero-ref single-def "field V02._vToken (fldOffset=0x0)" P-INDEP -;* V141 tmp140 [V141,T16] ( 0, 0 ) int -> zero-ref single-def "field V03._vToken (fldOffset=0x0)" P-INDEP -;* V142 tmp141 [V142 ] ( 0, 0 ) int -> zero-ref single-def "field V04._vToken (fldOffset=0x0)" P-INDEP -;* V143 tmp142 [V143,T17] ( 0, 0 ) int -> zero-ref single-def "field V05._vToken (fldOffset=0x0)" P-INDEP -;* V144 tmp143 [V144,T18] ( 0, 0 ) int -> zero-ref single-def "field V06._vToken (fldOffset=0x0)" P-INDEP -;* V145 tmp144 [V145 ] ( 0, 0 ) int -> zero-ref single-def "field V07._vToken (fldOffset=0x0)" P-INDEP -;* V146 tmp145 [V146,T19] ( 0, 0 ) int -> zero-ref single-def "field V08._vToken (fldOffset=0x0)" P-INDEP -;* V147 tmp146 [V147,T20] ( 0, 0 ) int -> zero-ref single-def "field V09._vToken (fldOffset=0x0)" P-INDEP -;* V148 tmp147 [V148 ] ( 0, 0 ) int -> zero-ref single-def "field V10._vToken (fldOffset=0x0)" P-INDEP -;* V149 tmp148 [V149,T21] ( 0, 0 ) int -> zero-ref single-def "field V11._vToken (fldOffset=0x0)" P-INDEP -;* V150 tmp149 [V150,T22] ( 0, 0 ) int -> zero-ref single-def "field V12._vToken (fldOffset=0x0)" P-INDEP -;* V151 tmp150 [V151 ] ( 0, 0 ) int -> zero-ref single-def "field V13._vToken (fldOffset=0x0)" P-INDEP -;* V152 tmp151 [V152,T23] ( 0, 0 ) int -> zero-ref single-def "field V14._vToken (fldOffset=0x0)" P-INDEP -;* V153 tmp152 [V153,T24] ( 0, 0 ) int -> zero-ref single-def "field V15._vToken (fldOffset=0x0)" P-INDEP -;* V154 tmp153 [V154 ] ( 0, 0 ) int -> zero-ref single-def "field V16._vToken (fldOffset=0x0)" P-INDEP -;* V155 tmp154 [V155,T25] ( 0, 0 ) int -> zero-ref single-def "field V17._vToken (fldOffset=0x0)" P-INDEP -;* V156 tmp155 [V156,T26] ( 0, 0 ) int -> zero-ref single-def "field V18._vToken (fldOffset=0x0)" P-INDEP -;* V157 tmp156 [V157 ] ( 0, 0 ) int -> zero-ref single-def "field V19._vToken (fldOffset=0x0)" P-INDEP -;* V158 tmp157 [V158,T27] ( 0, 0 ) int -> zero-ref single-def "field V20._vToken (fldOffset=0x0)" P-INDEP -;* V159 tmp158 [V159,T28] ( 0, 0 ) int -> zero-ref single-def "field V21._vToken (fldOffset=0x0)" P-INDEP -;* V160 tmp159 [V160 ] ( 0, 0 ) int -> zero-ref single-def "field V22._vToken (fldOffset=0x0)" P-INDEP -;* V161 tmp160 [V161,T29] ( 0, 0 ) int -> zero-ref single-def "field V23._vToken (fldOffset=0x0)" P-INDEP -;* V162 tmp161 [V162,T30] ( 0, 0 ) int -> zero-ref single-def "field V24._vToken (fldOffset=0x0)" P-INDEP -;* V163 tmp162 [V163 ] ( 0, 0 ) int -> zero-ref single-def "field V25._vToken (fldOffset=0x0)" P-INDEP -;* V164 tmp163 [V164,T31] ( 0, 0 ) int -> zero-ref single-def "field V26._vToken (fldOffset=0x0)" P-INDEP -;* V165 tmp164 [V165,T32] ( 0, 0 ) int -> zero-ref single-def "field V27._vToken (fldOffset=0x0)" P-INDEP -;* V166 tmp165 [V166 ] ( 0, 0 ) int -> zero-ref single-def "field V28._vToken (fldOffset=0x0)" P-INDEP -;* V167 tmp166 [V167 ] ( 0, 0 ) int -> zero-ref single-def "field V29._vToken (fldOffset=0x0)" P-INDEP -;* V168 tmp167 [V168 ] ( 0, 0 ) int -> zero-ref single-def "field V30._vToken (fldOffset=0x0)" P-INDEP -;* V169 tmp168 [V169 ] ( 0, 0 ) int -> zero-ref single-def "field V31._vToken (fldOffset=0x0)" P-INDEP -;* V170 tmp169 [V170 ] ( 0, 0 ) int -> zero-ref single-def "field V32._vToken (fldOffset=0x0)" P-INDEP -;* V171 tmp170 [V171 ] ( 0, 0 ) int -> zero-ref single-def "field V33._vToken (fldOffset=0x0)" P-INDEP -;* V172 tmp171 [V172 ] ( 0, 0 ) int -> zero-ref single-def "field V34._vToken (fldOffset=0x0)" P-INDEP -;* V173 tmp172 [V173 ] ( 0, 0 ) int -> zero-ref single-def "field V35._vToken (fldOffset=0x0)" P-INDEP -;* V174 tmp173 [V174 ] ( 0, 0 ) int -> zero-ref single-def "field V36._vToken (fldOffset=0x0)" P-INDEP -;* V175 tmp174 [V175 ] ( 0, 0 ) int -> zero-ref single-def "field V37._vToken (fldOffset=0x0)" P-INDEP -;* V176 tmp175 [V176 ] ( 0, 0 ) int -> zero-ref single-def "field V38._vToken (fldOffset=0x0)" P-INDEP -;* V177 tmp176 [V177 ] ( 0, 0 ) int -> zero-ref single-def "field V39._vToken (fldOffset=0x0)" P-INDEP -;* V178 tmp177 [V178 ] ( 0, 0 ) int -> zero-ref single-def "field V40._vToken (fldOffset=0x0)" P-INDEP -;* V179 tmp178 [V179 ] ( 0, 0 ) int -> zero-ref single-def "field V41._vToken (fldOffset=0x0)" P-INDEP -;* V180 tmp179 [V180 ] ( 0, 0 ) int -> zero-ref single-def "field V42._vToken (fldOffset=0x0)" P-INDEP -;* V181 tmp180 [V181 ] ( 0, 0 ) int -> zero-ref single-def "field V43._vToken (fldOffset=0x0)" P-INDEP -;* V182 tmp181 [V182 ] ( 0, 0 ) int -> zero-ref single-def "field V44._vToken (fldOffset=0x0)" P-INDEP -;* V183 tmp182 [V183 ] ( 0, 0 ) int -> zero-ref single-def "field V45._vToken (fldOffset=0x0)" P-INDEP -;* V184 tmp183 [V184,T33] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.hasValue (fldOffset=0x0)" P-INDEP -;* V185 tmp184 [V185,T34] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.value (fldOffset=0x1)" P-INDEP -;* V186 tmp185 [V186 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V50.hasValue (fldOffset=0x0)" P-INDEP -;* V187 tmp186 [V187 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V50.value (fldOffset=0x1)" P-INDEP -;* V188 tmp187 [V188 ] ( 0, 0 ) int -> zero-ref single-def "field V51._vToken (fldOffset=0x0)" P-INDEP -;* V189 tmp188 [V189 ] ( 0, 0 ) int -> zero-ref single-def "field V52._vToken (fldOffset=0x0)" P-INDEP -;* V190 tmp189 [V190,T35] ( 0, 0 ) ubyte -> zero-ref single-def "field V56.hasValue (fldOffset=0x0)" P-INDEP -;* V191 tmp190 [V191,T36] ( 0, 0 ) ubyte -> zero-ref single-def "field V56.value (fldOffset=0x1)" P-INDEP -;* V192 tmp191 [V192 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V57.hasValue (fldOffset=0x0)" P-INDEP -;* V193 tmp192 [V193 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V57.value (fldOffset=0x1)" P-INDEP -;* V194 tmp193 [V194 ] ( 0, 0 ) int -> zero-ref single-def "field V58._vToken (fldOffset=0x0)" P-INDEP -;* V195 tmp194 [V195 ] ( 0, 0 ) int -> zero-ref single-def "field V59._vToken (fldOffset=0x0)" P-INDEP -;* V196 tmp195 [V196,T37] ( 0, 0 ) ubyte -> zero-ref single-def "field V63.hasValue (fldOffset=0x0)" P-INDEP -;* V197 tmp196 [V197,T38] ( 0, 0 ) ubyte -> zero-ref single-def "field V63.value (fldOffset=0x1)" P-INDEP -;* V198 tmp197 [V198 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V64.hasValue (fldOffset=0x0)" P-INDEP -;* V199 tmp198 [V199 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V64.value (fldOffset=0x1)" P-INDEP -;* V200 tmp199 [V200 ] ( 0, 0 ) int -> zero-ref single-def "field V65._vToken (fldOffset=0x0)" P-INDEP -;* V201 tmp200 [V201 ] ( 0, 0 ) int -> zero-ref single-def "field V66._vToken (fldOffset=0x0)" P-INDEP -;* V202 tmp201 [V202,T39] ( 0, 0 ) ubyte -> zero-ref single-def "field V70.hasValue (fldOffset=0x0)" P-INDEP -;* V203 tmp202 [V203,T40] ( 0, 0 ) ubyte -> zero-ref single-def "field V70.value (fldOffset=0x1)" P-INDEP -;* V204 tmp203 [V204 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V71.hasValue (fldOffset=0x0)" P-INDEP -;* V205 tmp204 [V205 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V71.value (fldOffset=0x1)" P-INDEP -;* V206 tmp205 [V206 ] ( 0, 0 ) int -> zero-ref single-def "field V72._vToken (fldOffset=0x0)" P-INDEP -;* V207 tmp206 [V207 ] ( 0, 0 ) int -> zero-ref single-def "field V73._vToken (fldOffset=0x0)" P-INDEP -;* V208 tmp207 [V208,T41] ( 0, 0 ) ubyte -> zero-ref single-def "field V77.hasValue (fldOffset=0x0)" P-INDEP -;* V209 tmp208 [V209,T42] ( 0, 0 ) ubyte -> zero-ref single-def "field V77.value (fldOffset=0x1)" P-INDEP -;* V210 tmp209 [V210 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V78.hasValue (fldOffset=0x0)" P-INDEP -;* V211 tmp210 [V211 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V78.value (fldOffset=0x1)" P-INDEP -;* V212 tmp211 [V212 ] ( 0, 0 ) int -> zero-ref single-def "field V79._vToken (fldOffset=0x0)" P-INDEP -;* V213 tmp212 [V213 ] ( 0, 0 ) int -> zero-ref single-def "field V80._vToken (fldOffset=0x0)" P-INDEP -;* V214 tmp213 [V214,T43] ( 0, 0 ) ubyte -> zero-ref single-def "field V84.hasValue (fldOffset=0x0)" P-INDEP -;* V215 tmp214 [V215,T44] ( 0, 0 ) ubyte -> zero-ref single-def "field V84.value (fldOffset=0x1)" P-INDEP -;* V216 tmp215 [V216 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V85.hasValue (fldOffset=0x0)" P-INDEP -;* V217 tmp216 [V217 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V85.value (fldOffset=0x1)" P-INDEP -;* V218 tmp217 [V218 ] ( 0, 0 ) int -> zero-ref single-def "field V86._vToken (fldOffset=0x0)" P-INDEP -;* V219 tmp218 [V219 ] ( 0, 0 ) int -> zero-ref single-def "field V87._vToken (fldOffset=0x0)" P-INDEP -;* V220 tmp219 [V220,T45] ( 0, 0 ) ubyte -> zero-ref single-def "field V91.hasValue (fldOffset=0x0)" P-INDEP -;* V221 tmp220 [V221,T46] ( 0, 0 ) ubyte -> zero-ref single-def "field V91.value (fldOffset=0x1)" P-INDEP -;* V222 tmp221 [V222 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V92.hasValue (fldOffset=0x0)" P-INDEP -;* V223 tmp222 [V223 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V92.value (fldOffset=0x1)" P-INDEP -;* V224 tmp223 [V224 ] ( 0, 0 ) int -> zero-ref single-def "field V93._vToken (fldOffset=0x0)" P-INDEP -;* V225 tmp224 [V225 ] ( 0, 0 ) int -> zero-ref single-def "field V94._vToken (fldOffset=0x0)" P-INDEP -;* V226 tmp225 [V226,T47] ( 0, 0 ) ubyte -> zero-ref single-def "field V98.hasValue (fldOffset=0x0)" P-INDEP -;* V227 tmp226 [V227,T48] ( 0, 0 ) ubyte -> zero-ref single-def "field V98.value (fldOffset=0x1)" P-INDEP -;* V228 tmp227 [V228 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V99.hasValue (fldOffset=0x0)" P-INDEP -;* V229 tmp228 [V229 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V99.value (fldOffset=0x1)" P-INDEP -;* V230 tmp229 [V230 ] ( 0, 0 ) int -> zero-ref single-def "field V100._vToken (fldOffset=0x0)" P-INDEP -;* V231 tmp230 [V231 ] ( 0, 0 ) int -> zero-ref single-def "field V101._vToken (fldOffset=0x0)" P-INDEP -;* V232 tmp231 [V232,T49] ( 0, 0 ) ubyte -> zero-ref single-def "field V105.hasValue (fldOffset=0x0)" P-INDEP -;* V233 tmp232 [V233,T50] ( 0, 0 ) ubyte -> zero-ref single-def "field V105.value (fldOffset=0x1)" P-INDEP -;* V234 tmp233 [V234 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V106.hasValue (fldOffset=0x0)" P-INDEP -;* V235 tmp234 [V235 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V106.value (fldOffset=0x1)" P-INDEP -;* V236 tmp235 [V236 ] ( 0, 0 ) int -> zero-ref single-def "field V107._vToken (fldOffset=0x0)" P-INDEP -;* V237 tmp236 [V237 ] ( 0, 0 ) int -> zero-ref single-def "field V108._vToken (fldOffset=0x0)" P-INDEP -;* V238 tmp237 [V238,T51] ( 0, 0 ) ubyte -> zero-ref single-def "field V112.hasValue (fldOffset=0x0)" P-INDEP -;* V239 tmp238 [V239,T52] ( 0, 0 ) ubyte -> zero-ref single-def "field V112.value (fldOffset=0x1)" P-INDEP -;* V240 tmp239 [V240 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V113.hasValue (fldOffset=0x0)" P-INDEP -;* V241 tmp240 [V241 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V113.value (fldOffset=0x1)" P-INDEP -;* V242 tmp241 [V242 ] ( 0, 0 ) int -> zero-ref single-def "field V114._vToken (fldOffset=0x0)" P-INDEP -;* V243 tmp242 [V243 ] ( 0, 0 ) int -> zero-ref single-def "field V115._vToken (fldOffset=0x0)" P-INDEP -;* V244 tmp243 [V244,T53] ( 0, 0 ) ubyte -> zero-ref single-def "field V119.hasValue (fldOffset=0x0)" P-INDEP -;* V245 tmp244 [V245,T54] ( 0, 0 ) ubyte -> zero-ref single-def "field V119.value (fldOffset=0x1)" P-INDEP -;* V246 tmp245 [V246 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V120.hasValue (fldOffset=0x0)" P-INDEP -;* V247 tmp246 [V247 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V120.value (fldOffset=0x1)" P-INDEP -;* V248 tmp247 [V248 ] ( 0, 0 ) int -> zero-ref single-def "field V121._vToken (fldOffset=0x0)" P-INDEP -;* V249 tmp248 [V249 ] ( 0, 0 ) int -> zero-ref single-def "field V122._vToken (fldOffset=0x0)" P-INDEP -;* V250 tmp249 [V250,T55] ( 0, 0 ) ubyte -> zero-ref single-def "field V126.hasValue (fldOffset=0x0)" P-INDEP -;* V251 tmp250 [V251,T56] ( 0, 0 ) ubyte -> zero-ref single-def "field V126.value (fldOffset=0x1)" P-INDEP -;* V252 tmp251 [V252 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V127.hasValue (fldOffset=0x0)" P-INDEP -;* V253 tmp252 [V253 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V127.value (fldOffset=0x1)" P-INDEP -;* V254 tmp253 [V254 ] ( 0, 0 ) int -> zero-ref single-def "field V128._vToken (fldOffset=0x0)" P-INDEP -;* V255 tmp254 [V255 ] ( 0, 0 ) int -> zero-ref single-def "field V129._vToken (fldOffset=0x0)" P-INDEP -;* V256 tmp255 [V256,T57] ( 0, 0 ) ubyte -> zero-ref single-def "field V133.hasValue (fldOffset=0x0)" P-INDEP -;* V257 tmp256 [V257,T58] ( 0, 0 ) ubyte -> zero-ref single-def "field V133.value (fldOffset=0x1)" P-INDEP -;* V258 tmp257 [V258 ] ( 0, 0 ) int -> zero-ref single-def "field V134._vToken (fldOffset=0x0)" P-INDEP -;* V259 tmp258 [V259 ] ( 0, 0 ) int -> zero-ref single-def "field V135._vToken (fldOffset=0x0)" P-INDEP -;* V260 tmp259 [V260,T59] ( 0, 0 ) ubyte -> zero-ref single-def "field V139.hasValue (fldOffset=0x0)" P-INDEP -;* V261 tmp260 [V261,T60] ( 0, 0 ) ubyte -> zero-ref single-def "field V139.value (fldOffset=0x1)" P-INDEP -; V262 tmp261 [V262,T00] ( 4, 8 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+;* V134 tmp133 [V134 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> +;* V135 tmp134 [V135 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
...

-34 (-28.81%) : 92727.dasm - System.Xml.XmlDocument:AfterEvent(System.Xml.XmlNodeChangedEventArgs):this (FullOpts)

@@ -2,147 +2,148 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; fully interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 5 ) ref -> r3 this class-hnd single-def <System.Xml.XmlDocument> -; V01 arg1 [V01,T01] ( 7, 5 ) ref -> r2 class-hnd single-def <System.Xml.XmlNodeChangedEventArgs>
+; V00 this [V00,T01] ( 8, 3.15) ref -> r1 this class-hnd single-def <System.Xml.XmlDocument> +; V01 arg1 [V01,T00] ( 7, 4.35) ref -> r2 class-hnd single-def <System.Xml.XmlNodeChangedEventArgs>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 4, 4 ) ref -> lr class-hnd exact single-def "dup spill" <<unknown class>>
+; V04 tmp1 [V04,T03] ( 4, 2.24) ref -> r3 class-hnd exact single-def "dup spill" <<unknown class>>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
-; V06 tmp3 [V06,T04] ( 4, 4 ) ref -> lr class-hnd exact single-def "dup spill" <<unknown class>>
+; V06 tmp3 [V06,T04] ( 4, 1.18) ref -> r3 class-hnd exact single-def "dup spill" <<unknown class>>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 tmp5 [V08,T05] ( 4, 4 ) ref -> lr class-hnd exact single-def "dup spill" <<unknown class>>
+; V08 tmp5 [V08,T05] ( 4, 1.18) ref -> r3 class-hnd exact single-def "dup spill" <<unknown class>>
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
-; V10 rat0 [V10,T02] ( 4, 5 ) int -> r4 "ReplaceWithLclVar is creating a new local variable"
+; V10 rat0 [V10,T02] ( 3, 4.80) int -> r0 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M57939_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr} - add r11, sp, 8 - mov r3, r0 - ; gcrRegs +[r3]
+ push {r11,lr} + mov r11, sp
mov r2, r1 ; gcrRegs +[r2]
- ;; size=12 bbWeight=1 PerfScore 4.00 -G_M57939_IG02: ; bbWeight=1, gcrefRegs=000C {r2 r3}, byrefRegs=0000 {}, byref, isz
+ mov r1, r0 + ; gcrRegs +[r1] + ;; size=10 bbWeight=1 PerfScore 4.00 +G_M57939_IG02: ; bbWeight=1, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
cmp r2, 0
- beq SHORT G_M57939_IG11
+ beq SHORT G_M57939_IG13
;; size=4 bbWeight=1 PerfScore 2.00
-G_M57939_IG03: ; bbWeight=0.50, gcrefRegs=000C {r2 r3}, byrefRegs=0000 {}, byref, isz - ldr r4, [r2+0x18] - cmp r4, 2 - bhi SHORT G_M57939_IG11 - cmp r4, 1 - beq SHORT G_M57939_IG07 - ;; size=10 bbWeight=0.50 PerfScore 2.50 -G_M57939_IG04: ; bbWeight=1, gcrefRegs=000C {r2 r3}, byrefRegs=0000 {}, byref, isz - cmp r4, 2 - beq SHORT G_M57939_IG09 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M57939_IG05: ; bbWeight=0.50, gcrefRegs=000C {r2 r3}, byrefRegs=0000 {}, byref, isz - ldr lr, [r3+0x2C] - ; gcrRegs +[lr] - cmp lr, 0 - beq SHORT G_M57939_IG11 - mov r1, r3 - ; gcrRegs +[r1] - ldr r0, [lr+0x04] - ; gcrRegs +[r0] - ldr r3, [lr+0x0C] - ; gcrRegs -[r3] - ;; size=20 bbWeight=0.50 PerfScore 3.00 -G_M57939_IG06: ; bbWeight=0.50, epilog, nogc, extend - add sp, 4 - pop {r4,r11,lr} - bx r3 // <unknown method> - ; gcr arg pop 0 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M57939_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000C {r2 r3}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0-r1 lr] +[r3] - ldr lr, [r3+0x34] - ; gcrRegs +[lr] - cmp lr, 0 - beq SHORT G_M57939_IG11 - mov r1, r3 - ; gcrRegs +[r1] - ldr r0, [lr+0x04] - ; gcrRegs +[r0] - ldr r3, [lr+0x0C] - ; gcrRegs -[r3] - ;; size=20 bbWeight=0.50 PerfScore 3.00 -G_M57939_IG08: ; bbWeight=0.50, epilog, nogc, extend - add sp, 4 - pop {r4,r11,lr} - bx r3 // <unknown method> - ; gcr arg pop 0 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M57939_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000C {r2 r3}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0-r1 lr] +[r3] - ldr lr, [r3+0x3C] - ; gcrRegs +[lr] - cmp lr, 0 - beq SHORT G_M57939_IG11 - mov r1, r3 - ; gcrRegs +[r1] - ldr r0, [lr+0x04] - ; gcrRegs +[r0] - ldr r3, [lr+0x0C] - ; gcrRegs -[r3] - ;; size=20 bbWeight=0.50 PerfScore 3.00 -G_M57939_IG10: ; bbWeight=0.50, epilog, nogc, extend - add sp, 4 - pop {r4,r11,lr} - bx r3 // <unknown method> - ; gcr arg pop 0 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M57939_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[r0-r2 lr] - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M57939_IG03: ; bbWeight=0.80, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz + ldr r0, [r2+0x18] + cmp r0, 2 + bhi SHORT G_M57939_IG13 + movw r3, LOW ADDRESS J_M57939_DS00 + movt r3, HIGH ADDRESS J_M57939_DS00
-; Total bytes of code 118, prolog size 12, PerfScore 24.50, instruction count 41, allocated bytes for code 118 (MethodHash=28791dac) for method System.Xml.XmlDocument:AfterEvent(System.Xml.XmlNodeChangedEventArgs):this (FullOpts)
+ J_M57939_DS00 LABEL DWORD + DD G_M57939_IG07 + DD G_M57939_IG10 + DD G_M57939_IG04 + ldr pc, [r3+4*r0] + ;; size=18 bbWeight=0.80 PerfScore 4.80 +G_M57939_IG04: ; bbWeight=0.20, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz + ldr r3, [r1+0x3C] + ; gcrRegs +[r3] + cmp r3, 0 + beq SHORT G_M57939_IG13 + ;; size=6 bbWeight=0.20 PerfScore 0.60 +G_M57939_IG05: ; bbWeight=0.36, gcrefRegs=000E {r1 r2 r3}, byrefRegs=0000 {}, byref + ldr r0, [r3+0x04] + ; gcrRegs +[r0] + ldr r3, [r3+0x0C] + ; gcrRegs -[r3] + ;; size=4 bbWeight=0.36 PerfScore 0.72 +G_M57939_IG06: ; bbWeight=0.36, epilog, nogc, extend + pop {r11,lr} + bx r3 // <unknown method> + ; gcr arg pop 0 + ;; size=6 bbWeight=0.36 PerfScore 0.72 +G_M57939_IG07: ; bbWeight=0.20, gcVars=00000000 {}, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r0] + ldr r3, [r1+0x2C] + ; gcrRegs +[r3] + cmp r3, 0 + beq SHORT G_M57939_IG13 + ;; size=6 bbWeight=0.20 PerfScore 0.60 +G_M57939_IG08: ; bbWeight=0.10, gcrefRegs=000E {r1 r2 r3}, byrefRegs=0000 {}, byref + ldr r0, [r3+0x04] + ; gcrRegs +[r0] + ldr r3, [r3+0x0C] + ; gcrRegs -[r3] + ;; size=4 bbWeight=0.10 PerfScore 0.19 +G_M57939_IG09: ; bbWeight=0.10, epilog, nogc, extend + pop {r11,lr} + bx r3 // <unknown method> + ; gcr arg pop 0 + ;; size=6 bbWeight=0.10 PerfScore 0.19 +G_M57939_IG10: ; bbWeight=0.20, gcVars=00000000 {}, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r0] + ldr r3, [r1+0x34] + ; gcrRegs +[r3] + cmp r3, 0 + beq SHORT G_M57939_IG13 + ;; size=6 bbWeight=0.20 PerfScore 0.60 +G_M57939_IG11: ; bbWeight=0.10, gcrefRegs=000E {r1 r2 r3}, byrefRegs=0000 {}, byref + ldr r0, [r3+0x04] + ; gcrRegs +[r0] + ldr r3, [r3+0x0C] + ; gcrRegs -[r3] + ;; size=4 bbWeight=0.10 PerfScore 0.19 +G_M57939_IG12: ; bbWeight=0.10, epilog, nogc, extend + pop {r11,lr} + bx r3 // <unknown method> + ; gcr arg pop 0 + ;; size=6 bbWeight=0.10 PerfScore 0.19 +G_M57939_IG13: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r0-r2] + pop {r11,pc} + ;; size=4 bbWeight=0.20 PerfScore 0.20 +RWD00 dd G_M57939_IG07 + dd G_M57939_IG10 + dd G_M57939_IG04 + + +; Total bytes of code 84, prolog size 10, PerfScore 15.01, instruction count 34, allocated bytes for code 84 (MethodHash=28791dac) for method System.Xml.XmlDocument:AfterEvent(System.Xml.XmlNodeChangedEventArgs):this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 4 F bit : 0 E bit : 0 X bit : 0 Vers : 0
- Function Length : 59 (0x0003b) Actual length = 118 (0x000076)
+ Function Length : 42 (0x0002a) Actual length = 84 (0x000054)
---- 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 : 3 (0x03)
+ Epilog Start Index : 0 (0x00)
---- Scope 1 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Condition : 14 (0xe) (always)
- Epilog Start Index : 3 (0x03)
+ Epilog Start Index : 0 (0x00)
---- Scope 2 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Condition : 14 (0xe) (always)
- Epilog Start Index : 3 (0x03)
+ Epilog Start Index : 0 (0x00)
---- Scope 3 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) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32 - FF end - ---- Epilog start at index 3 ---- - 01 add sp, sp, #4 ; opsize 16 - A8 10 pop {r4,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

+22 (+30.56%) : 5619.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)

@@ -2,32 +2,35 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; sp based frame
+; optimized using Synthesized PGO +; r11 based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 5.50) 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, 3.50) int -> r4 -; V03 loc1 [V03,T03] ( 4, 3 ) ref -> r5 class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 8, 7.20) 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 +; V02 loc0 [V02,T03] ( 5, 4.40) int -> r4 +; V03 loc1 [V03,T04] ( 4, 3.60) 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] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V08 rat0 [V08,T05] ( 2, 3.20) int -> r0 "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V10 rat2 [V10,T04] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V10 rat2 [V10,T02] ( 2, 3.20) int -> r0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M49890_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r5,lr} - sub sp, 12
+ push {r2,r3,r4,r5,r11,lr} + add r11, sp, 16 + str r0, [r11-0x0C]
mov r2, r0 ; gcrRegs +[r2]
- ;; size=6 bbWeight=1 PerfScore 3.00
+ ;; size=14 bbWeight=1 PerfScore 4.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz ; byrRegs +[r1] ldr r0, [r2+0x08] @@ -36,22 +39,10 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, by ; gcrRegs +[r5] ldr r0, [r5+0x04] cmp r0, r4
- bhi SHORT G_M49890_IG05
+ bls SHORT G_M49890_IG05
;; size=12 bbWeight=1 PerfScore 6.00
-G_M49890_IG03: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref - ; gcrRegs -[r5] - movs r0, 0 - str r0, [r1] - ;; size=4 bbWeight=0.50 PerfScore 1.00 -G_M49890_IG04: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[r1] - add sp, 12 - pop {r4,r5,pc} - ;; size=4 bbWeight=0.50 PerfScore 1.00 -G_M49890_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5}, byrefRegs=0002 {r1}, gcvars, byref - ; gcrRegs +[r5] - ; byrRegs +[r1] - str r1, [sp+0x04]
+G_M49890_IG03: ; bbWeight=0.80, gcrefRegs=0024 {r2 r5}, byrefRegs=0002 {r1}, byref, isz + str r1, [sp]
; GC ptr vars +{V01} ldr r0, [r2+0x0C] adds r0, r0, 1 @@ -63,13 +54,35 @@ G_M49890_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5 ldr r1, [r0+r3] ; gcrRegs +[r1] ; byrRegs -[r1]
- ldr r0, [sp+0x04] // [V01 arg1]
+ ldr r0, [sp] // [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.80 PerfScore 14.40 +G_M49890_IG04: ; bbWeight=0.16, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, byref, isz + b SHORT G_M49890_IG07 + ;; size=2 bbWeight=0.16 PerfScore 0.16 +G_M49890_IG05: ; bbWeight=0.20, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref + ; gcrRegs -[r5] + ; byrRegs +[r1] + movs r0, 0 + str r0, [r1] + ;; size=4 bbWeight=0.20 PerfScore 0.40 +G_M49890_IG06: ; bbWeight=0.20, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, epilog, nogc + ; byrRegs -[r1] + pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=0.20 PerfScore 0.20 +G_M49890_IG07: ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[r5]
add r0, r5, 8 ; byrRegs +[r0] lsls r3, r4, 2 @@ -77,13 +90,12 @@ G_M49890_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5 str r1, [r0+r3] movs r0, 1 ; byrRegs -[r0]
- ;; size=42 bbWeight=0.50 PerfScore 8.50 -G_M49890_IG06: ; bbWeight=0.50, epilog, nogc, extend - add sp, 12 - pop {r4,r5,pc} - ;; size=4 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.80 PerfScore 4.00 +G_M49890_IG08: ; bbWeight=0.80, epilog, nogc, extend + pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=0.80 PerfScore 0.80
-; Total bytes of code 72, prolog size 4, PerfScore 20.50, instruction count 32, allocated bytes for code 72 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
+; Total bytes of code 94, prolog size 12, PerfScore 29.96, instruction count 38, allocated bytes for code 94 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -95,7 +107,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 36 (0x00024) Actual length = 72 (0x000048)
+ Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -107,8 +119,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16 - D5 pop {r4,r5,lr} ; opsize 16
+ A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32
FF end FF end

+10 (+31.25%) : 50782.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedGetBoundNodesFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this (FullOpts)

@@ -2,8 +2,10 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; sp based frame
+; optimized using Synthesized PGO +; r11 based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments @@ -15,15 +17,16 @@ ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V06 tmp2 [V06,T00] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V07 tmp3 [V07,T03] ( 3, 2.50) byref -> r0 single-def "Inline stloc first use temp"
+; V07 tmp3 [V07,T03] ( 3, 2.52) byref -> r0 single-def "Inline stloc first use temp"
; V08 tmp4 [V08,T04] ( 2, 1 ) ref -> r0 "field V02.array (fldOffset=0x0)" P-INDEP ;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "field V03.array (fldOffset=0x0)" P-INDEP ;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M64341_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r3,lr} - ;; size=2 bbWeight=1 PerfScore 1.00
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00
G_M64341_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0-r1] ldr r0, [r0+0x10] @@ -34,27 +37,28 @@ G_M64341_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b blx r3 // <unknown method> ; gcrRegs -[r0-r1] ; byrRegs +[r0]
- ; gcr arg pop 0
cmp r0, 0
- beq SHORT G_M64341_IG05
+ beq SHORT G_M64341_IG04
;; size=22 bbWeight=1 PerfScore 8.00
-G_M64341_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+G_M64341_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
ldr r0, [r0] ; gcrRegs +[r0] ; byrRegs -[r0]
- ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M64341_IG04: ; bbWeight=0.50, epilog, nogc, extend - pop {r3,pc} - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M64341_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ b SHORT G_M64341_IG06 + ;; size=4 bbWeight=0.52 PerfScore 1.04 +G_M64341_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movs r0, 0
- ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M64341_IG06: ; bbWeight=0.50, epilog, nogc, extend - pop {r3,pc} - ;; size=2 bbWeight=0.50 PerfScore 0.50
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M64341_IG05: ; bbWeight=1, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M64341_IG06: ; bbWeight=0.48, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs +[r0] + pop {r11,pc} + ;; size=4 bbWeight=0.48 PerfScore 0.48
-; Total bytes of code 32, prolog size 2, PerfScore 11.00, instruction count 13, allocated bytes for code 32 (MethodHash=9f4804aa) for method Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedGetBoundNodesFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this (FullOpts)
+; Total bytes of code 42, prolog size 6, PerfScore 13.52, instruction count 15, allocated bytes for code 42 (MethodHash=9f4804aa) for method Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedGetBoundNodesFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this (FullOpts)
; ============================================================ Unwind Info: @@ -66,7 +70,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 32 (0x000020)
+ Function Length : 21 (0x00015) Actual length = 42 (0x00002a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -78,7 +82,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- ED 08 pop {r3,lr} ; opsize 16
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

+10 (+31.25%) : 44595.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedGetBoundNodesFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this (FullOpts)

@@ -2,8 +2,10 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; sp based frame
+; optimized using Synthesized PGO +; r11 based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments @@ -15,15 +17,16 @@ ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V06 tmp2 [V06,T00] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V07 tmp3 [V07,T03] ( 3, 2.50) byref -> r0 single-def "Inline stloc first use temp"
+; V07 tmp3 [V07,T03] ( 3, 2.52) byref -> r0 single-def "Inline stloc first use temp"
; V08 tmp4 [V08,T04] ( 2, 1 ) ref -> r0 "field V02.array (fldOffset=0x0)" P-INDEP ;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "field V03.array (fldOffset=0x0)" P-INDEP ;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M64341_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r3,lr} - ;; size=2 bbWeight=1 PerfScore 1.00
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00
G_M64341_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0-r1] ldr r0, [r0+0x10] @@ -34,27 +37,28 @@ G_M64341_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b blx r3 // <unknown method> ; gcrRegs -[r0-r1] ; byrRegs +[r0]
- ; gcr arg pop 0
cmp r0, 0
- beq SHORT G_M64341_IG05
+ beq SHORT G_M64341_IG04
;; size=22 bbWeight=1 PerfScore 8.00
-G_M64341_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+G_M64341_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
ldr r0, [r0] ; gcrRegs +[r0] ; byrRegs -[r0]
- ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M64341_IG04: ; bbWeight=0.50, epilog, nogc, extend - pop {r3,pc} - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M64341_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ b SHORT G_M64341_IG06 + ;; size=4 bbWeight=0.52 PerfScore 1.04 +G_M64341_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movs r0, 0
- ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M64341_IG06: ; bbWeight=0.50, epilog, nogc, extend - pop {r3,pc} - ;; size=2 bbWeight=0.50 PerfScore 0.50
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M64341_IG05: ; bbWeight=1, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M64341_IG06: ; bbWeight=0.48, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs +[r0] + pop {r11,pc} + ;; size=4 bbWeight=0.48 PerfScore 0.48
-; Total bytes of code 32, prolog size 2, PerfScore 11.00, instruction count 13, allocated bytes for code 32 (MethodHash=9f4804aa) for method Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedGetBoundNodesFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this (FullOpts)
+; Total bytes of code 42, prolog size 6, PerfScore 13.52, instruction count 15, allocated bytes for code 42 (MethodHash=9f4804aa) for method Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedGetBoundNodesFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this (FullOpts)
; ============================================================ Unwind Info: @@ -66,7 +70,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 32 (0x000020)
+ Function Length : 21 (0x00015) Actual length = 42 (0x00002a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -78,7 +82,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- ED 08 pop {r3,lr} ; opsize 16
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

realworld.run.linux.arm.checked.mch

-10 (-16.13%) : 886.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject:HasValue(BenchmarkDotNet.Characteristics.Characteristic):ubyte:this (FullOpts)

@@ -2,26 +2,27 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; optimized using Synthesized PGO +; sp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> r0 this class-hnd single-def <BenchmarkDotNet.Characteristics.CharacteristicObject> ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r1 class-hnd single-def <BenchmarkDotNet.Characteristics.Characteristic>
-; V02 loc0 [V02,T04] ( 2, 1 ) ref -> r3 ld-addr-op class-hnd <<unknown class>>
+; V02 loc0 [V02,T04] ( 2, 1.04) ref -> r0 ld-addr-op class-hnd <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V05 tmp2 [V05,T00] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V06 tmp3 [V06,T03] ( 3, 2.50) byref -> r0 single-def "Inline stloc first use temp"
+; V06 tmp3 [V06,T03] ( 3, 2.52) byref -> r0 single-def "Inline stloc first use temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
-G_M15164_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_M15164_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00
G_M15164_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0-r1] ldr r0, [r0+0x04] @@ -32,43 +33,39 @@ G_M15164_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b blx r3 // <unknown method> ; gcrRegs -[r0-r1] ; byrRegs +[r0]
+ ; gcr arg pop 0
cmp r0, 0
- beq SHORT G_M15164_IG04
+ beq SHORT G_M15164_IG06
;; size=22 bbWeight=1 PerfScore 8.00
-G_M15164_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz - ldr r3, [r0] - ; gcrRegs +[r3] - b SHORT G_M15164_IG06 - ;; size=4 bbWeight=0.50 PerfScore 1.00 -G_M15164_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r3] - ; byrRegs -[r0] - movs r0, 0 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M15164_IG05: ; bbWeight=0.50, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M15164_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r3] - movw r0, 0xd1ff - movt r0, 0xd1ff
+G_M15164_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
ldr r0, [r0] ; gcrRegs +[r0]
- cmp r3, r0 - bne SHORT G_M15164_IG07
+ ; byrRegs -[r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + ; gcrRegs +[r3] + cmp r0, r3 + bne SHORT G_M15164_IG04
movs r0, 0 ; gcrRegs -[r0]
- b SHORT G_M15164_IG08 - ;; size=18 bbWeight=0.50 PerfScore 3.50 -G_M15164_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b SHORT G_M15164_IG05 + ;; size=20 bbWeight=0.52 PerfScore 4.16 +G_M15164_IG04: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r3] movs r0, 1
- ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M15164_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r11,pc} - ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=2 bbWeight=0.52 PerfScore 0.52 +G_M15164_IG05: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r3,pc} + ;; size=2 bbWeight=0.52 PerfScore 0.52 +G_M15164_IG06: ; bbWeight=0.48, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + movs r0, 0 + ;; size=2 bbWeight=0.48 PerfScore 0.48 +G_M15164_IG07: ; bbWeight=0.48, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=0.48 PerfScore 0.48
-; Total bytes of code 62, prolog size 6, PerfScore 16.50, instruction count 23, allocated bytes for code 62 (MethodHash=0d92c4c3) for method BenchmarkDotNet.Characteristics.CharacteristicObject:HasValue(BenchmarkDotNet.Characteristics.Characteristic):ubyte:this (FullOpts)
+; Total bytes of code 52, prolog size 2, PerfScore 15.16, instruction count 21, allocated bytes for code 52 (MethodHash=0d92c4c3) for method BenchmarkDotNet.Characteristics.CharacteristicObject:HasValue(BenchmarkDotNet.Characteristics.Characteristic):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -80,7 +77,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -92,7 +89,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

-20 (-14.71%) : 34643.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:GetModuleLoggingInformation(byref):int (FullOpts)

@@ -2,25 +2,25 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 4, 3.50) byref -> r4 single-def -; V01 loc0 [V01,T02] ( 4, 3 ) int -> r5 -; V02 loc1 [V02,T01] ( 5, 3.50) ref -> r0 class-hnd exact single-def <System.Management.Automation.Configuration.ModuleLogging>
+; V00 arg0 [V00,T00] ( 4, 3.31) byref -> r4 single-def +; V01 loc0 [V01,T02] ( 4, 2.72) int -> r5 +; V02 loc1 [V02,T01] ( 7, 4.68) ref -> r0 class-hnd exact single-def <System.Management.Automation.Configuration.ModuleLogging>
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Nullable`1[ubyte]> ;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <int[]>
-; V09 tmp4 [V09,T03] ( 4, 2 ) ubyte -> r3 "field V03.hasValue (fldOffset=0x0)" P-INDEP -; V10 tmp5 [V10,T04] ( 4, 2 ) ubyte -> r12 "field V03.value (fldOffset=0x1)" P-INDEP -; V11 cse0 [V11,T05] ( 3, 1.50) int -> r1 "CSE - moderate" -; V12 cse1 [V12,T06] ( 3, 1.50) int -> lr "CSE - moderate"
+; V09 tmp4 [V09,T03] ( 4, 2.37) ubyte -> r1 "field V03.hasValue (fldOffset=0x0)" P-INDEP +; V10 tmp5 [V10,T04] ( 4, 2.37) ubyte -> r3 "field V03.value (fldOffset=0x1)" P-INDEP
; ; Lcl frame size = 0 @@ -48,43 +48,54 @@ G_M8342_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref blx r3 // <unknown method> ; gcrRegs -[r1] +[r0] cmp r0, 0
- beq SHORT G_M8342_IG10 - ;; size=36 bbWeight=1 PerfScore 12.00 -G_M8342_IG04: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz - ldrb r1, [r0+0x08] - uxtb r3, r1 - ldrb lr, [r0+0x09] - uxtb r12, lr - cmp r12, 0 - beq SHORT G_M8342_IG05 - mov r12, 0 - b SHORT G_M8342_IG06 - ;; size=24 bbWeight=0.50 PerfScore 4.00 -G_M8342_IG05: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref - mov r12, 1 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M8342_IG06: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz - ands r3, r12, r3 - cmp r3, 0 - beq SHORT G_M8342_IG07 - movs r5, 2 - b SHORT G_M8342_IG10 - ;; size=12 bbWeight=0.50 PerfScore 2.50 -G_M8342_IG07: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz - uxtb r3, r1 - uxtb r12, lr - cmp r12, 1
beq SHORT G_M8342_IG08
- movs r1, 0 - b SHORT G_M8342_IG09 - ;; size=16 bbWeight=0.50 PerfScore 3.00 -G_M8342_IG08: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref - movs r1, 1 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M8342_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz
+ ;; size=36 bbWeight=1 PerfScore 12.00 +G_M8342_IG04: ; bbWeight=0.80, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz + ldrb r1, [r0+0x08] + ldrb r3, [r0+0x09] + cmp r3, 0 + beq SHORT G_M8342_IG05 + movs r3, 0 + b SHORT G_M8342_IG06 + ;; size=12 bbWeight=0.80 PerfScore 4.80 +G_M8342_IG05: ; bbWeight=0.80, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref + movs r3, 1 + ;; size=2 bbWeight=0.80 PerfScore 0.80 +G_M8342_IG06: ; bbWeight=0.80, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz
ands r1, r3 cmp r1, 0 beq SHORT G_M8342_IG10
+ ;; size=6 bbWeight=0.80 PerfScore 2.40 +G_M8342_IG07: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0] + ; byrRegs -[r4] + movs r5, 2 + ;; size=2 bbWeight=0.42 PerfScore 0.42 +G_M8342_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov r0, r5 + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M8342_IG09: ; bbWeight=1, epilog, nogc, extend + pop {r4,r5,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M8342_IG10: ; bbWeight=0.38, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref, isz + ; gcrRegs +[r0] + ; byrRegs +[r4] + ldrb r1, [r0+0x08] + ldrb r3, [r0+0x09] + cmp r3, 1 + beq SHORT G_M8342_IG11 + movs r3, 0 + b SHORT G_M8342_IG12 + ;; size=12 bbWeight=0.38 PerfScore 2.30 +G_M8342_IG11: ; bbWeight=0.38, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref + movs r3, 1 + ;; size=2 bbWeight=0.38 PerfScore 0.38 +G_M8342_IG12: ; bbWeight=0.38, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz + ands r1, r3 + cmp r1, 0 + beq SHORT G_M8342_IG08 + ;; size=6 bbWeight=0.38 PerfScore 1.15 +G_M8342_IG13: ; bbWeight=0.31, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz
movs r5, 1 ldr r1, [r0+0x04] ; gcrRegs +[r1] @@ -96,28 +107,27 @@ G_M8342_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0 r4]
- ;; size=22 bbWeight=0.50 PerfScore 4.50 -G_M8342_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov r0, r5 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M8342_IG11: ; bbWeight=1, epilog, nogc, extend - pop {r4,r5,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00
+ b SHORT G_M8342_IG08 + ;; size=18 bbWeight=0.31 PerfScore 2.15
-; Total bytes of code 136, prolog size 8, PerfScore 34.00, instruction count 49, allocated bytes for code 136 (MethodHash=1c27df69) for method Microsoft.PowerShell.Commands.ModuleCmdletBase:GetModuleLoggingInformation(byref):int (FullOpts)
+; Total bytes of code 116, prolog size 8, PerfScore 33.41, instruction count 47, allocated bytes for code 116 (MethodHash=1c27df69) for method Microsoft.PowerShell.Commands.ModuleCmdletBase:GetModuleLoggingInformation(byref):int (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 0
+ Epilog Count : 1
F bit : 0
- E bit : 1
+ E bit : 0
X bit : 0 Vers : 0
- Function Length : 68 (0x00044) Actual length = 136 (0x000088) - --- One epilog, unwind codes at 0
+ Function Length : 58 (0x0003a) Actual length = 116 (0x000074) + ---- 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)
---- Unwind codes ---- ---- Epilog start at index 0 ---- A8 30 pop {r4,r5,r11,lr} ; opsize 32

-20 (-14.08%) : 27944.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System._Canon]:getHasAnyApplicableMember():ubyte:this (FullOpts)

@@ -2,37 +2,40 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 4, 4 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]> -; V01 loc0 [V01 ] ( 7, 37 ) struct ( 8) [sp+0x3C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> -; V02 loc1 [V02 ] ( 2, 4 ) struct (56) [sp+0x00] do-not-enreg[XS] must-init addr-exposed ld-addr-op double-align <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]>
+; V00 this [V00,T10] ( 4, 4 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]> +; V01 loc0 [V01 ] ( 6,188.37) struct ( 8) [sp+0x3C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> +; V02 loc1 [V02 ] ( 2, 37.89) struct (56) [sp+0x00] do-not-enreg[XS] must-init addr-exposed ld-addr-op double-align <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] ld-addr-op double-align <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V08 tmp4 [V08,T03] ( 2, 8 ) ref -> r0 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> -; V09 tmp5 [V09,T04] ( 2, 8 ) int -> r2 "Inlining Arg" -;* V10 tmp6 [V10,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V11 tmp7 [V11,T06] ( 3, 6 ) ubyte -> r0 "Inline stloc first use temp" -; V12 tmp8 [V12,T01] ( 2, 32 ) int -> r0 "impAppendStmt" -; V13 tmp9 [V13,T00] ( 2, 32 ) ref -> r1 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
+;* V08 tmp4 [V08,T07] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> +; V09 tmp5 [V09,T04] ( 2, 75.79) int -> r2 "Inlining Arg" +;* V10 tmp6 [V10,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V11 tmp7 [V11,T05] ( 3, 41.09) ubyte -> r0 "Inline stloc first use temp" +; V12 tmp8 [V12,T01] ( 2,168.42) int -> r0 "impAppendStmt" +; V13 tmp9 [V13,T00] ( 2,168.42) ref -> r1 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
-; V15 tmp11 [V15 ] ( 3, 11 ) ref -> [sp+0x3C] do-not-enreg[X] addr-exposed "field V01._builder (fldOffset=0x0)" P-DEP -; V16 tmp12 [V16 ] ( 5, 27 ) int -> [sp+0x40] do-not-enreg[X] addr-exposed "field V01._index (fldOffset=0x4)" P-DEP
+; V15 tmp11 [V15 ] ( 2, 43.11) ref -> [sp+0x3C] do-not-enreg[X] addr-exposed "field V01._builder (fldOffset=0x0)" P-DEP +; V16 tmp12 [V16 ] ( 5,146.26) int -> [sp+0x40] do-not-enreg[X] addr-exposed "field V01._index (fldOffset=0x4)" P-DEP
;* V17 tmp13 [V17 ] ( 0, 0 ) ubyte -> zero-ref "V03.[004..005)"
-;* V18 cse0 [V18,T13] ( 0, 0 ) int -> zero-ref hoist "CSE - aggressive" -; V19 cse1 [V19,T08] ( 2, 2 ) int -> r5 "CSE - aggressive" -; V20 rat0 [V20,T09] ( 2, 4 ) int -> r0 "Spilling to split statement for tree" -;* V21 rat1 [V21,T10] ( 0, 0 ) int -> zero-ref "runtime lookup" -; V22 rat2 [V22,T07] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable" -;* V23 rat3 [V23,T12] ( 0, 0 ) int -> zero-ref "runtime lookup" -;* V24 rat4 [V24,T02] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V18 cse0 [V18,T14] ( 0, 0 ) int -> zero-ref hoist "CSE - aggressive" +; V19 cse1 [V19,T03] ( 3,103.16) ref -> r1 "CSE - aggressive" +; V20 cse2 [V20,T08] ( 1, 1 ) int -> r5 "CSE - aggressive" +;* V21 rat0 [V21,T12] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree" +;* V22 rat1 [V22,T13] ( 0, 0 ) int -> zero-ref "runtime lookup" +;* V23 rat2 [V23,T11] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" +;* V24 rat3 [V24,T06] ( 0, 0 ) int -> zero-ref "runtime lookup" +;* V25 rat4 [V25,T02] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 72 @@ -52,7 +55,7 @@ G_M864_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRe mov r4, r0 ; gcrRegs +[r4] ;; size=34 bbWeight=1 PerfScore 13.00
-G_M864_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M864_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r0, [r4+0x04] ; gcrRegs +[r0] add r1, sp, 60 @@ -63,35 +66,8 @@ G_M864_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, blx r3 // 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 -[r0] ldr r5, [r4]
- mov r0, r5 - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x18] - cmp r0, 0 - bne SHORT G_M864_IG04 - b SHORT G_M864_IG04 - ;; size=34 bbWeight=1 PerfScore 15.00 -G_M864_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ldr r0, [sp+0x3C] - ; gcrRegs +[r0] - ldr r2, [sp+0x40] - ldr r0, [r0+0x04] - add r1, sp, 0 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - ldr lr, [r0] - blx r3 // System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:get_Item(int):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this - ; gcrRegs -[r0] - ldrb r0, [sp+0x14] - subs r3, r0, 1 - cmp r3, 1 - bls SHORT G_M864_IG07 - subs r0, 22 - cmp r0, 1 - bls SHORT G_M864_IG07 - ;; size=40 bbWeight=2 PerfScore 32.00 -G_M864_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=1 PerfScore 8.00 +G_M864_IG03: ; bbWeight=42.11, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [sp+0x40] adds r0, r0, 1 str r0, [sp+0x40] // [V16 tmp12] @@ -99,27 +75,47 @@ G_M864_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, ldr r1, [sp+0x3C] // [V15 tmp11] ; gcrRegs +[r1] ldr r1, [r1+0x04]
- ldr r1, [r1+0x08]
+ ldr r2, [r1+0x08] + cmp r0, r2 + bge SHORT G_M864_IG08 + ;; size=18 bbWeight=42.11 PerfScore 378.95 +G_M864_IG04: ; bbWeight=18.95, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz + ldr r2, [sp+0x40] // [V16 tmp12] + mov r0, r1 + ; gcrRegs +[r0] + add r1, sp, 0 // [V02 loc1]
; gcrRegs -[r1]
- cmp r0, r1 - blt SHORT G_M864_IG03 - ;; size=18 bbWeight=8 PerfScore 72.00 -G_M864_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - movs r0, 0 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M864_IG06: ; bbWeight=0.50, epilog, nogc, extend - add sp, 72 - pop {r4,r5,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M864_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+ movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:get_Item(int):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this + ; gcrRegs -[r0] + ldrb r0, [sp+0x14] // [V02 loc1+0x14] + subs r3, r0, 1 + cmp r3, 1 + bls SHORT G_M864_IG06 + ;; size=28 bbWeight=18.95 PerfScore 208.42 +G_M864_IG05: ; bbWeight=3.20, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + subs r0, 22 + cmp r0, 1 + bhi SHORT G_M864_IG03 + ;; size=6 bbWeight=3.20 PerfScore 9.60 +G_M864_IG06: ; bbWeight=2.46, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movs r0, 1
- ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M864_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=2 bbWeight=2.46 PerfScore 2.46 +G_M864_IG07: ; bbWeight=2.46, epilog, nogc, extend
add sp, 72 pop {r4,r5,r11,pc}
- ;; size=6 bbWeight=0.50 PerfScore 1.00
+ ;; size=6 bbWeight=2.46 PerfScore 4.93 +G_M864_IG08: ; bbWeight=0.53, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref + movs r0, 0 + ;; size=2 bbWeight=0.53 PerfScore 0.53 +G_M864_IG09: ; bbWeight=0.53, epilog, nogc, extend + add sp, 72 + pop {r4,r5,r11,pc} + ;; size=6 bbWeight=0.53 PerfScore 1.05
-; Total bytes of code 142, prolog size 32, PerfScore 135.00, instruction count 59, 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 122, prolog size 32, PerfScore 626.94, instruction count 50, allocated bytes for code 122 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -131,7 +127,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 71 (0x00047) Actual length = 142 (0x00008e)
+ Function Length : 61 (0x0003d) Actual length = 122 (0x00007a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+25.00%) : 22400.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan1[uint],uint,System.Span1[uint],byref) (FullOpts)

@@ -2,96 +2,111 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; fully interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T12] ( 4, 7 ) struct ( 8) [sp+0x34] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T13] ( 3, 6 ) int -> r4 single-def -; V02 arg2 [V02,T02] ( 4, 10 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[uint]> -; V03 arg3 [V03,T17] ( 1, 1 ) byref -> [sp+0x44] single-def
+; V00 arg0 [V00,T18] ( 4, 4 ) struct ( 8) [sp+0x4C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T12] ( 3, 74.00) int -> r4 single-def +; V02 arg2 [V02,T19] ( 4, 4 ) struct ( 8) [sp+0x54] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[uint]> +; V03 arg3 [V03,T20] ( 1, 1 ) byref -> [sp+0x5C] single-def
;* V04 loc0 [V04 ] ( 0, 0 ) long -> zero-ref
-; V05 loc1 [V05,T00] ( 8, 26 ) int -> r7
+; V05 loc1 [V05,T00] ( 8,434.00) int -> r10
;* V06 loc2 [V06 ] ( 0, 0 ) long -> zero-ref
-; V07 loc3 [V07 ] ( 1, 4 ) long -> [sp+0x08] multireg-ret
+; V07 loc3 [V07 ] ( 1, 72.00) long -> [sp+0x20] multireg-ret
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T15] ( 3, 6 ) int -> r5 "V00.[004..008)" -; V10 cse0 [V10,T03] ( 3, 12 ) int -> r8 "CSE - aggressive" -;* V11 cse1 [V11 ] ( 0, 0 ) long -> zero-ref "CSE - aggressive" -; V12 rat0 [V12,T11] ( 4, 10 ) int -> r6 "field V04.lo (fldOffset=0x0)" P-INDEP -;* V13 rat1 [V13,T16] ( 0, 0 ) int -> zero-ref "field V04.hi (fldOffset=0x4)" P-INDEP -; V14 rat2 [V14,T04] ( 3, 12 ) int -> r9 "field V06.lo (fldOffset=0x0)" P-INDEP -; V15 rat3 [V15,T05] ( 2, 8 ) int -> r1 "field V06.hi (fldOffset=0x4)" P-INDEP -; V16 rat4 [V16,T06] ( 3, 12 ) int -> r0 "field V07.lo (fldOffset=0x0)" P-INDEP -; V17 rat5 [V17,T14] ( 2, 8 ) int -> r1 "field V07.hi (fldOffset=0x4)" P-INDEP -; V18 rat6 [V18,T07] ( 3, 12 ) int -> r10 "field V11.lo (fldOffset=0x0)" P-INDEP -; V19 rat7 [V19,T08] ( 3, 12 ) int -> r6 "field V11.hi (fldOffset=0x4)" P-INDEP -; V20 rat8 [V20,T01] ( 2, 16 ) int -> r6 "ReplaceWithLclVar is creating a new local variable" -; V21 rat9 [V21 ] ( 1, 8 ) long -> [sp+0x00] multireg-ret "ReplaceWithLclVar is creating a new local variable" -; V22 rat10 [V22,T09] ( 2, 12 ) int -> r0 "field V21.lo (fldOffset=0x0)" P-INDEP -; V23 rat11 [V23,T10] ( 1, 8 ) int -> r1 "field V21.hi (fldOffset=0x4)" P-INDEP
+; V09 tmp1 [V09,T14] ( 2, 73.00) byref -> [sp+0x04] spill-single-def "V00.[000..004)" +; V10 tmp2 [V10,T13] ( 3, 74.00) int -> r6 "V00.[004..008)" +; V11 tmp3 [V11,T15] ( 2, 73.00) byref -> r7 single-def "V02.[000..004)" +; V12 tmp4 [V12,T16] ( 2, 73.00) int -> r8 "V02.[004..008)" +; V13 cse0 [V13,T02] ( 3,216.00) int -> [sp+0x1C] spill-single-def "CSE - aggressive" +;* V14 cse1 [V14 ] ( 0, 0 ) long -> zero-ref "CSE - aggressive" +; V15 rat0 [V15,T10] ( 4,146.00) int -> r9 "field V04.lo (fldOffset=0x0)" P-INDEP +;* V16 rat1 [V16,T17] ( 0, 0 ) int -> zero-ref "field V04.hi (fldOffset=0x4)" P-INDEP +; V17 rat2 [V17,T03] ( 3,216.00) int -> r9 "field V06.lo (fldOffset=0x0)" P-INDEP +; V18 rat3 [V18,T04] ( 2,144.00) int -> r1 "field V06.hi (fldOffset=0x4)" P-INDEP +; V19 rat4 [V19,T05] ( 3,216.00) int -> r0 "field V07.lo (fldOffset=0x0)" P-INDEP +; V20 rat5 [V20,T11] ( 2,144.00) int -> r1 "field V07.hi (fldOffset=0x4)" P-INDEP +; V21 rat6 [V21,T06] ( 3,216.00) int -> [sp+0x18] spill-single-def "field V14.lo (fldOffset=0x0)" P-INDEP +; V22 rat7 [V22,T07] ( 3,216.00) int -> [sp+0x14] spill-single-def "field V14.hi (fldOffset=0x4)" P-INDEP +; V23 rat8 [V23,T01] ( 2,288.00) int -> r9 "ReplaceWithLclVar is creating a new local variable" +; V24 rat9 [V24 ] ( 1,144.00) long -> [sp+0x08] multireg-ret "ReplaceWithLclVar is creating a new local variable" +; V25 rat10 [V25,T08] ( 2,216.00) int -> r0 "field V24.lo (fldOffset=0x0)" P-INDEP +; V26 rat11 [V26,T09] ( 1,144.00) int -> r1 "field V24.hi (fldOffset=0x4)" P-INDEP
;
-; Lcl frame size = 16
+; Lcl frame size = 40
G_M32639_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1,r3} push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 16 - add r11, sp, 44
+ sub sp, 40 + add r11, sp, 68
mov r4, r2 ;; size=14 bbWeight=1 PerfScore 5.00 G_M32639_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r5, [sp+0x38] - movs r6, 0 - subs r7, r5, 1 - cmp r7, 0
+ ldr r5, [sp+0x4C] + ; byrRegs +[r5] + str r5, [sp+0x04] + ; GC ptr vars +{V09} + ldr r6, [sp+0x50] + ldr r7, [sp+0x54] + ; byrRegs +[r7] + ldr r8, [sp+0x58] + mov r9, 0 + add r10, r6, -1 + cmp r10, 0
blt SHORT G_M32639_IG04
- ;; size=10 bbWeight=1 PerfScore 5.00 -G_M32639_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp r7, r5
+ ;; size=26 bbWeight=1 PerfScore 9.00 +G_M32639_IG03: ; bbWeight=72.00, gcVars=00004000 {V09}, gcrefRegs=0000 {}, byrefRegs=00A0 {r5 r7}, gcvars, byref, isz + cmp r10, r6
bhs SHORT G_M32639_IG06
- ldr r2, [sp+0x34] - ; byrRegs +[r2] - lsl r8, r7, 2 - ldr r2, [r2+r8] - ; byrRegs -[r2] - orr r9, r2, 0 - orr r1, r6, 0 - movs r6, 0 - mov r10, r4 - mov r2, r10 - mov r3, r6
+ lsl lr, r10, 2 + str lr, [sp+0x1C] + ldr r2, [r5+lr] + orr r12, r2, 0 + orr r1, r9, 0 + mov r9, r12 + mov r12, 0 + mov r0, r4 + str r0, [sp+0x18] + str r12, [sp+0x14] + mov r2, r0 + mov r3, r12
mov r0, r9
- movw lr, 0xd1ff - movt lr, 0xd1ff - blx lr // CORINFO_HELP_ULDIV
+ movw r5, 0xd1ff + ; byrRegs -[r5] + movt r5, 0xd1ff + blx r5 // CORINFO_HELP_ULDIV
; gcr arg pop 0
- ldr r2, [sp+0x40] - cmp r7, r2
+ cmp r10, r8
bhs SHORT G_M32639_IG06
- ldr r2, [sp+0x3C] - ; byrRegs +[r2] - str r0, [r2+r8] - mov r2, r10 - ; byrRegs -[r2] - mov r3, r6
+ ldr r5, [sp+0x1C] // [V13 cse0] + str r0, [r7+r5] + ldr r2, [sp+0x18] // [V21 rat6] + ldr r3, [sp+0x14] // [V22 rat7]
movw lr, 0xd1ff movt lr, 0xd1ff blx lr // CORINFO_HELP_LMUL ; gcr arg pop 0
- subs r6, r9, r0 - subs r7, r7, 1 - cmp r7, 0
+ subs r9, r9, r0 + add r10, r10, -1 + cmp r10, 0 + ldr r5, [sp+0x04] // [V09 tmp1] + ; byrRegs +[r5]
bge SHORT G_M32639_IG03
- ;; size=78 bbWeight=4 PerfScore 116.00 -G_M32639_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr r4, [sp+0x44] // [V03 arg3]
+ ;; size=92 bbWeight=72.00 PerfScore 2304.00 +G_M32639_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; byrRegs -[r5 r7] + ; GC ptr vars -{V09} + ldr r4, [sp+0x5C] // [V03 arg3]
; byrRegs +[r4]
- str r6, [r4] - ;; size=4 bbWeight=1 PerfScore 2.00
+ str r9, [r4] + ;; size=6 bbWeight=1 PerfScore 2.00
G_M32639_IG05: ; bbWeight=1, epilog, nogc, extend
- add sp, 16
+ add sp, 40
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} add sp, 12 bx lr @@ -105,7 +120,7 @@ G_M32639_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 128, prolog size 14, PerfScore 132.00, instruction count 49, allocated bytes for code 128 (MethodHash=723d8080) for method System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint],byref) (FullOpts)
+; Total bytes of code 160, prolog size 14, PerfScore 2324.00, instruction count 56, allocated bytes for code 160 (MethodHash=723d8080) for method System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint],byref) (FullOpts)
; ============================================================ Unwind Info: @@ -117,19 +132,19 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 64 (0x00040) Actual length = 128 (0x000080)
+ Function Length : 80 (0x00050) Actual length = 160 (0x0000a0)
---- 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 : 5 (0x05) ---- Unwind codes ----
- 04 add sp, sp, #16 ; opsize 16
+ 0A add sp, sp, #40 ; opsize 16
DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32 EC 0B pop {r0,r1,r3} ; opsize 16 FF end ---- Epilog start at index 5 ----
- 04 add sp, sp, #16 ; opsize 16
+ 0A add sp, sp, #40 ; opsize 16
DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32 03 add sp, sp, #12 ; opsize 16 FD end + nop ; opsize 16

+22 (+30.56%) : 23433.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)

@@ -2,32 +2,35 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; sp based frame
+; optimized using Synthesized PGO +; r11 based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 5.50) 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, 3.50) int -> r4 -; V03 loc1 [V03,T03] ( 4, 3 ) ref -> r5 class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 8, 7.20) 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 +; V02 loc0 [V02,T03] ( 5, 4.40) int -> r4 +; V03 loc1 [V03,T04] ( 4, 3.60) 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] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V08 rat0 [V08,T05] ( 2, 3.20) int -> r0 "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V10 rat2 [V10,T04] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V10 rat2 [V10,T02] ( 2, 3.20) int -> r0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M49890_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r5,lr} - sub sp, 12
+ push {r2,r3,r4,r5,r11,lr} + add r11, sp, 16 + str r0, [r11-0x0C]
mov r2, r0 ; gcrRegs +[r2]
- ;; size=6 bbWeight=1 PerfScore 3.00
+ ;; size=14 bbWeight=1 PerfScore 4.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz ; byrRegs +[r1] ldr r0, [r2+0x08] @@ -36,22 +39,10 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, by ; gcrRegs +[r5] ldr r0, [r5+0x04] cmp r0, r4
- bhi SHORT G_M49890_IG05
+ bls SHORT G_M49890_IG05
;; size=12 bbWeight=1 PerfScore 6.00
-G_M49890_IG03: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref - ; gcrRegs -[r5] - movs r0, 0 - str r0, [r1] - ;; size=4 bbWeight=0.50 PerfScore 1.00 -G_M49890_IG04: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[r1] - add sp, 12 - pop {r4,r5,pc} - ;; size=4 bbWeight=0.50 PerfScore 1.00 -G_M49890_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5}, byrefRegs=0002 {r1}, gcvars, byref - ; gcrRegs +[r5] - ; byrRegs +[r1] - str r1, [sp+0x04]
+G_M49890_IG03: ; bbWeight=0.80, gcrefRegs=0024 {r2 r5}, byrefRegs=0002 {r1}, byref, isz + str r1, [sp]
; GC ptr vars +{V01} ldr r0, [r2+0x0C] adds r0, r0, 1 @@ -63,13 +54,35 @@ G_M49890_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5 ldr r1, [r0+r3] ; gcrRegs +[r1] ; byrRegs -[r1]
- ldr r0, [sp+0x04] // [V01 arg1]
+ ldr r0, [sp] // [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+0x08] + cmp r0, 0 + bne SHORT G_M49890_IG07 + ;; size=42 bbWeight=0.80 PerfScore 14.40 +G_M49890_IG04: ; bbWeight=0.16, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, byref, isz + b SHORT G_M49890_IG07 + ;; size=2 bbWeight=0.16 PerfScore 0.16 +G_M49890_IG05: ; bbWeight=0.20, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref + ; gcrRegs -[r5] + ; byrRegs +[r1] + movs r0, 0 + str r0, [r1] + ;; size=4 bbWeight=0.20 PerfScore 0.40 +G_M49890_IG06: ; bbWeight=0.20, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, epilog, nogc + ; byrRegs -[r1] + pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=0.20 PerfScore 0.20 +G_M49890_IG07: ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[r5]
add r0, r5, 8 ; byrRegs +[r0] lsls r3, r4, 2 @@ -77,13 +90,12 @@ G_M49890_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5 str r1, [r0+r3] movs r0, 1 ; byrRegs -[r0]
- ;; size=42 bbWeight=0.50 PerfScore 8.50 -G_M49890_IG06: ; bbWeight=0.50, epilog, nogc, extend - add sp, 12 - pop {r4,r5,pc} - ;; size=4 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.80 PerfScore 4.00 +G_M49890_IG08: ; bbWeight=0.80, epilog, nogc, extend + pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=0.80 PerfScore 0.80
-; Total bytes of code 72, prolog size 4, PerfScore 20.50, instruction count 32, allocated bytes for code 72 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
+; Total bytes of code 94, prolog size 12, PerfScore 29.96, instruction count 38, allocated bytes for code 94 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -95,7 +107,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 36 (0x00024) Actual length = 72 (0x000048)
+ Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -107,8 +119,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16 - D5 pop {r4,r5,lr} ; opsize 16
+ A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32
FF end FF end

+46 (+40.35%) : 34795.dasm - Microsoft.ApplicationInsights.Channel.InMemoryChannel:set_DeveloperMode(System.Nullable`1[ubyte]):this (FullOpts)

@@ -2,14 +2,16 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; r11 based frame ; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
-; 0 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments ;
-; V00 this [V00,T00] ( 9, 6.50) ref -> r4 this class-hnd single-def <Microsoft.ApplicationInsights.Channel.InMemoryChannel> -; V01 arg1 [V01,T01] ( 4, 4 ) struct ( 4) [sp+0x14] do-not-enreg[SF] ld-addr-op single-def <System.Nullable`1[ubyte]>
+; V00 this [V00,T00] ( 9, 8.80) ref -> r0 this class-hnd single-def <Microsoft.ApplicationInsights.Channel.InMemoryChannel> +; V01 arg1 [V01,T03] ( 4, 4 ) struct ( 4) [sp+0x0C] do-not-enreg[SF] ld-addr-op single-def <System.Nullable`1[ubyte]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Nullable`1[ubyte]> ;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Nullable`1[ubyte]> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -17,100 +19,121 @@ ;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.ApplicationInsights.Channel.TelemetryBuffer>
-; V09 tmp5 [V09,T02] ( 4, 4 ) ref -> r0 class-hnd single-def "Inlining Arg" <Microsoft.ApplicationInsights.Channel.TelemetryBuffer> -;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V02.hasValue (fldOffset=0x0)" P-INDEP -;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V02.value (fldOffset=0x1)" P-INDEP -; V12 tmp8 [V12,T07] ( 2, 2 ) ubyte -> r0 single-def "field V03.hasValue (fldOffset=0x0)" P-INDEP -; V13 tmp9 [V13,T08] ( 2, 2 ) ubyte -> r1 single-def "field V03.value (fldOffset=0x1)" P-INDEP -; V14 tmp10 [V14,T03] ( 4, 3 ) ubyte -> r5 single-def "V01.[000..001)" -; V15 tmp11 [V15,T04] ( 4, 3 ) ubyte -> r6 single-def "V01.[001..002)" -; V16 tmp12 [V16,T05] ( 3, 3 ) byref -> r3 single-def "Spilling address for field-by-field copy" -; V17 cse0 [V17,T09] ( 3, 1.50) int -> r1 "CSE - moderate" -; V18 cse1 [V18,T06] ( 5, 2.50) ref -> r0 multi-def "CSE - aggressive"
+; V09 tmp5 [V09,T04] ( 4, 5.60) ref -> r1 class-hnd single-def "Inlining Arg" <Microsoft.ApplicationInsights.Channel.TelemetryBuffer> +; V10 tmp6 [V10,T02] ( 4, 6.37) int -> lr "Inlining Arg" +; V11 tmp7 [V11,T01] ( 6, 7.60) ref -> r1 class-hnd single-def "Inlining Arg" <Microsoft.ApplicationInsights.Channel.TelemetryBuffer> +;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V02.hasValue (fldOffset=0x0)" P-INDEP +;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V02.value (fldOffset=0x1)" P-INDEP +; V14 tmp10 [V14,T10] ( 2, 2 ) ubyte -> r1 single-def "field V03.hasValue (fldOffset=0x0)" P-INDEP +; V15 tmp11 [V15,T11] ( 2, 2 ) ubyte -> lr single-def "field V03.value (fldOffset=0x1)" P-INDEP +; V16 tmp12 [V16,T09] ( 4, 3.60) ubyte -> r3 single-def "V01.[000..001)" +; V17 tmp13 [V17,T08] ( 4, 3.80) ubyte -> r2 single-def "V01.[001..002)" +; V18 tmp14 [V18,T06] ( 3, 4.80) byref -> r1 single-def "Spilling address for field-by-field copy" +; V19 cse0 [V19,T05] ( 5, 5 ) ref -> r1 multi-def "CSE - aggressive" +; V20 cse1 [V20,T07] ( 6, 4.43) int -> registers multi-def "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M25940_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r1}
- push {r4,r5,r6,r11,lr} - add r11, sp, 12 - mov r4, r0 - ; gcrRegs +[r4] - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M25940_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ldrb r5, [sp+0x14] - ldrb r6, [sp+0x15] - ldrb r0, [r4+0x15] - ldrb r1, [r4+0x16] - cmp r6, r1
+ push {r3,r11,lr} + add r11, sp, 4 + ;; size=10 bbWeight=1 PerfScore 3.00 +G_M25940_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r0] + ldrb r3, [sp+0x0C] + ldrb r2, [sp+0x0D] + ldrb r1, [r0+0x15] + ldrb lr, [r0+0x16] + cmp r2, lr
beq SHORT G_M25940_IG03
- movs r1, 0
+ mov lr, 0
b SHORT G_M25940_IG04
- ;; size=20 bbWeight=1 PerfScore 8.00 -G_M25940_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - movs r1, 1 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M25940_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - cmp r5, r0
+ ;; size=24 bbWeight=1 PerfScore 8.00 +G_M25940_IG03: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref + mov lr, 1 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M25940_IG04: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz + cmp r3, r1
beq SHORT G_M25940_IG05
- movs r0, 0
+ movs r1, 0
b SHORT G_M25940_IG06 ;; size=8 bbWeight=1 PerfScore 4.00
-G_M25940_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - movs r0, 1 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M25940_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ands r0, r1 - cmp r0, 0 - bne SHORT G_M25940_IG11 - ;; size=6 bbWeight=1 PerfScore 3.00 -G_M25940_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - cmp r5, 0 - beq SHORT G_M25940_IG09 - cmp r6, 0 - beq SHORT G_M25940_IG09 - ldr r0, [r4+0x04] - ; gcrRegs +[r0] - ldr r1, [r0+0x10] - str r1, [r4+0x10] - ldr r1, [r0+0x14] - cmp r1, 0 - bgt SHORT G_M25940_IG08 - str r1, [r0+0x10] - b SHORT G_M25940_IG10 - ;; size=24 bbWeight=0.50 PerfScore 6.00 -G_M25940_IG08: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz
+G_M25940_IG05: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
movs r1, 1
- str r1, [r0+0x10] - b SHORT G_M25940_IG10 - ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M25940_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M25940_IG06: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz + ands r1, lr, r1 + cmp r1, 0 + bne SHORT G_M25940_IG15 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M25940_IG07: ; bbWeight=0.80, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz + cmp r3, 0 + beq SHORT G_M25940_IG10 + ;; size=4 bbWeight=0.80 PerfScore 1.60 +G_M25940_IG08: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz + cmp r2, 0 + beq SHORT G_M25940_IG10 + ldr r1, [r0+0x04] + ; gcrRegs +[r1] + ldr lr, [r1+0x10] + str lr, [r0+0x10] + ldr lr, [r1+0x14] + cmp lr, 0 + bgt SHORT G_M25940_IG16 + ;; size=24 bbWeight=1 PerfScore 8.00 +G_M25940_IG09: ; bbWeight=0.42, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz + str lr, [r1+0x10] + b SHORT G_M25940_IG14 + ;; size=6 bbWeight=0.42 PerfScore 0.83 +G_M25940_IG10: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r1] + ldr r1, [r0+0x04] + ; gcrRegs +[r1] + ldr lr, [r0+0x10] + ldrsb r12, [r1] + cmp lr, 0 + ble SHORT G_M25940_IG17 + ;; size=16 bbWeight=1 PerfScore 5.00 +G_M25940_IG11: ; bbWeight=0.80, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz + ldr r12, [r1+0x14] + cmp lr, r12 + ble SHORT G_M25940_IG13 + ;; size=8 bbWeight=0.80 PerfScore 2.40 +G_M25940_IG12: ; bbWeight=0.42, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz + str r12, [r1+0x10] + b SHORT G_M25940_IG14 + ;; size=6 bbWeight=0.42 PerfScore 0.83 +G_M25940_IG13: ; bbWeight=0.38, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref + str lr, [r1+0x10] + ;; size=4 bbWeight=0.38 PerfScore 0.38 +G_M25940_IG14: ; bbWeight=0.80, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1] + add r1, r0, 21 + ; byrRegs +[r1] + strb r3, [r1] + strb r2, [r1+0x01] + ;; size=8 bbWeight=0.80 PerfScore 2.40 +G_M25940_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r0]
- ldr r0, [r4+0x04] - ; gcrRegs +[r0] - ldr r1, [r4+0x10] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - ldr r2, [r0] - blx r3 // Microsoft.ApplicationInsights.Channel.TelemetryBuffer:set_Capacity(int):this - ; gcrRegs -[r0] - ;; size=18 bbWeight=0.50 PerfScore 3.50 -G_M25940_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - add r3, r4, 21 - ; byrRegs +[r3] - strb r5, [r3] - strb r6, [r3+0x01] - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M25940_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[r4] - ; byrRegs -[r3] - pop {r4,r5,r6,r11,lr}
+ ; byrRegs -[r1] + pop {r3,r11,lr}
add sp, 4 bx lr ;; size=8 bbWeight=1 PerfScore 3.00
+G_M25940_IG16: ; bbWeight=0.38, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r0-r1] + mov lr, 1 + str lr, [r1+0x10] + b SHORT G_M25940_IG14 + ;; size=10 bbWeight=0.38 PerfScore 1.15 +G_M25940_IG17: ; bbWeight=0.20, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz + mov lr, 500 + str lr, [r1+0x10] + b SHORT G_M25940_IG14 + ;; size=10 bbWeight=0.20 PerfScore 0.60
-; Total bytes of code 114, prolog size 10, PerfScore 36.50, instruction count 49, allocated bytes for code 114 (MethodHash=ff0a9aab) for method Microsoft.ApplicationInsights.Channel.InMemoryChannel:set_DeveloperMode(System.Nullable`1[ubyte]):this (FullOpts)
+; Total bytes of code 160, prolog size 10, PerfScore 46.20, instruction count 55, allocated bytes for code 160 (MethodHash=ff0a9aab) for method Microsoft.ApplicationInsights.Channel.InMemoryChannel:set_DeveloperMode(System.Nullable`1[ubyte]):this (FullOpts)
; ============================================================ Unwind Info: @@ -122,18 +145,18 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 57 (0x00039) Actual length = 114 (0x000072)
+ Function Length : 80 (0x00050) Actual length = 160 (0x0000a0)
---- 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 : 5 (0x05) ---- Unwind codes ----
- A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
+ A8 08 pop {r3,r11,lr} ; opsize 32
EC 02 pop {r1} ; opsize 16 FF end ---- Epilog start at index 5 ----
- A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
+ A8 08 pop {r3,r11,lr} ; opsize 32
01 add sp, sp, #4 ; opsize 16 FD end + nop ; opsize 16 FF end

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm.checked.mch 11,399 1,586 6,492 3,321 -15,312 +159,528
benchmarks.run_pgo.linux.arm.checked.mch 5,376 949 3,894 533 -6,906 +99,838
benchmarks.run_tiered.linux.arm.checked.mch 10,967 1,421 6,016 3,530 -12,666 +139,620
coreclr_tests.run.linux.arm.checked.mch 84,157 13,435 34,403 36,319 -196,012 +437,122
libraries.crossgen2.linux.arm.checked.mch 35,494 5,121 11,110 19,263 -36,078 +132,304
libraries.pmi.linux.arm.checked.mch 61,234 10,989 20,556 29,689 -95,016 +331,926
libraries_tests.run.linux.arm.Release.mch 15,361 4,457 8,748 2,156 -57,900 +132,298
librariestestsnotieredcompilation.run.linux.arm.Release.mch 70,822 19,655 26,732 24,435 -249,414 +505,406
realworld.run.linux.arm.checked.mch 11,675 1,852 5,258 4,565 -19,266 +173,032
306,485 59,465 123,209 123,811 -688,570 +2,111,074

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 40,480 4,278 36,202 1,142 (2.63%) 3,014 (6.93%)
benchmarks.run_pgo.linux.arm.checked.mch 44,556 18,036 26,520 753 (1.55%) 3,906 (8.06%)
benchmarks.run_tiered.linux.arm.checked.mch 71,374 38,765 32,609 989 (1.34%) 2,501 (3.39%)
coreclr_tests.run.linux.arm.checked.mch 467,041 259,195 207,846 7,476 (1.56%) 12,084 (2.52%)
libraries.crossgen2.linux.arm.checked.mch 187,172 14 187,158 77 (0.04%) 11,225 (5.66%)
libraries.pmi.linux.arm.checked.mch 258,328 6 258,322 7,861 (2.80%) 22,345 (7.96%)
libraries_tests.run.linux.arm.Release.mch 32,607 3,662 28,945 1,184 (3.41%) 2,114 (6.09%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 248,175 21,625 226,550 33,437 (10.85%) 60,067 (19.48%)
realworld.run.linux.arm.checked.mch 33,826 153 33,673 1,424 (3.76%) 4,035 (10.66%)
1,383,559 345,734 1,037,825 54,343 (3.61%) 121,291 (8.06%)

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: 12211474 (overridden on cmd)
Total bytes of diff: 12355690 (overridden on cmd)
Total bytes of delta: 144216 (1.18 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        2270 : 28969.dasm (7.80 % of base)
        1842 : 11709.dasm (8.07 % of base)
        1246 : 12278.dasm (4.66 % of base)
        1120 : 21236.dasm (31.58 % of base)
        1106 : 12456.dasm (33.62 % of base)
        1024 : 12126.dasm (10.34 % of base)
         672 : 9526.dasm (6.65 % of base)
         654 : 22143.dasm (14.29 % of base)
         534 : 9296.dasm (8.89 % of base)
         532 : 10729.dasm (8.54 % of base)
         488 : 9519.dasm (4.88 % of base)
         482 : 34573.dasm (5.93 % of base)
         480 : 25918.dasm (10.07 % of base)
         474 : 12575.dasm (12.21 % of base)
         474 : 22476.dasm (12.21 % of base)
         450 : 12576.dasm (4.18 % of base)
         396 : 29066.dasm (5.62 % of base)
         388 : 9506.dasm (3.62 % of base)
         382 : 9520.dasm (3.81 % of base)
         380 : 26047.dasm (49.61 % of base)

Top file improvements (bytes):
        -228 : 5351.dasm (-7.33 % of base)
        -214 : 24171.dasm (-5.34 % of base)
        -174 : 21245.dasm (-3.66 % of base)
        -126 : 3760.dasm (-9.25 % of base)
        -126 : 4576.dasm (-12.35 % of base)
        -124 : 6858.dasm (-3.13 % of base)
        -122 : 17116.dasm (-10.18 % of base)
        -120 : 26156.dasm (-17.29 % of base)
        -120 : 34379.dasm (-12.74 % of base)
        -120 : 24673.dasm (-12.17 % of base)
        -112 : 13702.dasm (-17.72 % of base)
        -104 : 25909.dasm (-7.84 % of base)
         -98 : 6289.dasm (-12.22 % of base)
         -94 : 8310.dasm (-4.22 % of base)
         -90 : 41891.dasm (-10.14 % of base)
         -88 : 9907.dasm (-1.10 % of base)
         -84 : 13700.dasm (-29.37 % of base)
         -82 : 33760.dasm (-0.79 % of base)
         -82 : 23747.dasm (-1.00 % of base)
         -80 : 892.dasm (-6.06 % of base)

83 total files with Code Size differences (41 improved, 42 regressed), 20 unchanged.

Top method regressions (bytes):
        2270 (7.80 % of base) : 28969.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
        1842 (8.07 % of base) : 11709.dasm - Jil.JSON:GetWriterAction[System.__Canon](Jil.Options):System.Action`3[System.__Canon,System.__Canon,int] (FullOpts)
        1246 (4.66 % of base) : 12278.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
        1120 (31.58 % of base) : 21236.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
        1106 (33.62 % of base) : 12456.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
        1024 (10.34 % of base) : 12126.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
         672 (6.65 % of base) : 9526.dasm - Utf8Json.Formatters.MicroBenchmarks_Serializers_CampaignSummaryViewModelFormatter3:Serialize(byref,MicroBenchmarks.Serializers.CampaignSummaryViewModel,Utf8Json.IJsonFormatterResolver):this (FullOpts)
         654 (14.29 % of base) : 22143.dasm - System.Security.Cryptography.CryptoConfig:get_DefaultNameHT():System.Collections.Generic.Dictionary`2[System.String,System.Object] (FullOpts)
         534 (8.89 % of base) : 9296.dasm - Utf8Json.Resolvers.BuiltinResolver+BuiltinResolverGetFormatterHelper:.cctor() (FullOpts)
         532 (8.54 % of base) : 10729.dasm - MessagePack.Internal.BuiltinResolverGetFormatterHelper:.cctor() (FullOpts)
         488 (4.88 % of base) : 9519.dasm - Utf8Json.Internal.NumberConverter:WriteInt64(byref,int,long):int (FullOpts)
         482 (5.93 % of base) : 34573.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffset(System.IO.TextReader,ushort[]):System.DateTimeOffset (FullOpts)
         480 (10.07 % of base) : 25918.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
         474 (12.21 % of base) : 22476.dasm - Utf8Json.Formatters.MicroBenchmarks_Serializers_LocationFormatter1:.ctor():this (FullOpts)
         474 (12.21 % of base) : 12575.dasm - Utf8Json.Formatters.MicroBenchmarks_Serializers_MyEventsListerItemFormatter2:.ctor():this (FullOpts)
         450 (4.18 % of base) : 12576.dasm - Utf8Json.Formatters.MicroBenchmarks_Serializers_MyEventsListerItemFormatter2:Serialize(byref,MicroBenchmarks.Serializers.MyEventsListerItem,Utf8Json.IJsonFormatterResolver):this (FullOpts)
         396 (5.62 % of base) : 29066.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.Location (FullOpts)
         388 (3.62 % of base) : 9506.dasm - Utf8Json.Formatters.MicroBenchmarks_Serializers_ActiveOrUpcomingEventFormatter2:Serialize(byref,MicroBenchmarks.Serializers.ActiveOrUpcomingEvent,Utf8Json.IJsonFormatterResolver):this (FullOpts)
         382 (3.81 % of base) : 9520.dasm - Utf8Json.JsonWriter:WriteInt64(long):this (FullOpts)
         380 (6.39 % of base) : 29315.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.Location (FullOpts)

Top method improvements (bytes):
        -228 (-7.33 % of base) : 5351.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
        -214 (-5.34 % of base) : 24171.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
        -174 (-3.66 % of base) : 21245.dasm - System.Buffers.Tests.ReadOnlySequenceTests`1[ushort]:FirstSpan(System.Buffers.ReadOnlySequence`1[ushort]):int:this (FullOpts)
        -126 (-9.25 % of base) : 3760.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509CertificateReader+<>c:<GetPolicyData>b__63_0(Microsoft.Win32.SafeHandles.SafeX509Handle):System.Security.Cryptography.X509Certificates.PolicyData:this (FullOpts)
        -126 (-12.35 % of base) : 4576.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindMatch(int,System.ReadOnlySpan`1[ushort],int,System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+PerThreadData[ulong]):System.Text.RegularExpressions.Symbolic.SymbolicMatch:this (FullOpts)
        -124 (-3.13 % of base) : 6858.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:.cctor() (FullOpts)
        -122 (-10.18 % of base) : 17116.dasm - System.UriHelper:UnescapeString(uint,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
        -120 (-12.17 % of base) : 24673.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
        -120 (-17.29 % of base) : 26156.dasm - Microsoft.CodeAnalysis.CSharp.BoundConversion:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.ConversionGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundConversion:this (FullOpts)
        -120 (-12.74 % of base) : 34379.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
        -112 (-17.72 % of base) : 13702.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanBE():System.Span`1[ubyte] (FullOpts)
        -104 (-7.84 % of base) : 25909.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
         -98 (-12.22 % of base) : 6289.dasm - System.Text.Json.Reflection.ReflectionExtensions:IsImmutableEnumerableType(System.Type):ubyte (FullOpts)
         -94 (-4.22 % of base) : 8310.dasm - System.Reflection.Emit.CustomAttributeBuilder:EmitValue(System.IO.BinaryWriter,System.Type,System.Object) (FullOpts)
         -90 (-10.14 % of base) : 41891.dasm - SciMark2.kernel:CopyMatrix(double[][],double[][]) (FullOpts)
         -88 (-1.10 % of base) : 9907.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (FullOpts)
         -84 (-29.37 % of base) : 13700.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanLE():System.Span`1[ubyte] (FullOpts)
         -82 (-1.00 % of base) : 23747.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
         -82 (-0.79 % of base) : 33760.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
         -80 (-6.06 % of base) : 892.dasm - System.Guid:TryParseExactD(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)

Top method regressions (percentages):
         380 (49.61 % of base) : 26047.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         160 (48.19 % of base) : 5527.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
         306 (39.95 % of base) : 26769.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (FullOpts)
         104 (39.10 % of base) : 14917.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(ushort[],int,int,byref):int (FullOpts)
        1106 (33.62 % of base) : 12456.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
         128 (32.00 % of base) : 757.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
        1120 (31.58 % of base) : 21236.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
          28 (31.11 % of base) : 4448.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (FullOpts)
          18 (31.03 % of base) : 23397.dasm - System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
          94 (30.92 % of base) : 761.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
         230 (29.95 % of base) : 12317.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.Object[]):System.String (FullOpts)
         194 (29.48 % of base) : 26377.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          34 (28.33 % of base) : 36916.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (FullOpts)
          14 (26.92 % of base) : 8905.dasm - ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.__Canon,System.__Canon]:.ctor(int,int,int,int,ProtoBuf.Serializers.RepeatedSerializerStub):this (FullOpts)
          74 (26.24 % of base) : 28034.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanMultiLineComment(byref):ubyte:this (FullOpts)
         176 (25.00 % of base) : 25457.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:HasYieldOperations(Microsoft.CodeAnalysis.SyntaxNode):ubyte (FullOpts)
          30 (24.19 % of base) : 6434.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (FullOpts)
          18 (23.08 % of base) : 7616.dasm - System.Memory.Constructors`1[System.__Canon]:ReadOnlyMemoryFromArrayStartLength():System.ReadOnlyMemory`1[System.__Canon]:this (FullOpts)
         212 (22.89 % of base) : 26362.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          34 (20.99 % of base) : 949.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)

Top method improvements (percentages):
         -84 (-29.37 % of base) : 13700.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanLE():System.Span`1[ubyte] (FullOpts)
         -74 (-26.62 % of base) : 17107.dasm - System.Numerics.Tests.Perf_BigInteger:Parse(System.Numerics.Tests.Perf_BigInteger+BigIntegerData):System.Numerics.BigInteger:this (FullOpts)
         -10 (-22.73 % of base) : 12025.dasm - Jil.Common.Utils+<>c__DisplayClass9_0:<IdealMemberOrderForWriting>b__6(System.Reflection.FieldInfo):int:this (FullOpts)
         -44 (-21.36 % of base) : 8528.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateMethod(System.Xml.Serialization.TypeMapping):this (FullOpts)
         -76 (-20.77 % of base) : 14966.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (FullOpts)
         -18 (-20.45 % of base) : 10455.dasm - System.Runtime.Serialization.XmlFormatGeneratorStatics:get_MemberNamesField():System.Reflection.FieldInfo (FullOpts)
        -112 (-17.72 % of base) : 13702.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanBE():System.Span`1[ubyte] (FullOpts)
        -120 (-17.29 % of base) : 26156.dasm - Microsoft.CodeAnalysis.CSharp.BoundConversion:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.ConversionGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundConversion:this (FullOpts)
         -10 (-16.13 % of base) : 888.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject:HasValue(BenchmarkDotNet.Characteristics.Characteristic):ubyte:this (FullOpts)
          -8 (-16.00 % of base) : 5076.dasm - Newtonsoft.Json.Serialization.JsonTypeReflector:get_DynamicCodeGeneration():ubyte (FullOpts)
         -52 (-15.66 % of base) : 11067.dasm - MicroBenchmarks.Serializers.Json_FromStream`1[System.__Canon]:SetupDataContractJsonSerializer_():this (FullOpts)
         -54 (-15.08 % of base) : 32212.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (FullOpts)
         -32 (-14.81 % of base) : 27363.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
         -14 (-14.00 % of base) : 11195.dasm - System.Runtime.Serialization.JsonFormatGeneratorStatics:get_CollectionItemNameProperty():System.Reflection.PropertyInfo (FullOpts)
         -14 (-14.00 % of base) : 17183.dasm - System.Runtime.Serialization.JsonFormatGeneratorStatics:get_TypeHandleProperty():System.Reflection.PropertyInfo (FullOpts)
         -14 (-14.00 % of base) : 17175.dasm - System.Runtime.Serialization.JsonFormatGeneratorStatics:get_UseSimpleDictionaryFormatWriteProperty():System.Reflection.PropertyInfo (FullOpts)
         -14 (-14.00 % of base) : 12794.dasm - System.Runtime.Serialization.XmlFormatGeneratorStatics:get_ChildElementNamespacesProperty():System.Reflection.PropertyInfo (FullOpts)
         -14 (-14.00 % of base) : 12790.dasm - System.Runtime.Serialization.XmlFormatGeneratorStatics:get_CollectionItemNameProperty():System.Reflection.PropertyInfo (FullOpts)
         -14 (-14.00 % of base) : 10464.dasm - System.Runtime.Serialization.XmlFormatGeneratorStatics:get_NamespaceProperty():System.Reflection.PropertyInfo (FullOpts)
          -6 (-13.64 % of base) : 56.dasm - System.Diagnostics.Debug:Assert(ubyte) (FullOpts)


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: 21667458 (overridden on cmd)
Total bytes of diff: 21760390 (overridden on cmd)
Total bytes of delta: 92932 (0.43 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         254 : 13962.dasm (7.07 % of base)
         184 : 24118.dasm (4.02 % of base)
         150 : 7514.dasm (11.21 % of base)
         150 : 824.dasm (5.51 % of base)
         136 : 1562.dasm (7.57 % of base)
         134 : 3006.dasm (12.20 % of base)
         132 : 7073.dasm (5.00 % of base)
         124 : 40672.dasm (10.56 % of base)
         122 : 21929.dasm (19.74 % of base)
         118 : 8326.dasm (7.89 % of base)
         114 : 9173.dasm (10.65 % of base)
         108 : 14411.dasm (7.58 % of base)
          96 : 2298.dasm (7.97 % of base)
          90 : 1399.dasm (9.11 % of base)
          88 : 14884.dasm (5.89 % of base)
          84 : 28301.dasm (9.55 % of base)
          80 : 6704.dasm (4.40 % of base)
          74 : 9965.dasm (7.89 % of base)
          72 : 15987.dasm (6.49 % of base)
          72 : 17484.dasm (4.88 % of base)

Top file improvements (bytes):
        -122 : 28329.dasm (-10.18 % of base)
         -64 : 4570.dasm (-8.96 % of base)
         -58 : 16273.dasm (-6.58 % of base)
         -54 : 13887.dasm (-5.20 % of base)
         -46 : 23925.dasm (-1.50 % of base)
         -42 : 6796.dasm (-2.92 % of base)
         -30 : 2099.dasm (-7.50 % of base)
         -30 : 40858.dasm (-5.19 % of base)
         -28 : 2064.dasm (-0.97 % of base)
         -28 : 28434.dasm (-6.60 % of base)
         -28 : 39635.dasm (-9.72 % of base)
         -28 : 13783.dasm (-8.28 % of base)
         -28 : 2438.dasm (-3.33 % of base)
         -26 : 23097.dasm (-3.12 % of base)
         -26 : 23970.dasm (-3.99 % of base)
         -24 : 18588.dasm (-4.05 % of base)
         -24 : 1986.dasm (-1.34 % of base)
         -22 : 15454.dasm (-8.15 % of base)
         -22 : 2410.dasm (-2.81 % of base)
         -22 : 33849.dasm (-0.93 % of base)

65 total files with Code Size differences (29 improved, 36 regressed), 20 unchanged.

Top method regressions (bytes):
         254 (7.07 % of base) : 13962.dasm - ProtoBuf.Meta.MetaType:NormalizeProtoMember(System.Reflection.MemberInfo,int,ubyte,ubyte,System.Collections.Generic.List`1[ProtoBuf.Meta.AttributeMap],int,ubyte,byref,System.Reflection.MemberInfo):ProtoBuf.ProtoMemberAttribute (Tier0-FullOpts)
         184 (4.02 % of base) : 24118.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier0-FullOpts)
         150 (5.51 % of base) : 824.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateMethods(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeMethodInfo[]:this (Tier0-FullOpts)
         150 (11.21 % of base) : 7514.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (Tier0-FullOpts)
         136 (7.57 % of base) : 1562.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (Tier0-FullOpts)
         134 (12.20 % of base) : 3006.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (Tier0-FullOpts)
         132 (5.00 % of base) : 7073.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier0-FullOpts)
         124 (10.56 % of base) : 40672.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier0-FullOpts)
         122 (19.74 % of base) : 21929.dasm - System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
         118 (7.89 % of base) : 8326.dasm - System.Text.Json.Tests.Perf_Depth:WriteDepth(System.Text.Json.Utf8JsonWriter,int) (Tier0-FullOpts)
         114 (10.65 % of base) : 9173.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,System.__Canon]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,System.__Canon],Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,System.Nullable`1[int],System.__Canon,ubyte,ubyte,byref):ubyte:this (Tier0-FullOpts)
         108 (7.58 % of base) : 14411.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier0-FullOpts)
          96 (7.97 % of base) : 2298.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
          90 (9.11 % of base) : 1399.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (Tier0-FullOpts)
          88 (5.89 % of base) : 14884.dasm - System.Number+Grisu3:TryDigitGenShortest(byref,byref,byref,System.Span`1[ubyte],byref,byref):ubyte (Tier0-FullOpts)
          84 (9.55 % of base) : 28301.dasm - System.Uri:CheckCanonical(uint,byref,int,ushort):int:this (Tier0-FullOpts)
          80 (4.40 % of base) : 6704.dasm - System.Reflection.Emit.SignatureHelper:AddOneArgTypeHelperWorker(System.Type,ubyte):this (Tier0-FullOpts)
          74 (7.89 % of base) : 9965.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier0-FullOpts)
          72 (4.88 % of base) : 17484.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.ValueTuple`3[System.__Canon,System.__Canon,ubyte]]:MoveNext():ubyte:this (Tier0-FullOpts)
          72 (6.49 % of base) : 15987.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (Tier0-FullOpts)

Top method improvements (bytes):
        -122 (-10.18 % of base) : 28329.dasm - System.UriHelper:UnescapeString(uint,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (Tier0-FullOpts)
         -64 (-8.96 % of base) : 4570.dasm - Interop+Sys:GetCwd():System.String (Tier0-FullOpts)
         -58 (-6.58 % of base) : 16273.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:IntroSort(System.Span`1[int],System.Span`1[int],int) (Tier0-FullOpts)
         -54 (-5.20 % of base) : 13887.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateEvents(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Reflection.RuntimeEventInfo],byref):this (Tier0-FullOpts)
         -46 (-1.50 % of base) : 23925.dasm - System.Text.RegularExpressions.RegexNode:CanBeMadeAtomic(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte,ubyte):ubyte (Tier0-FullOpts)
         -42 (-2.92 % of base) : 6796.dasm - ProtoBuf.Meta.MetaType:ResolveTupleConstructor(System.Type,byref):System.Reflection.ConstructorInfo (Tier0-FullOpts)
         -30 (-7.50 % of base) : 2099.dasm - System.Reflection.Metadata.MetadataReader:GetDeclaringType(System.Reflection.Metadata.MethodDefinitionHandle):System.Reflection.Metadata.TypeDefinitionHandle:this (Tier1)
         -30 (-5.19 % of base) : 40858.dasm - System.Reflection.RuntimeMethodInfo:ComputeAndUpdateInvocationFlags():uint:this (Tier1)
         -28 (-8.28 % of base) : 13783.dasm - ProtoBuf.Internal.DynamicStub:<SlowGet>g__ResolveProxies|9_1(System.Type):System.Type (Tier0-FullOpts)
         -28 (-6.60 % of base) : 28434.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`2[int,int],System.__Canon]:FindValue(System.ValueTuple`2[int,int]):byref:this (Tier0-FullOpts)
         -28 (-0.97 % of base) : 2064.dasm - System.Diagnostics.FileVersionInfo:TryGetAttributeName(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.CustomAttribute,byref,byref):ubyte (Tier1)
         -28 (-9.72 % of base) : 39635.dasm - System.Diagnostics.Metrics.Meter:GetCachedInstrument(System.Collections.Generic.List`1[System.Diagnostics.Metrics.Instrument],System.Type,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Diagnostics.Metrics.Instrument (Tier0-FullOpts)
         -28 (-3.33 % of base) : 2438.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateRtFields(System.RuntimeType+RuntimeTypeCache+Filter,uint,int,System.RuntimeType,byref):this (Tier0-FullOpts)
         -26 (-3.12 % of base) : 23097.dasm - System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this (Tier1)
         -26 (-3.99 % of base) : 23970.dasm - System.Reflection.SignatureTypeExtensions:MatchesExactly(System.Reflection.SignatureType,System.Type):ubyte (Tier0-FullOpts)
         -24 (-4.05 % of base) : 18588.dasm - System.Collections.Frozen.ItemsFrozenSet`2[System.__Canon,System.Collections.Frozen.DefaultFrozenSet`1+GSW[System.__Canon]]:.ctor(System.Collections.Generic.HashSet`1[System.__Canon],ubyte):this (Tier0-FullOpts)
         -24 (-1.34 % of base) : 1986.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier0-FullOpts)
         -22 (-2.81 % of base) : 2410.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor(int,int,ubyte,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier0-FullOpts)
         -22 (-5.29 % of base) : 40764.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:FindValue(long):byref:this (Tier0-FullOpts)
         -22 (-8.15 % of base) : 15454.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[ulong]:MoveNext():ubyte:this (Tier0-FullOpts)

Top method regressions (percentages):
          34 (20.99 % of base) : 2961.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier0-FullOpts)
         122 (19.74 % of base) : 21929.dasm - System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
          12 (12.77 % of base) : 4831.dasm - System.Linq.Enumerable+SelectArrayIterator`2[int,System.__Canon]:Fill(System.ReadOnlySpan`1[int],System.Span`1[System.__Canon],System.Func`2[int,System.__Canon]) (Tier0-FullOpts)
         134 (12.20 % of base) : 3006.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (Tier0-FullOpts)
         150 (11.21 % of base) : 7514.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (Tier0-FullOpts)
           8 (10.81 % of base) : 6509.dasm - System.Linq.Enumerable+SelectArrayIterator`2[ubyte,ushort]:Fill(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],System.Func`2[ubyte,ushort]) (Tier0-FullOpts)
         114 (10.65 % of base) : 9173.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,System.__Canon]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,System.__Canon],Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,System.Nullable`1[int],System.__Canon,ubyte,ubyte,byref):ubyte:this (Tier0-FullOpts)
          36 (10.59 % of base) : 1730.dasm - System.Reflection.Metadata.Ecma335.TypeDefTableReader:FindTypeContainingMethod(int,int):System.Reflection.Metadata.TypeDefinitionHandle:this (Tier0-FullOpts)
         124 (10.56 % of base) : 40672.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier0-FullOpts)
          30 (9.55 % of base) : 366.dasm - System.Globalization.CultureData:IsValidCultureName(System.String,byref,byref):ubyte (Tier0-FullOpts)
          84 (9.55 % of base) : 28301.dasm - System.Uri:CheckCanonical(uint,byref,int,ushort):int:this (Tier0-FullOpts)
          68 (9.39 % of base) : 17193.dasm - System.Collections.Frozen.KeysAndValuesFrozenDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):this (Tier0-FullOpts)
          38 (9.22 % of base) : 3589.dasm - System.Text.Encodings.Web.OptimizedInboxTextEncoder+AsciiPreescapedData:PopulatePreescapedData(byref,System.Text.Encodings.Web.ScalarEscaperBase):this (Tier0-FullOpts)
          90 (9.11 % of base) : 1399.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (Tier0-FullOpts)
          18 (8.82 % of base) : 9318.dasm - System.UInt128:<op_Division>g__SubtractDivisor|111_3(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier0-FullOpts)
          32 (8.56 % of base) : 39643.dasm - System.Diagnostics.Metrics.Instrument:Publish():this (Tier0-FullOpts)
           4 (8.00 % of base) : 24128.dasm - System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (Tier0-FullOpts)
          96 (7.97 % of base) : 2298.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
          12 (7.89 % of base) : 15766.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier0-FullOpts)
          74 (7.89 % of base) : 9965.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier0-FullOpts)

Top method improvements (percentages):
         -16 (-15.09 % of base) : 26347.dasm - System.Diagnostics.Tracing.EventListener:get_EventListenersLock():System.Object (Tier1)
         -16 (-15.09 % of base) : 26647.dasm - System.Diagnostics.Tracing.EventListener:get_EventListenersLock():System.Object (Tier1)
         -16 (-15.09 % of base) : 289.dasm - System.Diagnostics.Tracing.EventListener:get_EventListenersLock():System.Object (Tier1)
        -122 (-10.18 % of base) : 28329.dasm - System.UriHelper:UnescapeString(uint,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (Tier0-FullOpts)
         -12 (-10.17 % of base) : 4624.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (Tier0-FullOpts)
         -28 (-9.72 % of base) : 39635.dasm - System.Diagnostics.Metrics.Meter:GetCachedInstrument(System.Collections.Generic.List`1[System.Diagnostics.Metrics.Instrument],System.Type,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Diagnostics.Metrics.Instrument (Tier0-FullOpts)
         -64 (-8.96 % of base) : 4570.dasm - Interop+Sys:GetCwd():System.String (Tier0-FullOpts)
         -28 (-8.28 % of base) : 13783.dasm - ProtoBuf.Internal.DynamicStub:<SlowGet>g__ResolveProxies|9_1(System.Type):System.Type (Tier0-FullOpts)
         -22 (-8.15 % of base) : 15454.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[ulong]:MoveNext():ubyte:this (Tier0-FullOpts)
         -30 (-7.50 % of base) : 2099.dasm - System.Reflection.Metadata.MetadataReader:GetDeclaringType(System.Reflection.Metadata.MethodDefinitionHandle):System.Reflection.Metadata.TypeDefinitionHandle:this (Tier1)
         -28 (-6.60 % of base) : 28434.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`2[int,int],System.__Canon]:FindValue(System.ValueTuple`2[int,int]):byref:this (Tier0-FullOpts)
         -58 (-6.58 % of base) : 16273.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:IntroSort(System.Span`1[int],System.Span`1[int],int) (Tier0-FullOpts)
          -6 (-5.45 % of base) : 9.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(uint,System.Object):System.Object (Tier0-FullOpts)
         -22 (-5.29 % of base) : 40764.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:FindValue(long):byref:this (Tier0-FullOpts)
         -54 (-5.20 % of base) : 13887.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateEvents(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Reflection.RuntimeEventInfo],byref):this (Tier0-FullOpts)
         -30 (-5.19 % of base) : 40858.dasm - System.Reflection.RuntimeMethodInfo:ComputeAndUpdateInvocationFlags():uint:this (Tier1)
          -8 (-4.65 % of base) : 16722.dasm - System.HexConverter:EncodeToUtf16(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],uint) (Tier0-FullOpts)
          -4 (-4.44 % of base) : 4324.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier0-FullOpts)
         -24 (-4.05 % of base) : 18588.dasm - System.Collections.Frozen.ItemsFrozenSet`2[System.__Canon,System.Collections.Frozen.DefaultFrozenSet`1+GSW[System.__Canon]]:.ctor(System.Collections.Generic.HashSet`1[System.__Canon],ubyte):this (Tier0-FullOpts)
         -26 (-3.99 % of base) : 23970.dasm - System.Reflection.SignatureTypeExtensions:MatchesExactly(System.Reflection.SignatureType,System.Type):ubyte (Tier0-FullOpts)


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: 16812366 (overridden on cmd)
Total bytes of diff: 16939320 (overridden on cmd)
Total bytes of delta: 126954 (0.76 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        2270 : 56373.dasm (7.80 % of base)
        1246 : 24936.dasm (4.66 % of base)
        1120 : 41269.dasm (31.58 % of base)
        1106 : 25542.dasm (33.62 % of base)
        1024 : 26373.dasm (10.34 % of base)
         488 : 22665.dasm (4.88 % of base)
         482 : 63922.dasm (5.93 % of base)
         480 : 51607.dasm (10.07 % of base)
         450 : 65192.dasm (4.18 % of base)
         396 : 57138.dasm (5.62 % of base)
         388 : 18136.dasm (3.62 % of base)
         382 : 18115.dasm (3.81 % of base)
         380 : 48895.dasm (49.61 % of base)
         380 : 59122.dasm (6.39 % of base)
         372 : 65209.dasm (4.18 % of base)
         368 : 52773.dasm (10.88 % of base)
         360 : 52273.dasm (10.36 % of base)
         350 : 10811.dasm (11.29 % of base)
         340 : 38920.dasm (6.81 % of base)
         336 : 47538.dasm (3.15 % of base)

Top file improvements (bytes):
        -228 : 8695.dasm (-7.33 % of base)
        -214 : 54681.dasm (-5.34 % of base)
        -128 : 43975.dasm (-9.55 % of base)
        -126 : 12555.dasm (-12.35 % of base)
        -122 : 11477.dasm (-11.03 % of base)
        -122 : 38446.dasm (-10.18 % of base)
        -120 : 63892.dasm (-12.74 % of base)
        -120 : 51679.dasm (-17.29 % of base)
        -120 : 45853.dasm (-12.15 % of base)
        -106 : 18685.dasm (-4.81 % of base)
        -104 : 48755.dasm (-8.04 % of base)
         -90 : 72997.dasm (-10.14 % of base)
         -88 : 10716.dasm (-1.10 % of base)
         -82 : 63651.dasm (-0.79 % of base)
         -82 : 53075.dasm (-1.00 % of base)
         -80 : 28775.dasm (-6.06 % of base)
         -78 : 7860.dasm (-14.03 % of base)
         -76 : 37203.dasm (-20.77 % of base)
         -76 : 45720.dasm (-4.02 % of base)
         -76 : 9928.dasm (-6.43 % of base)

80 total files with Code Size differences (40 improved, 40 regressed), 20 unchanged.

Top method regressions (bytes):
        2270 (7.80 % of base) : 56373.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
        1246 (4.66 % of base) : 24936.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
        1120 (31.58 % of base) : 41269.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
        1106 (33.62 % of base) : 25542.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
        1024 (10.34 % of base) : 26373.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
         488 (4.88 % of base) : 22665.dasm - Utf8Json.Internal.NumberConverter:WriteInt64(byref,int,long):int (Tier1)
         482 (5.93 % of base) : 63922.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffset(System.IO.TextReader,ushort[]):System.DateTimeOffset (Tier0-FullOpts)
         480 (10.07 % of base) : 51607.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
         450 (4.18 % of base) : 65192.dasm - Utf8Json.Formatters.MicroBenchmarks_Serializers_MyEventsListerItemFormatter2:Serialize(byref,MicroBenchmarks.Serializers.MyEventsListerItem,Utf8Json.IJsonFormatterResolver):this (Tier1)
         396 (5.62 % of base) : 57138.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.Location (FullOpts)
         388 (3.62 % of base) : 18136.dasm - Utf8Json.Formatters.MicroBenchmarks_Serializers_ActiveOrUpcomingEventFormatter2:Serialize(byref,MicroBenchmarks.Serializers.ActiveOrUpcomingEvent,Utf8Json.IJsonFormatterResolver):this (Tier1)
         382 (3.81 % of base) : 18115.dasm - Utf8Json.JsonWriter:WriteInt64(long):this (Tier1)
         380 (6.39 % of base) : 59122.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.Location (FullOpts)
         380 (49.61 % of base) : 48895.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier0-FullOpts)
         372 (4.18 % of base) : 65209.dasm - MessagePack.Formatters.MicroBenchmarks_Serializers_MyEventsListerItemFormatter2:Serialize(byref,int,MicroBenchmarks.Serializers.MyEventsListerItem,MessagePack.IFormatterResolver):int:this (Tier1)
         368 (10.88 % of base) : 52773.dasm - System.Reflection.PortableExecutable.PEBuilder:WritePEHeader(System.Reflection.Metadata.BlobBuilder,System.Reflection.PortableExecutable.PEDirectoriesBuilder,System.Collections.Immutable.ImmutableArray`1[System.Reflection.PortableExecutable.PEBuilder+SerializedSection]):this (Tier1)
         360 (10.36 % of base) : 52273.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__checkConstraintLanguageVersionAndRuntimeSupportForConversion|210_2(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
         350 (11.29 % of base) : 10811.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:X500DistinguishedNameDecode(ubyte[],ubyte,ubyte,ubyte,System.String,System.String,ubyte):System.String (Tier0-FullOpts)
         340 (6.81 % of base) : 38920.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier0-FullOpts)
         336 (3.15 % of base) : 47538.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0-FullOpts)

Top method improvements (bytes):
        -228 (-7.33 % of base) : 8695.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (Tier0-FullOpts)
        -214 (-5.34 % of base) : 54681.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (Tier1)
        -128 (-9.55 % of base) : 43975.dasm - System.Xml.XmlWellFormedWriter:PushNamespaceExplicit(System.String,System.String):ubyte:this (Tier1)
        -126 (-12.35 % of base) : 12555.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindMatch(int,System.ReadOnlySpan`1[ushort],int,System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+PerThreadData[ulong]):System.Text.RegularExpressions.Symbolic.SymbolicMatch:this (Tier1)
        -122 (-11.03 % of base) : 11477.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509CertificateReader+<>c:<GetPolicyData>b__63_0(Microsoft.Win32.SafeHandles.SafeX509Handle):System.Security.Cryptography.X509Certificates.PolicyData:this (Tier0-FullOpts)
        -122 (-10.18 % of base) : 38446.dasm - System.UriHelper:UnescapeString(uint,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (Tier0-FullOpts)
        -120 (-12.15 % of base) : 45853.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (Tier0-FullOpts)
        -120 (-17.29 % of base) : 51679.dasm - Microsoft.CodeAnalysis.CSharp.BoundConversion:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.ConversionGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundConversion:this (Tier1)
        -120 (-12.74 % of base) : 63892.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (Tier0-FullOpts)
        -106 (-4.81 % of base) : 18685.dasm - System.Reflection.Emit.CustomAttributeBuilder:EmitValue(System.IO.BinaryWriter,System.Type,System.Object) (Tier0-FullOpts)
        -104 (-8.04 % of base) : 48755.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (Tier1)
         -90 (-10.14 % of base) : 72997.dasm - SciMark2.kernel:CopyMatrix(double[][],double[][]) (Tier0-FullOpts)
         -88 (-1.10 % of base) : 10716.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (Tier1)
         -82 (-1.00 % of base) : 53075.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier0-FullOpts)
         -82 (-0.79 % of base) : 63651.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier0-FullOpts)
         -80 (-6.06 % of base) : 28775.dasm - System.Guid:TryParseExactD(System.ReadOnlySpan`1[ushort],byref):ubyte (Tier1)
         -78 (-14.03 % of base) : 7860.dasm - Newtonsoft.Json.Utilities.EnumUtils:ToUInt64(System.Object):ulong (Tier1)
         -76 (-6.43 % of base) : 9928.dasm - Interop+Crypto:HashAlgorithmToEvp(System.String):int (Tier1)
         -76 (-4.02 % of base) : 45720.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)
         -76 (-20.77 % of base) : 37203.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (Tier1)

Top method regressions (percentages):
          12 (54.55 % of base) : 60578.dasm - System.ArgumentOutOfRangeException:ThrowIfGreaterThanOrEqual[int](int,int,System.String) (Tier1)
         210 (51.47 % of base) : 51900.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataExpression(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataExpression:this (Tier1)
         380 (49.61 % of base) : 48895.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier0-FullOpts)
         160 (48.19 % of base) : 14312.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (Tier0-FullOpts)
         306 (39.95 % of base) : 51898.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (Tier1)
         104 (39.10 % of base) : 33823.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(ushort[],int,int,byref):int (Tier0-FullOpts)
        1106 (33.62 % of base) : 25542.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
         128 (32.00 % of base) : 3570.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
        1120 (31.58 % of base) : 41269.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
          28 (31.11 % of base) : 5901.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
          94 (30.92 % of base) : 2614.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
         230 (29.95 % of base) : 25178.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.Object[]):System.String (Tier0-FullOpts)
         194 (29.48 % of base) : 49676.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier0-FullOpts)
          34 (28.33 % of base) : 65000.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier0-FullOpts)
          14 (26.92 % of base) : 54017.dasm - ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.__Canon,System.__Canon]:.ctor(int,int,int,int,ProtoBuf.Serializers.RepeatedSerializerStub):this (Tier1)
          74 (26.24 % of base) : 54654.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanMultiLineComment(byref):ubyte:this (Tier0-FullOpts)
         176 (25.00 % of base) : 47748.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:HasYieldOperations(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier0-FullOpts)
          30 (24.19 % of base) : 12621.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier0-FullOpts)
         212 (22.89 % of base) : 49637.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier0-FullOpts)
          10 (22.73 % of base) : 25719.dasm - System.Net.Sockets.SocketErrorPal:GetSocketErrorForNativeError(int):int (Tier1)

Top method improvements (percentages):
         -74 (-26.62 % of base) : 37204.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (Tier1)
         -10 (-22.73 % of base) : 24983.dasm - Jil.Common.Utils+<>c__DisplayClass9_0:<IdealMemberOrderForWriting>b__6(System.Reflection.FieldInfo):int:this (Tier1)
         -44 (-21.36 % of base) : 31944.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateMethod(System.Xml.Serialization.TypeMapping):this (Tier1)
         -76 (-20.77 % of base) : 37203.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (Tier1)
         -18 (-20.45 % of base) : 38540.dasm - System.Runtime.Serialization.XmlFormatGeneratorStatics:get_MemberNamesField():System.Reflection.FieldInfo (Tier1)
         -10 (-19.23 % of base) : 26133.dasm - MessagePack.Internal.BuiltinResolverGetFormatterHelper:GetFormatter(System.Type):System.Object (Tier1)
         -10 (-19.23 % of base) : 17985.dasm - Utf8Json.Resolvers.BuiltinResolver+BuiltinResolverGetFormatterHelper:GetFormatter(System.Type):System.Object (Tier1)
         -10 (-18.52 % of base) : 46526.dasm - Microsoft.CodeAnalysis.SpecialTypes:GetTypeFromMetadataName(System.String):byte (Tier1)
        -120 (-17.29 % of base) : 51679.dasm - Microsoft.CodeAnalysis.CSharp.BoundConversion:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.ConversionGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundConversion:this (Tier1)
         -10 (-16.13 % of base) : 21934.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject:HasValue(BenchmarkDotNet.Characteristics.Characteristic):ubyte:this (Tier1)
          -8 (-16.00 % of base) : 8722.dasm - Newtonsoft.Json.Serialization.JsonTypeReflector:get_DynamicCodeGeneration():ubyte (Tier1)
         -16 (-15.09 % of base) : 2995.dasm - System.Collections.Generic.ValueListBuilder`1[ushort]:AsSpan():System.ReadOnlySpan`1[ushort]:this (Tier1)
         -16 (-15.09 % of base) : 2257.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:get_Text():System.ReadOnlySpan`1[ushort]:this (Tier1)
         -16 (-15.09 % of base) : 42010.dasm - System.Text.ValueStringBuilder:AsSpan():System.ReadOnlySpan`1[ushort]:this (Tier1)
         -54 (-15.08 % of base) : 60779.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier0-FullOpts)
         -32 (-14.81 % of base) : 53897.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (Tier1)
          -6 (-14.29 % of base) : 6962.dasm - System.Reflection.SignatureGenericMethodParameterType:.ctor(int):this (Tier1)
          -6 (-14.29 % of base) : 6963.dasm - System.Reflection.SignatureGenericParameterType:.ctor(int):this (Tier1)
         -78 (-14.03 % of base) : 7860.dasm - Newtonsoft.Json.Utilities.EnumUtils:ToUInt64(System.Object):ulong (Tier1)
         -14 (-14.00 % of base) : 43053.dasm - System.Runtime.Serialization.XmlFormatGeneratorStatics:get_ChildElementNamespacesProperty():System.Reflection.PropertyInfo (Tier1)


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: 315775792 (overridden on cmd)
Total bytes of diff: 316016902 (overridden on cmd)
Total bytes of delta: 241110 (0.08 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
        4084 : 409677.dasm (3.88 % of base)
        4084 : 415420.dasm (3.88 % of base)
        4084 : 415422.dasm (3.88 % of base)
        4084 : 409691.dasm (3.88 % of base)
        3172 : 410121.dasm (2.37 % of base)
        2962 : 409488.dasm (1.86 % of base)
        2962 : 410131.dasm (1.86 % of base)
        2678 : 332847.dasm (38.22 % of base)
        2662 : 23492.dasm (37.93 % of base)
        1586 : 288779.dasm (7.59 % of base)
        1586 : 472049.dasm (7.59 % of base)
        1576 : 409474.dasm (1.27 % of base)
        1274 : 409749.dasm (1.14 % of base)
        1008 : 365149.dasm (19.21 % of base)
         972 : 364808.dasm (38.30 % of base)
         876 : 409813.dasm (0.78 % of base)
         840 : 420905.dasm (0.15 % of base)
         740 : 422145.dasm (31.65 % of base)
         598 : 409481.dasm (0.39 % of base)
         536 : 123648.dasm (22.09 % of base)

Top file improvements (bytes):
       -3632 : 410026.dasm (-30.86 % of base)
       -2764 : 317239.dasm (-6.62 % of base)
       -2586 : 317244.dasm (-6.07 % of base)
       -2280 : 289253.dasm (-25.61 % of base)
       -2280 : 472328.dasm (-25.61 % of base)
       -1666 : 410126.dasm (-1.09 % of base)
       -1604 : 410537.dasm (-6.37 % of base)
       -1334 : 306897.dasm (-39.42 % of base)
       -1322 : 409467.dasm (-1.12 % of base)
       -1284 : 307870.dasm (-8.94 % of base)
       -1264 : 317223.dasm (-3.75 % of base)
       -1204 : 317231.dasm (-3.66 % of base)
        -918 : 312068.dasm (-33.85 % of base)
        -748 : 278526.dasm (-28.48 % of base)
        -738 : 317228.dasm (-2.13 % of base)
        -728 : 317214.dasm (-2.77 % of base)
        -708 : 312089.dasm (-44.64 % of base)
        -706 : 307324.dasm (-44.57 % of base)
        -634 : 376493.dasm (-0.47 % of base)
        -634 : 465677.dasm (-14.79 % of base)

86 total files with Code Size differences (46 improved, 40 regressed), 20 unchanged.

Top method regressions (bytes):
        4084 (3.88 % of base) : 409677.dasm - overlddiv:TestEntryPoint():int (FullOpts)
        4084 (3.88 % of base) : 415420.dasm - overlddiv:TestEntryPoint():int (FullOpts)
        4084 (3.88 % of base) : 415422.dasm - overldrem:TestEntryPoint():int (FullOpts)
        4084 (3.88 % of base) : 409691.dasm - overldrem:TestEntryPoint():int (FullOpts)
        3172 (2.37 % of base) : 410121.dasm - u4rem:TestEntryPoint():int (FullOpts)
        2962 (1.86 % of base) : 409488.dasm - i8rem:TestEntryPoint():int (FullOpts)
        2962 (1.86 % of base) : 410131.dasm - u8rem:TestEntryPoint():int (FullOpts)
        2678 (38.22 % of base) : 332847.dasm - Program:Main():int (FullOpts)
        2662 (37.93 % of base) : 23492.dasm - Program:Main():int (Tier0-FullOpts)
        1586 (7.59 % of base) : 472049.dasm - CseTest.Test_Main:TestEntryPoint():int (FullOpts)
        1586 (7.59 % of base) : 288779.dasm - CseTest.Test_Main:TestEntryPoint():int (Tier0-FullOpts)
        1576 (1.27 % of base) : 409474.dasm - i4rem:TestEntryPoint():int (FullOpts)
        1274 (1.14 % of base) : 409749.dasm - r4rem:TestEntryPoint():int (FullOpts)
        1008 (19.21 % of base) : 365149.dasm - div_r4._div:main():int (FullOpts)
         972 (38.30 % of base) : 364808.dasm - add_r4._add:main():int (FullOpts)
         876 (0.78 % of base) : 409813.dasm - r8rem:TestEntryPoint():int (FullOpts)
         840 (0.15 % of base) : 420905.dasm - Repro.Program:Test(int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int):int (FullOpts)
         740 (31.65 % of base) : 422145.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
         598 (0.39 % of base) : 409481.dasm - i8div:TestEntryPoint():int (FullOpts)
         536 (22.09 % of base) : 123648.dasm - VectorTest:init() (Tier0-FullOpts)

Top method improvements (bytes):
       -3632 (-30.86 % of base) : 410026.dasm - Test_throwinfinally_50_cs.Class1:foo(int) (FullOpts)
       -2764 (-6.62 % of base) : 317239.dasm - lclfldrem:TestEntryPoint():int (FullOpts)
       -2586 (-6.07 % of base) : 317244.dasm - lclfldrem:TestEntryPoint():int (FullOpts)
       -2280 (-25.61 % of base) : 472328.dasm - SimpleArray_01.Test:Test1() (FullOpts)
       -2280 (-25.61 % of base) : 289253.dasm - SimpleArray_01.Test:Test1() (Tier0-FullOpts)
       -1666 (-1.09 % of base) : 410126.dasm - u8div:TestEntryPoint():int (FullOpts)
       -1604 (-6.37 % of base) : 410537.dasm - LongMulOn32BitTest:Main():int (FullOpts)
       -1334 (-39.42 % of base) : 306897.dasm - ILCompiler.Sorting.Implementation.MergeSortCore`5+<ParallelSort>d__2[System.__Canon,System.__Canon,ILCompiler.Sorting.Implementation.ListAccessor`1[System.__Canon],System.__Canon,ILCompiler.AllowDuplicates]:MoveNext():this (Tier1)
       -1322 (-1.12 % of base) : 409467.dasm - i4div:TestEntryPoint():int (FullOpts)
       -1284 (-8.94 % of base) : 307870.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
       -1264 (-3.75 % of base) : 317223.dasm - lclflddiv:TestEntryPoint():int (FullOpts)
       -1204 (-3.66 % of base) : 317231.dasm - lclfldmul:TestEntryPoint():int (FullOpts)
        -918 (-33.85 % of base) : 312068.dasm - ILCompiler.Sorting.Implementation.MergeSortCore`5+<ParallelSort>d__2[System.__Canon,System.__Canon,ILCompiler.Sorting.Implementation.ListAccessor`1[System.__Canon],ILCompiler.MergeSortApi+ComparisonWrapper`1[System.__Canon],ILCompiler.RequireTotalOrderAssert]:MoveNext():this (Tier1)
        -748 (-28.48 % of base) : 278526.dasm - System.Reflection.Metadata.MetadataReader:.ctor(uint,int,int,System.Reflection.Metadata.MetadataStringDecoder,System.Object):this (Tier1)
        -738 (-2.13 % of base) : 317228.dasm - lclflddiv:TestEntryPoint():int (FullOpts)
        -728 (-2.77 % of base) : 317214.dasm - lclfldadd:TestEntryPoint():int (FullOpts)
        -708 (-44.64 % of base) : 312089.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DelayLoadHelperImport:AppendMangledName(ILCompiler.NameMangler,Internal.Text.Utf8StringBuilder):this (Tier1)
        -706 (-44.57 % of base) : 307324.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DelayLoadHelperImport:AppendMangledName(ILCompiler.NameMangler,Internal.Text.Utf8StringBuilder):this (Tier1)
        -634 (-14.79 % of base) : 465677.dasm - HFATest.TestCase:TestEntryPoint():int (FullOpts)
        -634 (-0.47 % of base) : 376493.dasm - Program:TestEntryPoint():int (FullOpts)

Top method regressions (percentages):
         298 (92.55 % of base) : 299875.dasm - Internal.TypeSystem.MetadataVirtualMethodAlgorithm:ResolveVariantInterfaceMethodToStaticVirtualMethodOnType(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MetadataType):Internal.TypeSystem.MethodDesc (Tier0-FullOpts)
         382 (49.61 % of base) : 379654.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         400 (46.19 % of base) : 114035.dasm - System.Reflection.Emit.DynamicMethod:Invoke(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier1)
          18 (45.00 % of base) : 211012.dasm - System.MemoryExtensions:AsMemory(System.String):System.ReadOnlyMemory`1[ushort] (Tier1)
          18 (45.00 % of base) : 70745.dasm - System.MemoryExtensions:AsMemory(System.String):System.ReadOnlyMemory`1[ushort] (Tier1)
          88 (43.56 % of base) : 375091.dasm - MainApp:TestEntryPoint():int (FullOpts)
         246 (42.86 % of base) : 409434.dasm - Test_FloatOvfToInt2.FloatOvfToInt:TestValuesDoubleByteVN():int (FullOpts)
         246 (42.86 % of base) : 409431.dasm - Test_FloatOvfToInt2.FloatOvfToInt:TestValuesDoubleShortVN():int (FullOpts)
         306 (39.95 % of base) : 380387.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (FullOpts)
         104 (39.10 % of base) : 382424.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(ushort[],int,int,byref):int (FullOpts)
         104 (39.10 % of base) : 151622.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(ushort[],int,int,byref):int (Tier0-FullOpts)
         972 (38.30 % of base) : 364808.dasm - add_r4._add:main():int (FullOpts)
        2678 (38.22 % of base) : 332847.dasm - Program:Main():int (FullOpts)
        2662 (37.93 % of base) : 23492.dasm - Program:Main():int (Tier0-FullOpts)
          80 (37.04 % of base) : 319790.dasm - testout1:Sub_Funclet_190():int (FullOpts)
          80 (37.04 % of base) : 319400.dasm - testout1:Sub_Funclet_190():int (FullOpts)
         100 (35.97 % of base) : 383232.dasm - System.Xml.XmlConverter:ToChars(double,ubyte[],int):int (FullOpts)
         138 (34.85 % of base) : 360371.dasm - JIT.HardwareIntrinsics.General._Vector64.VectorTernaryOpTest__ConditionalSelectInt64:.cctor() (FullOpts)
         138 (34.85 % of base) : 103892.dasm - JIT.HardwareIntrinsics.General._Vector64.VectorTernaryOpTest__ConditionalSelectInt64:.cctor() (Tier0-FullOpts)
         138 (34.85 % of base) : 360456.dasm - JIT.HardwareIntrinsics.General._Vector64.VectorTernaryOpTest__ConditionalSelectUInt64:.cctor() (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)
        -284 (-66.98 % of base) : 212349.dasm - System.Number:Int32ToDecStr(int):System.String (Tier1)
        -598 (-65.71 % of base) : 305291.dasm - System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this (Tier1)
        -598 (-65.71 % of base) : 311591.dasm - System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this (Tier1)
        -550 (-65.48 % of base) : 311285.dasm - Internal.TypeSystem.CastingHelper:CanCastToClassOrInterface(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect):ubyte (Tier1)
        -542 (-64.07 % of base) : 167086.dasm - System.Diagnostics.Tracing.EventParameterInfo:GetMetadataLength(byref):ubyte:this (Instrumented Tier1)
        -440 (-56.85 % of base) : 301507.dasm - Internal.TypeSystem.CastingHelper:CanCastToClassOrInterface(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect):ubyte (Tier1)
        -276 (-53.91 % of base) : 158105.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.Type):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -418 (-49.29 % of base) : 312491.dasm - System.IO.Strategies.OSFileStreamStrategy:.ctor(System.String,int,int,int,int,long,System.Nullable`1[int]):this (Tier1)
        -604 (-48.63 % of base) : 167088.dasm - System.Diagnostics.Tracing.EventParameterInfo:GenerateMetadata(uint,byref,uint):ubyte:this (Instrumented Tier1)
        -518 (-48.32 % of base) : 310660.dasm - Interop+Sys:GetCwd():System.String (Tier1)
        -508 (-47.83 % of base) : 278117.dasm - Interop+Sys:GetCwd():System.String (Tier1)
        -384 (-47.17 % of base) : 278372.dasm - System.IO.Strategies.OSFileStreamStrategy:.ctor(System.String,int,int,int,int,long,System.Nullable`1[int]):this (Tier1)
        -512 (-46.38 % of base) : 308023.dasm - Interop+Sys:GetCwd():System.String (Tier1)
        -180 (-45.23 % of base) : 311186.dasm - System.Reflection.Metadata.MetadataReader:GetDeclaringType(System.Reflection.Metadata.MethodDefinitionHandle):System.Reflection.Metadata.TypeDefinitionHandle:this (Tier1)
        -178 (-44.72 % of base) : 304666.dasm - System.Reflection.Metadata.MetadataReader:GetDeclaringType(System.Reflection.Metadata.MethodDefinitionHandle):System.Reflection.Metadata.TypeDefinitionHandle:this (Tier1)
        -708 (-44.64 % of base) : 312089.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DelayLoadHelperImport:AppendMangledName(ILCompiler.NameMangler,Internal.Text.Utf8StringBuilder):this (Tier1)
        -706 (-44.57 % of base) : 307324.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DelayLoadHelperImport:AppendMangledName(ILCompiler.NameMangler,Internal.Text.Utf8StringBuilder):this (Tier1)


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: 31059614 (overridden on cmd)
Total bytes of diff: 31155840 (overridden on cmd)
Total bytes of delta: 96226 (0.31 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       12744 : 24087.dasm (10.73 % of base)
        1744 : 115645.dasm (38.38 % of base)
        1322 : 1404.dasm (1.83 % of base)
        1074 : 194442.dasm (101.13 % of base)
         966 : 58506.dasm (57.98 % of base)
         864 : 158017.dasm (3.91 % of base)
         552 : 58591.dasm (74.19 % of base)
         514 : 58485.dasm (44.08 % of base)
         478 : 58768.dasm (39.64 % of base)
         414 : 58618.dasm (8.97 % of base)
         376 : 58514.dasm (25.23 % of base)
         364 : 58504.dasm (21.67 % of base)
         364 : 58515.dasm (31.60 % of base)
         328 : 47845.dasm (3.73 % of base)
         322 : 197879.dasm (2.40 % of base)
         318 : 165006.dasm (8.57 % of base)
         314 : 164902.dasm (8.13 % of base)
         298 : 149725.dasm (46.86 % of base)
         296 : 157920.dasm (15.66 % of base)
         288 : 92752.dasm (5.98 % of base)

Top file improvements (bytes):
        -264 : 185625.dasm (-15.49 % of base)
        -188 : 163917.dasm (-5.13 % of base)
        -150 : 44353.dasm (-22.94 % of base)
        -150 : 152820.dasm (-9.59 % of base)
        -148 : 197270.dasm (-8.33 % of base)
        -148 : 114314.dasm (-8.29 % of base)
        -144 : 62486.dasm (-18.95 % of base)
        -128 : 134589.dasm (-5.30 % of base)
        -122 : 115332.dasm (-8.30 % of base)
        -114 : 114915.dasm (-2.96 % of base)
        -112 : 44375.dasm (-15.05 % of base)
        -112 : 62744.dasm (-19.11 % of base)
        -112 : 62767.dasm (-19.11 % of base)
        -110 : 137422.dasm (-4.96 % of base)
        -104 : 157888.dasm (-5.10 % of base)
        -102 : 145317.dasm (-9.73 % of base)
        -100 : 125320.dasm (-6.18 % of base)
        -100 : 48350.dasm (-21.28 % of base)
        -100 : 163700.dasm (-5.38 % of base)
         -94 : 62441.dasm (-13.54 % of base)

70 total files with Code Size differences (38 improved, 32 regressed), 20 unchanged.

Top method regressions (bytes):
       12744 (10.73 % of base) : 24087.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServerTraceEventParser:EnumerateTemplates(System.Func`3[System.String,System.String,int],System.Action`1[Microsoft.Diagnostics.Tracing.TraceEvent]):this (FullOpts)
        1744 (38.38 % of base) : 115645.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
        1322 (1.83 % of base) : 1404.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
        1074 (101.13 % of base) : 194442.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
         966 (57.98 % of base) : 58506.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
         864 (3.91 % of base) : 158017.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)
         552 (74.19 % of base) : 58591.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
         514 (44.08 % of base) : 58485.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (FullOpts)
         478 (39.64 % of base) : 58768.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseFunctionPointerTypeSyntax>g__parseCallingConvention|210_1():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.FunctionPointerCallingConventionSyntax:this (FullOpts)
         414 (8.97 % of base) : 58618.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
         376 (25.23 % of base) : 58514.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseArrayRankSpecifier(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ArrayRankSpecifierSyntax:this (FullOpts)
         364 (31.60 % of base) : 58515.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTupleType():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TupleTypeSyntax:this (FullOpts)
         364 (21.67 % of base) : 58504.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanType(int,byref):int:this (FullOpts)
         328 (3.73 % of base) : 47845.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
         322 (2.40 % of base) : 197879.dasm - Interop+Sys:GetDriveType(System.String):int (FullOpts)
         318 (8.57 % of base) : 165006.dasm - System.Data.RBTree`1[int]:RBDeleteX(int,int,int):int:this (FullOpts)
         314 (8.13 % of base) : 164902.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteX(int,int,int):int:this (FullOpts)
         298 (46.86 % of base) : 149725.dasm - System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int (FullOpts)
         296 (15.66 % of base) : 157920.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeBinary(System.String,System.String):ubyte (FullOpts)
         288 (5.98 % of base) : 92752.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)

Top method improvements (bytes):
        -264 (-15.49 % of base) : 185625.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:BuildReferencedAssembliesAndModulesMaps(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]],int,int,System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.Collections.Generic.List`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ReferencedAssemblyIdentity[System.__Canon,System.__Canon]]],ubyte,byref,byref,byref,byref) (FullOpts)
        -188 (-5.13 % of base) : 163917.dasm - System.Data.Common.SqlConvert:ChangeType2(System.Object,int,System.Type,System.IFormatProvider):System.Object (FullOpts)
        -150 (-22.94 % of base) : 44353.dasm - Microsoft.CodeAnalysis.CSharp.BoundCompoundAssignmentOperator:Update(Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCompoundAssignmentOperator:this (FullOpts)
        -150 (-9.59 % of base) : 152820.dasm - Microsoft.Extensions.Logging.Console.JsonConsoleFormatter:WriteItem(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.KeyValuePair`2[System.String,System.Object]) (FullOpts)
        -148 (-8.29 % of base) : 114314.dasm - System.Resources.Extensions.PreserializedResourceWriter:WriteValue(int,System.Object,System.IO.BinaryWriter) (FullOpts)
        -148 (-8.33 % of base) : 197270.dasm - System.Resources.ResourceWriter:WriteValue(int,System.Object,System.IO.BinaryWriter) (FullOpts)
        -144 (-18.95 % of base) : 62486.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.RecordDeclarationSyntax:Update(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax],Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BaseListSyntax,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeParameterConstraintClauseSyntax],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.RecordDeclarationSyntax:this (FullOpts)
        -128 (-5.30 % of base) : 134589.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:SetParameterAttributes(Microsoft.CSharp.RuntimeBinder.Semantics.MethodOrPropertySymbol,System.Reflection.ParameterInfo[],int) (FullOpts)
        -122 (-8.30 % of base) : 115332.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[System.__Canon]:FindMatch(int,System.ReadOnlySpan`1[ushort],int,System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+PerThreadData[System.__Canon]):System.Text.RegularExpressions.Symbolic.SymbolicMatch:this (FullOpts)
        -114 (-2.96 % of base) : 114915.dasm - System.ServiceModel.Syndication.Rss20FeedFormatter:ReadXml(System.Xml.XmlReader,System.ServiceModel.Syndication.SyndicationFeed):this (FullOpts)
        -112 (-15.05 % of base) : 44375.dasm - Microsoft.CodeAnalysis.CSharp.BoundConversion:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.ConversionGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundConversion:this (FullOpts)
        -112 (-19.11 % of base) : 62767.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ConversionOperatorDeclarationSyntax:Update(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax],Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExplicitInterfaceSpecifierSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ArrowExpressionClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ConversionOperatorDeclarationSyntax:this (FullOpts)
        -112 (-19.11 % of base) : 62744.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.OperatorDeclarationSyntax:Update(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax],Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExplicitInterfaceSpecifierSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ArrowExpressionClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.OperatorDeclarationSyntax:this (FullOpts)
        -110 (-4.96 % of base) : 137422.dasm - System.Runtime.InteropServices.Marshalling.ComVariantMarshaller+RefPropagate:ToUnmanaged():System.Runtime.InteropServices.Marshalling.ComVariant:this (FullOpts)
        -104 (-5.10 % of base) : 157888.dasm - Microsoft.VisualBasic.CompilerServices.Operators:NegateObject(System.Object):System.Object (FullOpts)
        -102 (-9.73 % of base) : 145317.dasm - System.Linq.Expressions.Interpreter.CastReferenceToEnumInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
        -100 (-21.28 % of base) : 48350.dasm - Microsoft.CodeAnalysis.CSharp.BoundForEachStatement:Update(Microsoft.CodeAnalysis.CSharp.ForEachEnumeratorInfo,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.CSharp.BoundStatement,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol):Microsoft.CodeAnalysis.CSharp.BoundForEachStatement:this (FullOpts)
        -100 (-6.18 % of base) : 125320.dasm - Newtonsoft.Json.JsonValidatingReader:ValidateInteger(Newtonsoft.Json.Schema.JsonSchemaModel):this (FullOpts)
        -100 (-5.38 % of base) : 163700.dasm - System.Data.UnaryNode:EvalUnaryOp(int,System.Object):System.Object:this (FullOpts)
         -94 (-13.54 % of base) : 62441.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.StructDeclarationSyntax:Update(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax],Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BaseListSyntax,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeParameterConstraintClauseSyntax],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.StructDeclarationSyntax:this (FullOpts)

Top method regressions (percentages):
        1074 (101.13 % of base) : 194442.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
         552 (74.19 % of base) : 58591.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
          12 (60.00 % of base) : 98040.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementKeyword(ushort):ubyte (FullOpts)
          12 (60.00 % of base) : 98041.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDelegateStatementKeyword(ushort):ubyte (FullOpts)
          12 (60.00 % of base) : 98042.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
          12 (60.00 % of base) : 98043.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsMethodStatementKeyword(ushort):ubyte (FullOpts)
         966 (57.98 % of base) : 58506.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
         166 (48.82 % of base) : 125571.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
         298 (46.86 % of base) : 149725.dasm - System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int (FullOpts)
         514 (44.08 % of base) : 58485.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (FullOpts)
         112 (40.88 % of base) : 43419.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:NameUsedForPositional(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap):System.Nullable`1[int] (FullOpts)
         478 (39.64 % of base) : 58768.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseFunctionPointerTypeSyntax>g__parseCallingConvention|210_1():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.FunctionPointerCallingConventionSyntax:this (FullOpts)
         104 (38.52 % of base) : 125570.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(ushort[],int,int,byref):int (FullOpts)
        1744 (38.38 % of base) : 115645.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
          18 (37.50 % of base) : 92439.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
          18 (37.50 % of base) : 92445.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
         364 (31.60 % of base) : 58515.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTupleType():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TupleTypeSyntax:this (FullOpts)
         108 (31.58 % of base) : 123541.dasm - System.Net.Mail.SmtpClient:ValidateUnicodeRequirement(System.Net.Mail.MailMessage,System.Net.Mail.MailAddressCollection,ubyte) (FullOpts)
          30 (31.25 % of base) : 121631.dasm - Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int (FullOpts)
          50 (28.74 % of base) : 20344.dasm - System.Collections.Hashtable:ContainsValue(System.Object):ubyte:this (FullOpts)

Top method improvements (percentages):
         -34 (-32.69 % of base) : 104229.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-1(ushort):ubyte:this (FullOpts)
         -32 (-29.09 % of base) : 158123.dasm - Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,int[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
         -32 (-28.57 % of base) : 158122.dasm - Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,System.String[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
         -18 (-28.12 % of base) : 104228.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-0(ushort):ubyte:this (FullOpts)
        -150 (-22.94 % of base) : 44353.dasm - Microsoft.CodeAnalysis.CSharp.BoundCompoundAssignmentOperator:Update(Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCompoundAssignmentOperator:this (FullOpts)
        -100 (-21.28 % of base) : 48350.dasm - Microsoft.CodeAnalysis.CSharp.BoundForEachStatement:Update(Microsoft.CodeAnalysis.CSharp.ForEachEnumeratorInfo,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.CSharp.BoundStatement,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol):Microsoft.CodeAnalysis.CSharp.BoundForEachStatement:this (FullOpts)
         -18 (-19.15 % of base) : 79669.dasm - Microsoft.CodeAnalysis.VisualBasic.LookupOptionExtensions:ThrowIfInvalid(int) (FullOpts)
        -112 (-19.11 % of base) : 62767.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ConversionOperatorDeclarationSyntax:Update(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax],Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExplicitInterfaceSpecifierSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ArrowExpressionClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ConversionOperatorDeclarationSyntax:this (FullOpts)
        -112 (-19.11 % of base) : 62744.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.OperatorDeclarationSyntax:Update(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax],Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExplicitInterfaceSpecifierSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ArrowExpressionClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.OperatorDeclarationSyntax:this (FullOpts)
        -144 (-18.95 % of base) : 62486.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.RecordDeclarationSyntax:Update(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax],Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BaseListSyntax,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeParameterConstraintClauseSyntax],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.RecordDeclarationSyntax:this (FullOpts)
         -44 (-17.46 % of base) : 84402.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundArrayCreation:Update(ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.BoundArrayInitialization,Microsoft.CodeAnalysis.VisualBasic.BoundArrayLiteral,int,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundArrayCreation:this (FullOpts)
         -50 (-17.36 % of base) : 87206.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundForEachStatement:Update(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.ForEachEnumeratorInfo,Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundStatement,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.LabelSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.LabelSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundForEachStatement:this (FullOpts)
         -54 (-17.20 % of base) : 48365.dasm - Microsoft.CodeAnalysis.CSharp.BoundCatchBlock:Update(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatementList,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundBlock,ubyte):Microsoft.CodeAnalysis.CSharp.BoundCatchBlock:this (FullOpts)
         -50 (-16.89 % of base) : 44027.dasm - Microsoft.CodeAnalysis.CSharp.BoundDagSliceEvaluation:Update(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundDagTemp,int,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundSlicePatternReceiverPlaceholder,Microsoft.CodeAnalysis.CSharp.BoundSlicePatternRangePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundDagTemp):Microsoft.CodeAnalysis.CSharp.BoundDagSliceEvaluation:this (FullOpts)
         -84 (-16.41 % of base) : 61849.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ForEachStatementSyntax:Update(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.StatementSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ForEachStatementSyntax:this (FullOpts)
         -56 (-16.00 % of base) : 7998.dasm - System.Decimal:Clamp(System.Decimal,System.Decimal,System.Decimal):System.Decimal (FullOpts)
        -264 (-15.49 % of base) : 185625.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:BuildReferencedAssembliesAndModulesMaps(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]],int,int,System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.Collections.Generic.List`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ReferencedAssemblyIdentity[System.__Canon,System.__Canon]]],ubyte,byref,byref,byref,byref) (FullOpts)
         -48 (-15.29 % of base) : 193915.dasm - RailwaySharp.ErrorHandling.Trial+<>c__6`2[System.__Canon,System.__Canon]:<ReturnOrFail>b__6_0(System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon:this (FullOpts)
         -54 (-15.08 % of base) : 115303.dasm - System.Text.RegularExpressions.Symbolic.BitVector:Or(System.ReadOnlySpan`1[System.Text.RegularExpressions.Symbolic.BitVector]):System.Text.RegularExpressions.Symbolic.BitVector (FullOpts)
        -112 (-15.05 % of base) : 44375.dasm - Microsoft.CodeAnalysis.CSharp.BoundConversion:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.ConversionGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundConversion: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: 40595468 (overridden on cmd)
Total bytes of diff: 40832378 (overridden on cmd)
Total bytes of delta: 236910 (0.58 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        3178 : 95883.dasm (92.22 % of base)
        1664 : 105097.dasm (38.64 % of base)
        1378 : 95358.dasm (16.48 % of base)
        1286 : 179640.dasm (102.55 % of base)
        1226 : 189956.dasm (5.47 % of base)
        1162 : 216694.dasm (8.58 % of base)
        1160 : 188680.dasm (37.40 % of base)
        1100 : 34905.dasm (30.47 % of base)
        1090 : 113303.dasm (28.47 % of base)
         914 : 204474.dasm (34.97 % of base)
         906 : 219352.dasm (42.74 % of base)
         902 : 223042.dasm (23.88 % of base)
         836 : 188533.dasm (27.06 % of base)
         822 : 250571.dasm (46.13 % of base)
         798 : 223034.dasm (19.60 % of base)
         766 : 63119.dasm (23.77 % of base)
         740 : 133999.dasm (31.65 % of base)
         706 : 91201.dasm (5.22 % of base)
         680 : 28132.dasm (13.06 % of base)
         672 : 105749.dasm (8.83 % of base)

Top file improvements (bytes):
        -936 : 31840.dasm (-7.81 % of base)
        -722 : 97991.dasm (-8.26 % of base)
        -514 : 91024.dasm (-11.69 % of base)
        -378 : 230879.dasm (-25.27 % of base)
        -378 : 59147.dasm (-8.22 % of base)
        -370 : 246555.dasm (-8.88 % of base)
        -322 : 245612.dasm (-7.56 % of base)
        -252 : 210692.dasm (-55.75 % of base)
        -228 : 152910.dasm (-7.05 % of base)
        -216 : 152814.dasm (-6.41 % of base)
        -208 : 236311.dasm (-13.00 % of base)
        -206 : 245590.dasm (-9.04 % of base)
        -196 : 31838.dasm (-9.87 % of base)
        -190 : 245620.dasm (-4.52 % of base)
        -182 : 113579.dasm (-4.37 % of base)
        -178 : 236586.dasm (-4.55 % of base)
        -174 : 117255.dasm (-9.52 % of base)
        -174 : 28565.dasm (-9.27 % of base)
        -170 : 18998.dasm (-18.28 % of base)
        -170 : 236098.dasm (-31.72 % of base)

78 total files with Code Size differences (40 improved, 38 regressed), 20 unchanged.

Top method regressions (bytes):
        3178 (92.22 % of base) : 95883.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertySymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyBlockSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertySymbol (FullOpts)
        1664 (38.64 % of base) : 105097.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.DeclarationContext:ProcessSyntax(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext:this (FullOpts)
        1378 (16.48 % of base) : 95358.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GenerateVarianceDiagnosticsForTypeRecursively(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,short,int,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+VarianceDiagnosticsTargetTypeParameter,int,byref):this (FullOpts)
        1286 (102.55 % of base) : 179640.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
        1226 (5.47 % of base) : 189956.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)
        1162 (8.58 % of base) : 216694.dasm - System.ComponentModel.CultureInfoConverter+CultureInfoMapper:CreateMap():System.Collections.Generic.Dictionary`2[System.String,System.String] (FullOpts)
        1160 (37.40 % of base) : 188680.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:ToString():System.String:this (FullOpts)
        1100 (30.47 % of base) : 34905.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
        1090 (28.47 % of base) : 113303.dasm - Microsoft.CodeAnalysis.VisualBasic.IteratorRewriter:EnsureAllSymbolsAndSignature():ubyte:this (FullOpts)
         914 (34.97 % of base) : 204474.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:PopulateEncMapTableRows(System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Generic.List`1[int],System.Collections.Generic.List`1[int]):this (FullOpts)
         906 (42.74 % of base) : 219352.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (FullOpts)
         902 (23.88 % of base) : 223042.dasm - System.Numerics.Tensors.TensorPrimitives+MinMagnitudeOperator`1[long]:Invoke(System.Runtime.Intrinsics.Vector512`1[long]):long (FullOpts)
         836 (27.06 % of base) : 188533.dasm - ILCompiler.Reflection.ReadyToRun.x86.InfoHdrSmall:ToString():System.String:this (FullOpts)
         822 (46.13 % of base) : 250571.dasm - Microsoft.Build.Logging.BuildEventArgsReader:ReadBuildEventArgsFields(ubyte):Microsoft.Build.Logging.BuildEventArgsFields:this (FullOpts)
         798 (19.60 % of base) : 223034.dasm - System.Numerics.Tensors.TensorPrimitives+MinMagnitudeOperator`1[int]:Invoke(System.Runtime.Intrinsics.Vector512`1[int]):int (FullOpts)
         766 (23.77 % of base) : 63119.dasm - Microsoft.CodeAnalysis.CSharp.AsyncRewriter+AsyncIteratorRewriter:VerifyPresenceOfRequiredAPIs(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         740 (31.65 % of base) : 133999.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
         706 (5.22 % of base) : 91201.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
         680 (13.06 % of base) : 28132.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
         672 (8.83 % of base) : 105749.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)

Top method improvements (bytes):
        -936 (-7.81 % of base) : 31840.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor`2[double,System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.CSharp.BoundNode,double):System.Nullable`1[int]:this (FullOpts)
        -722 (-8.26 % of base) : 97991.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundTreeVisitor`2[double,System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.VisualBasic.BoundNode,double):System.Nullable`1[int]:this (FullOpts)
        -514 (-11.69 % of base) : 91024.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindTypeParameterConstraint(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstraintSyntax,byref,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
        -378 (-8.22 % of base) : 59147.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordPrintMembers:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        -378 (-25.27 % of base) : 230879.dasm - System.Net.NetworkInformation.NetworkChange+<ReadEventsAsync>d__29:MoveNext():this (FullOpts)
        -370 (-8.88 % of base) : 246555.dasm - System.Data.RBTree`1[ubyte]:RBDeleteX(int,int,int):int:this (FullOpts)
        -322 (-7.56 % of base) : 245612.dasm - System.Data.DataSet:ReadXml(System.Xml.XmlReader,ubyte):int:this (FullOpts)
        -252 (-55.75 % of base) : 210692.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
        -228 (-7.05 % of base) : 152910.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
        -216 (-6.41 % of base) : 152814.dasm - Newtonsoft.Json.JsonWriter:WriteValueAsync(Newtonsoft.Json.JsonWriter,int,System.Object,System.Threading.CancellationToken):System.Threading.Tasks.Task (FullOpts)
        -208 (-13.00 % of base) : 236311.dasm - System.IO.Packaging.ZipPackage+ContentTypeHelper:ParseContentTypesFile(System.Collections.ObjectModel.ReadOnlyCollection`1[System.IO.Compression.ZipArchiveEntry]):this (FullOpts)
        -206 (-9.04 % of base) : 245590.dasm - System.Data.DataSet:ReadXmlSchema(System.Xml.XmlReader,ubyte):this (FullOpts)
        -196 (-9.87 % of base) : 31838.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor`2[double,System.Nullable`1[int]]:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode,double):System.Nullable`1[int]:this (FullOpts)
        -190 (-4.52 % of base) : 245620.dasm - System.Data.DataSet:ReadXml(System.Xml.XmlReader,int,ubyte):int:this (FullOpts)
        -182 (-4.37 % of base) : 113579.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:VisitFieldOrPropertyInitializer(Microsoft.CodeAnalysis.VisualBasic.BoundFieldOrPropertyInitializer,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
        -178 (-4.55 % of base) : 236586.dasm - System.ServiceModel.Syndication.Rss20FeedFormatter:ReadXml(System.Xml.XmlReader,System.ServiceModel.Syndication.SyndicationFeed):this (FullOpts)
        -174 (-9.27 % of base) : 28565.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckRestrictedTypeReceiver(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        -174 (-9.52 % of base) : 117255.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+TypeBinder:BindNamespaceOrTypeSyntax(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Symbol (FullOpts)
        -170 (-18.28 % of base) : 18998.dasm - Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI:getParse(System.String):System.Object (FullOpts)
        -170 (-31.72 % of base) : 236098.dasm - System.IO.Packaging.PartBasedPackageProperties:WriteXmlStartTagsForPackageProperties():this (FullOpts)

Top method regressions (percentages):
          30 (115.38 % of base) : 61460.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
         198 (112.50 % of base) : 105717.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:StartsXmlDoc(int):ubyte:this (FullOpts)
        1286 (102.55 % of base) : 179640.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
          22 (100.00 % of base) : 105399.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
          22 (100.00 % of base) : 105405.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
        3178 (92.22 % of base) : 95883.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertySymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyBlockSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertySymbol (FullOpts)
          22 (68.75 % of base) : 93615.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
         352 (66.17 % of base) : 206980.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:MarkReachableFromTry(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock],Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock) (FullOpts)
         354 (64.60 % of base) : 209029.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder:GetPredecessors(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder]):this (FullOpts)
         358 (62.15 % of base) : 28975.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CollectTupleFieldMemberName(System.String,int,int,byref) (FullOpts)
         358 (62.15 % of base) : 91087.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:CollectTupleFieldMemberName(System.String,int,int,byref) (FullOpts)
         590 (58.42 % of base) : 226507.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`1[ubyte]:IntroSort(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],int,System.Comparison`1[ubyte]) (FullOpts)
         290 (52.92 % of base) : 121939.dasm - System.Text.Json.WriteStack:PropertyPath():System.String:this (FullOpts)
         384 (52.75 % of base) : 98137.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.VisualBasic.BoundBinaryOperator):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
         458 (52.28 % of base) : 2625.dasm - System.Number:Int128ToNumber(System.Int128,byref) (FullOpts)
         378 (51.64 % of base) : 32003.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         210 (51.47 % of base) : 55090.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataExpression(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataExpression:this (FullOpts)
          88 (50.00 % of base) : 127003.dasm - System.Xml.XmlUtf8RawTextWriter:EncodeChar(byref,uint,byref):this (FullOpts)
         160 (48.19 % of base) : 153117.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
         112 (46.67 % of base) : 30232.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:NameUsedForPositional(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap):System.Nullable`1[int] (FullOpts)

Top method improvements (percentages):
        -252 (-55.75 % of base) : 210692.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
         -12 (-50.00 % of base) : 237730.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
         -56 (-49.12 % of base) : 149368.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type,System.Collections.Generic.IEnumerable`1[System.Type]):this (FullOpts)
         -56 (-48.28 % of base) : 149365.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type):this (FullOpts)
         -76 (-38.00 % of base) : 142199.dasm - System.Numerics.BigInteger:Parse(System.ReadOnlySpan`1[ushort],System.IFormatProvider):System.Numerics.BigInteger (FullOpts)
         -44 (-32.35 % of base) : 142200.dasm - System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],System.IFormatProvider,byref):ubyte (FullOpts)
        -170 (-31.72 % of base) : 236098.dasm - System.IO.Packaging.PartBasedPackageProperties:WriteXmlStartTagsForPackageProperties():this (FullOpts)
         -44 (-30.14 % of base) : 141995.dasm - System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
         -34 (-28.81 % of base) : 130563.dasm - System.Xml.XmlDocument:AfterEvent(System.Xml.XmlNodeChangedEventArgs):this (FullOpts)
         -34 (-28.81 % of base) : 130562.dasm - System.Xml.XmlDocument:BeforeEvent(System.Xml.XmlNodeChangedEventArgs):this (FullOpts)
         -76 (-27.14 % of base) : 141988.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (FullOpts)
         -14 (-25.93 % of base) : 246978.dasm - System.Data.ExpressionNode:IsNumeric(int):ubyte (FullOpts)
         -48 (-25.53 % of base) : 141992.dasm - System.Numerics.BigInteger:TryParse(System.String,byref):ubyte (FullOpts)
        -378 (-25.27 % of base) : 230879.dasm - System.Net.NetworkInformation.NetworkChange+<ReadEventsAsync>d__29:MoveNext():this (FullOpts)
         -44 (-25.00 % of base) : 142197.dasm - System.Numerics.BigInteger:TryParse(System.String,System.IFormatProvider,byref):ubyte (FullOpts)
         -74 (-24.83 % of base) : 141990.dasm - System.Numerics.BigInteger:Parse(System.String,System.IFormatProvider):System.Numerics.BigInteger (FullOpts)
         -78 (-24.07 % of base) : 152481.dasm - Newtonsoft.Json.JsonTextReader:BigIntegerParse(System.String,System.Globalization.CultureInfo):System.Object (FullOpts)
         -10 (-23.81 % of base) : 148522.dasm - System.Runtime.Serialization.SchemaHelper:GetSchemaType(System.Collections.Generic.Dictionary`2[System.Xml.XmlQualifiedName,System.Runtime.Serialization.SchemaObjectInfo],System.Xml.XmlQualifiedName):System.Xml.Schema.XmlSchemaType (FullOpts)
         -10 (-23.81 % of base) : 132169.dasm - System.Xml.Schema.SchemaElementDecl:GetAttDef(System.Xml.XmlQualifiedName):System.Xml.Schema.SchemaAttDef:this (FullOpts)
         -10 (-23.81 % of base) : 132218.dasm - System.Xml.Schema.SchemaInfo:GetElementDecl(System.Xml.XmlQualifiedName):System.Xml.Schema.SchemaElementDecl: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: 16008592 (overridden on cmd)
Total bytes of diff: 16082990 (overridden on cmd)
Total bytes of delta: 74398 (0.46 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         330 : 698.dasm (5.89 % of base)
         230 : 792.dasm (2.93 % of base)
         188 : 2869.dasm (6.22 % of base)
         170 : 492.dasm (12.72 % of base)
         154 : 1680.dasm (2.19 % of base)
         152 : 2828.dasm (5.53 % of base)
         128 : 29178.dasm (3.70 % of base)
         124 : 13512.dasm (5.62 % of base)
         124 : 7443.dasm (5.62 % of base)
         124 : 18863.dasm (5.62 % of base)
         124 : 22909.dasm (5.62 % of base)
         124 : 34697.dasm (5.62 % of base)
         124 : 31504.dasm (5.62 % of base)
         122 : 10540.dasm (5.53 % of base)
         122 : 27960.dasm (5.53 % of base)
         118 : 16382.dasm (7.19 % of base)
         112 : 67.dasm (4.56 % of base)
         108 : 18280.dasm (4.86 % of base)
         108 : 34120.dasm (4.86 % of base)
         108 : 25955.dasm (4.86 % of base)

Top file improvements (bytes):
        -332 : 11913.dasm (-60.58 % of base)
        -332 : 17261.dasm (-60.58 % of base)
        -330 : 11041.dasm (-60.00 % of base)
        -330 : 25514.dasm (-60.00 % of base)
        -328 : 30146.dasm (-59.85 % of base)
        -328 : 9024.dasm (-59.85 % of base)
        -328 : 19462.dasm (-59.85 % of base)
        -328 : 4333.dasm (-59.85 % of base)
        -326 : 11699.dasm (-59.71 % of base)
        -324 : 31679.dasm (-59.56 % of base)
        -318 : 18201.dasm (-57.82 % of base)
        -318 : 18997.dasm (-57.82 % of base)
        -318 : 19617.dasm (-57.82 % of base)
        -318 : 14853.dasm (-57.82 % of base)
        -318 : 18294.dasm (-57.82 % of base)
        -318 : 18809.dasm (-57.82 % of base)
        -318 : 8849.dasm (-57.82 % of base)
        -318 : 11437.dasm (-57.82 % of base)
        -318 : 14638.dasm (-57.82 % of base)
        -318 : 4737.dasm (-57.82 % of base)

81 total files with Code Size differences (40 improved, 41 regressed), 20 unchanged.

Top method regressions (bytes):
         330 (5.89 % of base) : 698.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (Tier0-FullOpts)
         230 (2.93 % of base) : 792.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
         188 (6.22 % of base) : 2869.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateMethods(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeMethodInfo[]:this (Instrumented Tier1)
         170 (12.72 % of base) : 492.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (Tier0-FullOpts)
         154 (2.19 % of base) : 1680.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Instrumented Tier1)
         152 (5.53 % of base) : 2828.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:AdjustCallArgumentsForParams(Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.MethodOrPropertySymbol,Microsoft.CSharp.RuntimeBinder.Semantics.TypeArray,Microsoft.CSharp.RuntimeBinder.Semantics.Expr,byref):this (Tier0-FullOpts)
         128 (3.70 % of base) : 29178.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
         124 (5.62 % of base) : 13512.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         124 (5.62 % of base) : 7443.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         124 (5.62 % of base) : 18863.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         124 (5.62 % of base) : 22909.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         124 (5.62 % of base) : 34697.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         124 (5.62 % of base) : 31504.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         122 (5.53 % of base) : 10540.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         122 (5.53 % of base) : 27960.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         118 (7.19 % of base) : 16382.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         112 (4.56 % of base) : 67.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (Instrumented Tier1)
         108 (4.86 % of base) : 18280.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         108 (4.86 % of base) : 34120.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         108 (4.86 % of base) : 25955.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)

Top method improvements (bytes):
        -332 (-60.58 % of base) : 11913.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (Tier1)
        -332 (-60.58 % of base) : 17261.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (Tier1)
        -330 (-60.00 % of base) : 11041.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (Tier1)
        -330 (-60.00 % of base) : 25514.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (Tier1)
        -328 (-59.85 % of base) : 30146.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (Tier1)
        -328 (-59.85 % of base) : 9024.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (Tier1)
        -328 (-59.85 % of base) : 19462.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (Tier1)
        -328 (-59.85 % of base) : 4333.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (Tier1)
        -326 (-59.71 % of base) : 11699.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (Tier1)
        -324 (-59.56 % of base) : 31679.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (Tier1)
        -318 (-57.82 % of base) : 18201.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.Type):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -318 (-57.82 % of base) : 18997.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.Type):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -318 (-57.82 % of base) : 19617.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.Type):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -318 (-57.82 % of base) : 14853.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.Type):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -318 (-57.82 % of base) : 18294.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.Type):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -318 (-57.82 % of base) : 18809.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.Type):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -318 (-57.82 % of base) : 8849.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.Type):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -318 (-57.82 % of base) : 11437.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.Type):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -318 (-57.82 % of base) : 14638.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.Type):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -318 (-57.82 % of base) : 4737.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.Type):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)

Top method regressions (percentages):
          46 (21.70 % of base) : 16119.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
          46 (21.70 % of base) : 19566.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
          46 (21.70 % of base) : 21555.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
          46 (21.70 % of base) : 21916.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
          46 (21.70 % of base) : 22993.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
          46 (21.70 % of base) : 26678.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
          46 (21.70 % of base) : 10800.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
          46 (21.70 % of base) : 18962.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
          46 (21.70 % of base) : 15255.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
          46 (21.70 % of base) : 22194.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
          46 (21.70 % of base) : 30314.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
          46 (21.70 % of base) : 6108.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
          46 (21.70 % of base) : 30752.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
          46 (21.70 % of base) : 32016.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
          46 (21.70 % of base) : 32874.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
          34 (17.17 % of base) : 1036.dasm - System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Instrumented Tier1)
          16 (14.81 % of base) : 2690.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindNamedArgumentsType(Microsoft.CSharp.RuntimeBinder.Semantics.Expr):int (Tier0-FullOpts)
          30 (13.04 % of base) : 25661.dasm - System.String:Concat(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.String (Tier1)
          54 (13.04 % of base) : 1588.dasm - System.Text.Encodings.Web.OptimizedInboxTextEncoder+AsciiPreescapedData:PopulatePreescapedData(byref,System.Text.Encodings.Web.ScalarEscaperBase):this (Tier0-FullOpts)
          20 (12.99 % of base) : 33604.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)

Top method improvements (percentages):
        -310 (-78.68 % of base) : 31680.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.String):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -308 (-78.57 % of base) : 17262.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.String):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -308 (-78.57 % of base) : 19461.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.String):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -308 (-78.57 % of base) : 11914.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.String):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -308 (-78.57 % of base) : 9025.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.String):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -308 (-78.57 % of base) : 30147.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.String):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -308 (-78.57 % of base) : 4340.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.String):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -306 (-78.46 % of base) : 11698.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.String):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -306 (-78.46 % of base) : 11042.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.String):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -306 (-78.46 % of base) : 25515.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:GetName(System.String):Microsoft.CSharp.RuntimeBinder.Syntax.Name (Tier1)
        -332 (-60.58 % of base) : 11913.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (Tier1)
        -332 (-60.58 % of base) : 17261.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (Tier1)
        -330 (-60.00 % of base) : 11041.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (Tier1)
        -330 (-60.00 % of base) : 25514.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (Tier1)
        -328 (-59.85 % of base) : 30146.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (Tier1)
        -328 (-59.85 % of base) : 9024.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (Tier1)
        -328 (-59.85 % of base) : 19462.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (Tier1)
        -328 (-59.85 % of base) : 4333.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (Tier1)
        -326 (-59.71 % of base) : 11699.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (Tier1)
        -324 (-59.56 % of base) : 31679.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamespaceToSymbolTable(Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceOrAggregateSymbol,System.String):Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (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: 73558612 (overridden on cmd)
Total bytes of diff: 73814604 (overridden on cmd)
Total bytes of delta: 255992 (0.35 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        2138 : 259508.dasm (54.18 % of base)
        2128 : 62802.dasm (2.40 % of base)
        1936 : 209016.dasm (35.72 % of base)
        1672 : 182507.dasm (30.22 % of base)
        1394 : 243509.dasm (75.11 % of base)
        1314 : 94198.dasm (52.73 % of base)
        1272 : 180236.dasm (102.58 % of base)
        1172 : 264804.dasm (58.95 % of base)
        1162 : 32591.dasm (8.58 % of base)
        1124 : 59754.dasm (5.02 % of base)
        1098 : 55193.dasm (31.18 % of base)
        1094 : 199292.dasm (35.22 % of base)
        1038 : 176174.dasm (15.21 % of base)
        1026 : 251322.dasm (6.66 % of base)
         996 : 238002.dasm (6.66 % of base)
         960 : 87008.dasm (12.32 % of base)
         960 : 87012.dasm (12.32 % of base)
         958 : 100071.dasm (15.39 % of base)
         886 : 188731.dasm (18.15 % of base)
         820 : 207788.dasm (26.76 % of base)

Top file improvements (bytes):
      -15696 : 261839.dasm (-18.27 % of base)
      -15696 : 248040.dasm (-18.27 % of base)
       -1050 : 161389.dasm (-4.80 % of base)
        -584 : 281130.dasm (-2.53 % of base)
        -486 : 92043.dasm (-2.44 % of base)
        -460 : 297220.dasm (-29.79 % of base)
        -436 : 203648.dasm (-13.42 % of base)
        -436 : 3964.dasm (-6.11 % of base)
        -424 : 91707.dasm (-3.32 % of base)
        -396 : 192972.dasm (-83.19 % of base)
        -388 : 213453.dasm (-97.49 % of base)
        -370 : 91551.dasm (-8.88 % of base)
        -354 : 192975.dasm (-51.60 % of base)
        -350 : 297149.dasm (-32.59 % of base)
        -330 : 192913.dasm (-50.61 % of base)
        -330 : 271102.dasm (-7.34 % of base)
        -308 : 192983.dasm (-16.23 % of base)
        -308 : 192964.dasm (-16.19 % of base)
        -296 : 128511.dasm (-12.34 % of base)
        -284 : 202924.dasm (-14.75 % of base)

79 total files with Code Size differences (41 improved, 38 regressed), 20 unchanged.

Top method regressions (bytes):
        2138 (54.18 % of base) : 259508.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests:CreatingNestedJsonArray() (FullOpts)
        2128 (2.40 % of base) : 62802.dasm - System.CodeDom.Compiler.Tests.CodeValidatorTests+<ValidateIdentifiers_Valid_TestData>d__0:MoveNext():ubyte:this (FullOpts)
        1936 (35.72 % of base) : 209016.dasm - System.Tests.DecimalTests_GenericMath:IsEvenIntegerTest() (FullOpts)
        1672 (30.22 % of base) : 182507.dasm - System.Reflection.Metadata.Tests.BlobUtilitiesTests:GetUTF8ByteCount():this (FullOpts)
        1394 (75.11 % of base) : 243509.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:ClassWithPropertyNamePermutationsSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.PropertyNameTests+ClassWithPropertyNamePermutations):this (FullOpts)
        1314 (52.73 % of base) : 94198.dasm - System.Data.Tests.DataSetTest2:ParentDataTableSchema():this (FullOpts)
        1272 (102.58 % of base) : 180236.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
        1172 (58.95 % of base) : 264804.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:JsonWithTrailingCommasMultiSegment_Valid(System.String) (FullOpts)
        1162 (8.58 % of base) : 32591.dasm - System.ComponentModel.CultureInfoConverter+CultureInfoMapper:CreateMap():System.Collections.Generic.Dictionary`2[System.String,System.String] (FullOpts)
        1124 (5.02 % of base) : 59754.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)
        1098 (31.18 % of base) : 55193.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
        1094 (35.22 % of base) : 199292.dasm - System.Runtime.Serialization.Xml.XsdDataContractExporterTests.SurrogateTests+<>c__DisplayClass3_0:<SurrogateProvider_MemberData>b__0(System.String,System.Xml.Schema.XmlSchemaSet):this (FullOpts)
        1038 (15.21 % of base) : 176174.dasm - System.Xml.XmlConvertTests.ToTypeTests:ToType56():int:this (FullOpts)
        1026 (6.66 % of base) : 251322.dasm - System.Text.Json.SourceGeneration.Tests.CollectionTests_Metadata+CollectionTestsContext_Metadata:global::System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver.GetTypeInfo(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
         996 (6.66 % of base) : 238002.dasm - System.Text.Json.SourceGeneration.Tests.CollectionTests_Default+CollectionTestsContext_Default:global::System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver.GetTypeInfo(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
         960 (12.32 % of base) : 87012.dasm - System.ComponentModel.Tests.TypeDescriptorTests:RemoveProvider_InvokeObject_RemovesProvider():this (FullOpts)
         960 (12.32 % of base) : 87008.dasm - System.ComponentModel.Tests.TypeDescriptorTests:RemoveProviderTransparent_InvokeObject_RemovesProvider():this (FullOpts)
         958 (15.39 % of base) : 100071.dasm - BasicEventSourceTests.TestsManifestNegative:Test_GenerateManifest_InvalidEventSources():this (FullOpts)
         886 (18.15 % of base) : 188731.dasm - System.Tests.BitConverterTests:StartIndexBeyondLength() (FullOpts)
         820 (26.76 % of base) : 207788.dasm - System.Tests.TimeSpanTests:ParseExact_Span_Valid(System.String,System.String,System.TimeSpan) (FullOpts)

Top method improvements (bytes):
      -15696 (-18.27 % of base) : 261839.dasm - (dynamicClass):.ctor(System.Object[]):System.Text.Json.Serialization.Tests.ClassWithManyConstructorParameters (FullOpts)
      -15696 (-18.27 % of base) : 248040.dasm - System.Text.Json.SourceGeneration.Tests.ConstructorTests_Metadata+ConstructorTestsContext_Metadata+<>c:<Create_ClassWithManyConstructorParameters>b__340_0(System.Object[]):System.Text.Json.Serialization.Tests.ClassWithManyConstructorParameters:this (FullOpts)
       -1050 (-4.80 % of base) : 161389.dasm - System.Numerics.Tests.Matrix4x4Tests:Matrix4x4EqualsNaNTest():this (FullOpts)
        -584 (-2.53 % of base) : 281130.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28478_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -486 (-2.44 % of base) : 92043.dasm - System.Data.Tests.Common.DbConnectionStringBuilderTest:AppendKeyValuePair2_UseOdbcRules_True():this (FullOpts)
        -460 (-29.79 % of base) : 297220.dasm - System.Threading.Channels.Tests.ChannelTests+<DefaultWriteAsync_UsesWaitToWriteAsyncAndTryWrite>d__7:MoveNext():this (FullOpts)
        -436 (-6.11 % of base) : 3964.dasm - NuGet.Frameworks.FrameworkConstants+CommonFrameworks:.cctor() (FullOpts)
        -436 (-13.42 % of base) : 203648.dasm - System.Tests.DoubleTests_GenericMath:TryWriteSignificandBigEndianTest() (FullOpts)
        -424 (-3.32 % of base) : 91707.dasm - System.Data.Tests.Common.DbConnectionStringBuilderTest:AppendKeyValuePair2_UseOdbcRules_False():this (FullOpts)
        -396 (-83.19 % of base) : 192972.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsCanonicalTest() (FullOpts)
        -388 (-97.49 % of base) : 213453.dasm - System.Tests.SingleTests_GenericMath:IsPow2Test() (FullOpts)
        -370 (-8.88 % of base) : 91551.dasm - System.Data.RBTree`1[int]:RBDeleteX(int,int,int):int:this (FullOpts)
        -354 (-51.60 % of base) : 192975.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsComplexNumberTest() (FullOpts)
        -350 (-32.59 % of base) : 297149.dasm - System.Threading.Channels.Tests.BoundedChannelTests+<>c__DisplayClass23_0+<<ManyProducerConsumer_ConcurrentReadWrite_WithBufferedCapacity_Success>b__0>d:MoveNext():this (FullOpts)
        -330 (-7.34 % of base) : 271102.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordPrintMembers:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        -330 (-50.61 % of base) : 192913.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsZeroTest() (FullOpts)
        -308 (-16.19 % of base) : 192964.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsEvenIntegerTest() (FullOpts)
        -308 (-16.23 % of base) : 192983.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsOddIntegerTest() (FullOpts)
        -296 (-12.34 % of base) : 128511.dasm - System.IO.Pipelines.Tests.SequencePipeReaderTests+<TryReadReturnsTrueIfBufferedBytesAndNotExaminedEverything>d__1:MoveNext():this (FullOpts)
        -284 (-14.75 % of base) : 202924.dasm - System.Tests.UInt32Tests:ToStringTest(uint,System.String,System.IFormatProvider,System.String) (FullOpts)

Top method regressions (percentages):
        1272 (102.58 % of base) : 180236.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
        1394 (75.11 % of base) : 243509.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:ClassWithPropertyNamePermutationsSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.PropertyNameTests+ClassWithPropertyNamePermutations):this (FullOpts)
         352 (66.17 % of base) : 56507.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:MarkReachableFromTry(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock],Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock) (FullOpts)
         684 (65.27 % of base) : 172430.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
         324 (64.29 % of base) : 151460.dasm - System.Net.NameResolution.Tests.GetHostAddressesTest:get_IPAndIncorrectFamily_Data():Xunit.TheoryData`3[ubyte,System.Net.IPAddress,int] (FullOpts)
         326 (59.49 % of base) : 44882.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:NameUsedForPositional(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap):System.Nullable`1[int] (FullOpts)
        1172 (58.95 % of base) : 264804.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:JsonWithTrailingCommasMultiSegment_Valid(System.String) (FullOpts)
        2138 (54.18 % of base) : 259508.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests:CreatingNestedJsonArray() (FullOpts)
         574 (53.95 % of base) : 52690.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetClsComplianceDiagnostics(Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan],System.Threading.CancellationToken):Microsoft.CodeAnalysis.ImmutableBindingDiagnostic`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]:this (FullOpts)
         574 (53.95 % of base) : 46008.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetClsComplianceDiagnostics(Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan],System.Threading.CancellationToken):Microsoft.CodeAnalysis.ImmutableBindingDiagnostic`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]:this (FullOpts)
         378 (53.09 % of base) : 11925.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         290 (52.92 % of base) : 232981.dasm - System.Text.Json.WriteStack:PropertyPath():System.String:this (FullOpts)
        1314 (52.73 % of base) : 94198.dasm - System.Data.Tests.DataSetTest2:ParentDataTableSchema():this (FullOpts)
         676 (52.65 % of base) : 172042.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
         458 (52.28 % of base) : 206627.dasm - System.Number:Int128ToNumber(System.Int128,byref) (FullOpts)
         160 (48.19 % of base) : 21620.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
         112 (46.67 % of base) : 31036.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:NameUsedForPositional(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap):System.Nullable`1[int] (FullOpts)
         112 (46.67 % of base) : 52059.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:NameUsedForPositional(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap):System.Nullable`1[int] (FullOpts)
         214 (45.53 % of base) : 302296.dasm - System.Threading.Tasks.Tests.CESchedulerPairTests+<>c__DisplayClass1_0:<TestMaxItemsPerTask>b__0():this (FullOpts)
         562 (42.58 % of base) : 206603.dasm - System.Tests.TypedReferenceTests:GetTargetTypeTests() (FullOpts)

Top method improvements (percentages):
        -388 (-97.49 % of base) : 213453.dasm - System.Tests.SingleTests_GenericMath:IsPow2Test() (FullOpts)
         -64 (-94.12 % of base) : 89696.dasm - System.ConfigurationTests.UrlPathTests:GetDirectoryOrRootName_Null():this (FullOpts)
         -58 (-93.55 % of base) : 188393.dasm - System.IO.Tests.PathTests:GetDirectoryName_NullReturnsNull():this (FullOpts)
         -86 (-87.76 % of base) : 162296.dasm - System.Numerics.Tests.Vector4Tests:Vector4EqualsNaNTest():this (FullOpts)
        -396 (-83.19 % of base) : 192972.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsCanonicalTest() (FullOpts)
         -48 (-82.76 % of base) : 183184.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareEntityHandles():this (FullOpts)
         -48 (-82.76 % of base) : 183186.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareHandles():this (FullOpts)
         -52 (-81.25 % of base) : 161102.dasm - System.Numerics.Tests.Matrix3x2Tests:Matrix3x2IsIdentityTest():this (FullOpts)
        -116 (-65.17 % of base) : 161141.dasm - System.Numerics.Tests.QuaternionTests:QuaternionEqualsNaNTest():this (FullOpts)
        -354 (-51.60 % of base) : 192975.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsComplexNumberTest() (FullOpts)
        -330 (-50.61 % of base) : 192913.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsZeroTest() (FullOpts)
        -202 (-40.73 % of base) : 127656.dasm - System.IO.Packaging.PartBasedPackageProperties:WriteXmlStartTagsForPackageProperties():this (FullOpts)
         -56 (-38.89 % of base) : 196311.dasm - DataContractJsonSerializerTests+<>c:<DCJS_ReadOnlyDictionaryCausingDuplicateInvalidDataContract>b__179_0():System.Runtime.Serialization.Json.DataContractJsonSerializer:this (FullOpts)
         -56 (-38.89 % of base) : 195443.dasm - DataContractJsonSerializerTests+<>c:<DCJS_ReadOnlyDictionaryCausingDuplicateInvalidDataContract>b__181_0():System.Runtime.Serialization.Json.DataContractJsonSerializer:this (FullOpts)
         -56 (-38.89 % of base) : 196500.dasm - DataContractJsonSerializerTests+<>c:<DCJS_Regression195109>b__177_0():System.Runtime.Serialization.Json.DataContractJsonSerializer:this (FullOpts)
         -56 (-38.89 % of base) : 195166.dasm - DataContractJsonSerializerTests+<>c:<DCJS_Regression195109>b__179_0():System.Runtime.Serialization.Json.DataContractJsonSerializer:this (FullOpts)
         -62 (-38.75 % of base) : 161099.dasm - System.Numerics.Tests.PlaneTests:PlaneEqualsNaNTest():this (FullOpts)
        -282 (-37.40 % of base) : 192923.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsRealNumberTest() (FullOpts)
         -82 (-36.61 % of base) : 193393.dasm - System.Numerics.Tests.parseTest+<>c:<Parse_Hex32Bits>b__7_0():this (FullOpts)
        -138 (-36.32 % of base) : 190416.dasm - System.Runtime.InteropServices.Tests.GetExceptionCodeTests:GetExceptionCode_NormalExceptionInsideCatch_ReturnsExpected(int):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: 11277914 (overridden on cmd)
Total bytes of diff: 11431680 (overridden on cmd)
Total bytes of delta: 153766 (1.36 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        1572 : 14716.dasm (51.27 % of base)
        1484 : 28261.dasm (47.87 % of base)
        1430 : 2625.dasm (17.25 % of base)
        1394 : 14972.dasm (4.02 % of base)
        1238 : 11977.dasm (12.31 % of base)
        1134 : 2060.dasm (38.97 % of base)
        1098 : 28203.dasm (31.18 % of base)
        1084 : 2069.dasm (25.74 % of base)
        1078 : 2320.dasm (16.81 % of base)
        1052 : 2351.dasm (16.47 % of base)
         988 : 2013.dasm (17.54 % of base)
         926 : 1631.dasm (8.40 % of base)
         836 : 1630.dasm (16.73 % of base)
         830 : 988.dasm (9.26 % of base)
         800 : 7576.dasm (15.20 % of base)
         800 : 2165.dasm (9.87 % of base)
         768 : 1622.dasm (11.34 % of base)
         760 : 1684.dasm (11.50 % of base)
         754 : 35706.dasm (38.63 % of base)
         734 : 17386.dasm (6.77 % of base)

Top file improvements (bytes):
        -468 : 1781.dasm (-5.97 % of base)
        -464 : 1743.dasm (-5.36 % of base)
        -226 : 35376.dasm (-0.94 % of base)
        -220 : 2287.dasm (-3.63 % of base)
        -170 : 7706.dasm (-1.91 % of base)
        -164 : 16716.dasm (-14.09 % of base)
        -158 : 27976.dasm (-9.16 % of base)
        -156 : 1477.dasm (-2.91 % of base)
        -154 : 1613.dasm (-11.49 % of base)
        -144 : 2485.dasm (-3.27 % of base)
        -140 : 23756.dasm (-9.26 % of base)
        -136 : 1633.dasm (-2.06 % of base)
        -136 : 26889.dasm (-5.44 % of base)
        -134 : 1870.dasm (-5.23 % of base)
        -126 : 20051.dasm (-9.25 % of base)
        -120 : 23053.dasm (-12.12 % of base)
        -120 : 28125.dasm (-17.29 % of base)
        -102 : 1535.dasm (-1.22 % of base)
        -100 : 2341.dasm (-3.99 % of base)
        -100 : 23885.dasm (-7.08 % of base)

80 total files with Code Size differences (42 improved, 38 regressed), 20 unchanged.

Top method regressions (bytes):
        1572 (51.27 % of base) : 14716.dasm - FSharp.Compiler.TypedTreePickle:p_lazy_impl[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,FSharp.Compiler.TypedTreePickle+WriterState) (FullOpts)
        1484 (47.87 % of base) : 28261.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
        1430 (17.25 % of base) : 2625.dasm - BepuPhysics.Constraints.AreaConstraintFunctions:Solve(byref,byref,byref,byref,byref,byref,byref,byref,byref,float,float,byref,byref,byref,byref,byref):this (FullOpts)
        1394 (4.02 % of base) : 14972.dasm - FSharp.Compiler.CompilerDiagnostics:OutputExceptionR@597(System.Text.StringBuilder,ubyte,System.Text.StringBuilder,System.Exception) (FullOpts)
        1238 (12.31 % of base) : 11977.dasm - FSharp.Compiler.AugmentWithHashCompare:CheckAugmentationAttribs(ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.TypedTree+Entity) (FullOpts)
        1134 (38.97 % of base) : 2060.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+SelfOverlapHandler[DemoBenchmarks.ShapePileBenchmark+DemoNarrowPhaseCallbacks]](byref,byref,byref):this (FullOpts)
        1098 (31.18 % of base) : 28203.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
        1084 (25.74 % of base) : 2069.dasm - BepuPhysics.Trees.Tree:GetOverlaps[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+IntertreeOverlapHandler[DemoBenchmarks.ShapePileBenchmark+DemoNarrowPhaseCallbacks]](byref,byref):this (FullOpts)
        1078 (16.81 % of base) : 2320.dasm - BepuPhysics.Constraints.CenterDistanceConstraintFunctions:Solve(byref,byref,byref,byref,byref,byref,float,float,byref,byref,byref,byref):this (FullOpts)
        1052 (16.47 % of base) : 2351.dasm - BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Box,BepuPhysics.Collidables.BoxWide,BepuPhysics.Collidables.BoxSupportFinder,BepuPhysics.Collidables.Triangle,BepuPhysics.Collidables.TriangleWide,BepuPhysics.Collidables.TriangleSupportFinder]:Edge(byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
         988 (17.54 % of base) : 2013.dasm - BepuPhysics.PoseIntegrator`1[DemoBenchmarks.ShapePileBenchmark+DemoPoseIntegratorCallbacks]:PredictBoundingBoxes(int,int,float,byref,int):this (FullOpts)
         926 (8.40 % of base) : 1631.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CapsuleConvexHullTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         836 (16.73 % of base) : 1630.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:TryAddInteriorPoint(byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,int) (FullOpts)
         830 (9.26 % of base) : 988.dasm - BepuPhysics.Collidables.ConvexHullHelper:ComputeHull(System.Span`1[System.Numerics.Vector3],BepuUtilities.Memory.BufferPool,byref) (FullOpts)
         800 (9.87 % of base) : 2165.dasm - BepuPhysics.Constraints.Contact.ContactNonconvexOneBodyFunctions`2[BepuPhysics.Constraints.Contact.Contact4NonconvexOneBodyPrestepData,BepuPhysics.Constraints.Contact.Contact4NonconvexAccumulatedImpulses]:Solve(byref,byref,byref,float,float,byref,byref,byref):this (FullOpts)
         800 (15.20 % of base) : 7576.dasm - FSharp.Compiler.LexFilter:undentationLimit@727(FSharp.Compiler.LexFilter+LexFilterImpl,FSharp.Compiler.LexFilter+Context,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.LexFilter+Context]):FSharp.Compiler.LexFilter+PositionWithColumn (FullOpts)
         768 (11.34 % of base) : 1622.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TriangleCylinderTester:TryAddInteriorPoint(byref,byref,byref,BepuUtilities.Vector2Wide,byref,BepuUtilities.Vector2Wide,byref,BepuUtilities.Vector2Wide,byref,byref,byref,int) (FullOpts)
         760 (11.50 % of base) : 1684.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxTriangleTester:ClipTriangleEdgeAgainstPlanes(byref,byref,byref,byref,byref,byref) (FullOpts)
         754 (38.63 % of base) : 35706.dasm - System.Management.Automation.CommandProcessor:.cctor() (FullOpts)
         734 (6.77 % of base) : 17386.dasm - SixLabors.ImageSharp.Processing.Processors.Quantization.WuQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:Bottom(byref,int,System.ReadOnlySpan`1[SixLabors.ImageSharp.Processing.Processors.Quantization.WuQuantizer`1+Moment[SixLabors.ImageSharp.PixelFormats.Rgba32]]):SixLabors.ImageSharp.Processing.Processors.Quantization.WuQuantizer`1+Moment[SixLabors.ImageSharp.PixelFormats.Rgba32] (FullOpts)

Top method improvements (bytes):
        -468 (-5.97 % of base) : 1781.dasm - BepuPhysics.Collidables.ConvexHullWide:GetBounds(byref,int,byref,byref,byref,byref):this (FullOpts)
        -464 (-5.36 % of base) : 1743.dasm - BepuPhysics.BoundingBoxHelpers:ExpandLocalBoundingBoxes(byref,byref,byref,byref,byref,byref,byref,float,byref,byref,byref) (FullOpts)
        -226 (-0.94 % of base) : 35376.dasm - Interop+Sys:GetDriveType(System.String):int (FullOpts)
        -220 (-3.63 % of base) : 2287.dasm - BepuPhysics.CollisionDetection.SweepTasks.CapsuleBoxDistanceTester:TestBoxEdge(byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
        -170 (-1.91 % of base) : 7706.dasm - FSharp.Compiler.Lexer:singleQuoteString(FSharp.Compiler.IO.ByteBuffer,FSharp.Compiler.Lexhelp+LexerStringFinisher,FSharp.Compiler.Text.Range,FSharp.Compiler.ParseHelpers+LexerStringKind,FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
        -164 (-14.09 % of base) : 16716.dasm - SixLabors.ImageSharp.Benchmarks.Codecs.DecodeFilteredPng:ReadImages():this (FullOpts)
        -158 (-9.16 % of base) : 27976.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckRestrictedTypeReceiver(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        -156 (-2.91 % of base) : 1477.dasm - BepuPhysics.Constraints.Contact.FrictionHelpers:ComputeFrictionCenter(byref,byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
        -154 (-11.49 % of base) : 1613.dasm - BepuPhysics.CollisionDetection.Convex4ContactManifoldWide:BepuPhysics.CollisionDetection.CollisionTasks.IContactManifoldWide.ReadFirst(byref,byref):this (FullOpts)
        -144 (-3.27 % of base) : 2485.dasm - BepuPhysics.Constraints.ServoSettingsWide:ClampImpulse(byref,byref,byref) (FullOpts)
        -140 (-9.26 % of base) : 23756.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckReceiverAndRuntimeSupportForSymbolAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        -136 (-2.06 % of base) : 1633.dasm - BepuPhysics.Collidables.ConvexHullSupportFinder:ComputeLocalSupport(byref,byref,byref,byref):this (FullOpts)
        -136 (-5.44 % of base) : 26889.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol:.ctor(int,Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.Syntax.OperatorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        -134 (-5.23 % of base) : 1870.dasm - BepuUtilities.Vector3Wide:Cross(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide):BepuUtilities.Vector3Wide (FullOpts)
        -126 (-9.25 % of base) : 20051.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509CertificateReader+<>c:<GetPolicyData>b__63_0(Microsoft.Win32.SafeHandles.SafeX509Handle):System.Security.Cryptography.X509Certificates.PolicyData:this (FullOpts)
        -120 (-12.12 % of base) : 23053.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
        -120 (-17.29 % of base) : 28125.dasm - Microsoft.CodeAnalysis.CSharp.BoundConversion:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.ConversionGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundConversion:this (FullOpts)
        -102 (-1.22 % of base) : 1535.dasm - BepuPhysics.Constraints.Contact.ContactNonconvexTwoBodyFunctions`2[BepuPhysics.Constraints.Contact.Contact4NonconvexPrestepData,BepuPhysics.Constraints.Contact.Contact4NonconvexAccumulatedImpulses]:Solve(byref,byref,byref,byref,byref,byref,float,float,byref,byref,byref,byref):this (FullOpts)
        -100 (-3.99 % of base) : 2341.dasm - BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Box,BepuPhysics.Collidables.BoxWide,BepuPhysics.Collidables.BoxSupportFinder,BepuPhysics.Collidables.Triangle,BepuPhysics.Collidables.TriangleWide,BepuPhysics.Collidables.TriangleSupportFinder]:SampleMinkowskiDifference(byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
        -100 (-7.08 % of base) : 23885.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)

Top method regressions (percentages):
         346 (66.28 % of base) : 31753.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:MarkReachableFromTry(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock],Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock) (FullOpts)
        1572 (51.27 % of base) : 14716.dasm - FSharp.Compiler.TypedTreePickle:p_lazy_impl[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,FSharp.Compiler.TypedTreePickle+WriterState) (FullOpts)
         354 (50.72 % of base) : 27038.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
        1484 (47.87 % of base) : 28261.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
         112 (46.67 % of base) : 26271.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:NameUsedForPositional(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap):System.Nullable`1[int] (FullOpts)
          46 (40.35 % of base) : 34795.dasm - Microsoft.ApplicationInsights.Channel.InMemoryChannel:set_DeveloperMode(System.Nullable`1[ubyte]):this (FullOpts)
         306 (39.95 % of base) : 33415.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (FullOpts)
        1134 (38.97 % of base) : 2060.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+SelfOverlapHandler[DemoBenchmarks.ShapePileBenchmark+DemoNarrowPhaseCallbacks]](byref,byref,byref):this (FullOpts)
         754 (38.63 % of base) : 35706.dasm - System.Management.Automation.CommandProcessor:.cctor() (FullOpts)
         130 (38.46 % of base) : 29651.dasm - Microsoft.CodeAnalysis.CSharp.BoundForEachStatement:Update(Microsoft.CodeAnalysis.CSharp.ForEachEnumeratorInfo,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.CSharp.BoundStatement,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol):Microsoft.CodeAnalysis.CSharp.BoundForEachStatement:this (FullOpts)
         190 (32.31 % of base) : 31158.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         128 (32.00 % of base) : 755.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
         186 (31.85 % of base) : 27732.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
        1098 (31.18 % of base) : 28203.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
          94 (30.92 % of base) : 759.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
         162 (30.92 % of base) : 33001.dasm - Microsoft.CodeAnalysis.CodeGen.ArrayMethods+ArraySet:MakeParameters():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.ArrayMethodParameterInfo]:this (FullOpts)
          22 (30.56 % of base) : 23433.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
         180 (29.90 % of base) : 31657.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         198 (27.73 % of base) : 25256.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:<AddTypesParticipatingInUserDefinedConversion>g__addFromClassOrStruct|137_0(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]],ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref) (FullOpts)
         350 (26.72 % of base) : 35470.dasm - System.Management.Automation.LogProvider:LogContextToString(System.Management.Automation.LogContext):System.String (FullOpts)

Top method improvements (percentages):
         -76 (-18.27 % of base) : 22324.dasm - Microsoft.CodeAnalysis.RealParser:AccumulateDecimalDigitsIntoBigInteger(Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString,uint,uint):System.Numerics.BigInteger (FullOpts)
        -120 (-17.29 % of base) : 28125.dasm - Microsoft.CodeAnalysis.CSharp.BoundConversion:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.ConversionGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundConversion:this (FullOpts)
         -50 (-16.34 % of base) : 30734.dasm - Microsoft.CodeAnalysis.CSharp.BoundImplicitIndexerAccess:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundImplicitIndexerReceiverPlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundImplicitIndexerValuePlaceholder],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundImplicitIndexerAccess:this (FullOpts)
         -10 (-16.13 % of base) : 886.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject:HasValue(BenchmarkDotNet.Characteristics.Characteristic):ubyte:this (FullOpts)
         -20 (-14.71 % of base) : 34643.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:GetModuleLoggingInformation(byref):int (FullOpts)
         -54 (-14.52 % of base) : 35401.dasm - System.Management.Automation.MshLog:CreateLogProvider(System.String):System.Collections.ObjectModel.Collection`1[System.Management.Automation.LogProvider] (FullOpts)
        -164 (-14.09 % of base) : 16716.dasm - SixLabors.ImageSharp.Benchmarks.Codecs.DecodeFilteredPng:ReadImages():this (FullOpts)
         -20 (-14.08 % of base) : 27944.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
         -38 (-14.07 % of base) : 21515.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseTypeCore>g__canBeNullableType|202_0(byref):ubyte:this (FullOpts)
          -6 (-13.64 % of base) : 56.dasm - System.Diagnostics.Debug:Assert(ubyte) (FullOpts)
          -6 (-13.04 % of base) : 16648.dasm - System.Runtime.InteropServices.MemoryMarshal:CreateReadOnlySpan[System.__Canon](byref,int):System.ReadOnlySpan`1[System.__Canon] (FullOpts)
          -6 (-13.04 % of base) : 16629.dasm - System.Runtime.InteropServices.MemoryMarshal:CreateSpan[System.__Canon](byref,int):System.Span`1[System.__Canon] (FullOpts)
         -96 (-12.87 % of base) : 1643.dasm - BepuPhysics.CollisionDetection.Convex2ContactManifoldWide:BepuPhysics.CollisionDetection.CollisionTasks.IContactManifoldWide.ReadFirst(byref,byref):this (FullOpts)
         -64 (-12.85 % of base) : 17234.dasm - SixLabors.ImageSharp.SimdUtils:PackFromRgbPlanesScalarBatchedReduce(byref,byref,byref,byref) (FullOpts)
         -28 (-12.73 % of base) : 34355.dasm - Microsoft.CodeAnalysis.AnalyzerConfig+SectionNameLexer:Lex():int:this (FullOpts)
         -28 (-12.73 % of base) : 34487.dasm - System.Management.Automation.Language.ScriptBlockAst:PerformPostParseChecks(System.Management.Automation.Language.Parser):this (FullOpts)
         -86 (-12.72 % of base) : 18158.dasm - Microsoft.ML.Numeric.VectorUtils:DotProduct(byref,byref):float (FullOpts)
        -120 (-12.12 % of base) : 23053.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
         -94 (-11.93 % of base) : 28851.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckMethodReturnValueKind(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
        -154 (-11.49 % of base) : 1613.dasm - BepuPhysics.CollisionDetection.Convex4ContactManifoldWide:BepuPhysics.CollisionDetection.CollisionTasks.IContactManifoldWide.ReadFirst(byref,byref):this (FullOpts)



windows x86

Diffs are based on 1,529,353 contexts (327,626 MinOpts, 1,201,727 FullOpts).

MISSED contexts: base: 799 (0.05%), diff: 100,304 (6.15%)

Overall (+2,640,345 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 8,042,044 +192,717
benchmarks.run_pgo.windows.x86.checked.mch 28,754,577 +234,686
benchmarks.run_tiered.windows.x86.checked.mch 12,099,955 +140,973
coreclr_tests.run.windows.x86.checked.mch 210,972,421 +226,256
libraries.crossgen2.windows.x86.checked.mch 29,314,718 +259,842
libraries.pmi.windows.x86.checked.mch 39,429,027 +502,430
libraries_tests.run.windows.x86.Release.mch 13,052,418 +174,246
librariestestsnotieredcompilation.run.windows.x86.Release.mch 83,805,955 +733,594
realworld.run.windows.x86.checked.mch 8,444,744 +175,601

MinOpts (-15 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 6,121,948 -6
benchmarks.run_tiered.windows.x86.checked.mch 6,854,637 -9
coreclr_tests.run.windows.x86.checked.mch 122,261,024 +0
libraries.crossgen2.windows.x86.checked.mch 1,060 +0
libraries.pmi.windows.x86.checked.mch 95,233 +0
libraries_tests.run.windows.x86.Release.mch 5,490,195 +0
librariestestsnotieredcompilation.run.windows.x86.Release.mch 8,952,773 +0

FullOpts (+2,640,360 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 8,041,566 +192,717
benchmarks.run_pgo.windows.x86.checked.mch 22,632,629 +234,692
benchmarks.run_tiered.windows.x86.checked.mch 5,245,318 +140,982
coreclr_tests.run.windows.x86.checked.mch 88,711,397 +226,256
libraries.crossgen2.windows.x86.checked.mch 29,313,658 +259,842
libraries.pmi.windows.x86.checked.mch 39,333,794 +502,430
libraries_tests.run.windows.x86.Release.mch 7,562,223 +174,246
librariestestsnotieredcompilation.run.windows.x86.Release.mch 74,853,182 +733,594
realworld.run.windows.x86.checked.mch 8,149,030 +175,601

Example diffs

benchmarks.run.windows.x86.checked.mch

-7 (-22.58%) : 21957.dasm - Jil.Common.Utils+<>cDisplayClass9_0:b6(System.Reflection.FieldInfo):int:this (FullOpts)

@@ -2,25 +2,25 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; optimized using Synthesized PGO +; esp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> ecx this class-hnd single-def <Jil.Common.Utils+<>c__DisplayClass9_0> ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> edx class-hnd single-def <System.Reflection.FieldInfo>
-; V02 loc0 [V02,T04] ( 2, 1 ) int -> eax ld-addr-op
+; V02 loc0 [V02,T04] ( 2, 1.04) int -> eax ld-addr-op
;* V03 tmp0 [V03,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V04 tmp1 [V04,T00] ( 3, 6 ) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>>
-; V05 tmp2 [V05,T03] ( 3, 2.50) byref -> eax single-def "Inline stloc first use temp"
+; V05 tmp2 [V05,T03] ( 3, 2.52) byref -> eax single-def "Inline stloc first use temp"
; ; Lcl frame size = 0 G_M45289_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp - ;; size=3 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M45289_IG02: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx edx] mov ecx, gword ptr [ecx+0x14] @@ -29,25 +29,22 @@ G_M45289_IG02: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=0000 ; gcrRegs -[ecx edx] ; byrRegs +[eax] test eax, eax
- je SHORT G_M45289_IG04
+ je SHORT G_M45289_IG05
;; size=15 bbWeight=1 PerfScore 9.25
-G_M45289_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
+G_M45289_IG03: ; bbWeight=0.52, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref
mov eax, dword ptr [eax] ; byrRegs -[eax]
- jmp SHORT G_M45289_IG06 - ;; size=4 bbWeight=0.50 PerfScore 2.00 -G_M45289_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=2 bbWeight=0.52 PerfScore 1.04 +G_M45289_IG04: ; bbWeight=0.52, epilog, nogc, extend + ret + ;; size=1 bbWeight=0.52 PerfScore 0.52 +G_M45289_IG05: ; bbWeight=0.48, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov eax, 0xD1FFAB1E
- ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M45289_IG05: ; bbWeight=0.50, epilog, nogc, extend - pop ebp
+ ;; size=5 bbWeight=0.48 PerfScore 0.12 +G_M45289_IG06: ; bbWeight=0.48, epilog, nogc, extend
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75 -G_M45289_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc - pop ebp - ret - ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=1 bbWeight=0.48 PerfScore 0.48
-; Total bytes of code 31, prolog size 3, PerfScore 14.12, instruction count 14, allocated bytes for code 31 (MethodHash=685a4f16) for method Jil.Common.Utils+<>c__DisplayClass9_0:<IdealMemberOrderForWriting>b__6(System.Reflection.FieldInfo):int:this (FullOpts)
+; Total bytes of code 24, prolog size 0, PerfScore 11.41, instruction count 9, allocated bytes for code 24 (MethodHash=685a4f16) for method Jil.Common.Utils+<>c__DisplayClass9_0:<IdealMemberOrderForWriting>b__6(System.Reflection.FieldInfo):int:this (FullOpts)
; ============================================================

-7 (-22.58%) : 6963.dasm - Jil.Common.Utils+<>cDisplayClass9_0:b6(System.Reflection.FieldInfo):int:this (FullOpts)

@@ -2,25 +2,25 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; optimized using Synthesized PGO +; esp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> ecx this class-hnd single-def <Jil.Common.Utils+<>c__DisplayClass9_0> ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> edx class-hnd single-def <System.Reflection.FieldInfo>
-; V02 loc0 [V02,T04] ( 2, 1 ) int -> eax ld-addr-op
+; V02 loc0 [V02,T04] ( 2, 1.04) int -> eax ld-addr-op
;* V03 tmp0 [V03,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V04 tmp1 [V04,T00] ( 3, 6 ) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>>
-; V05 tmp2 [V05,T03] ( 3, 2.50) byref -> eax single-def "Inline stloc first use temp"
+; V05 tmp2 [V05,T03] ( 3, 2.52) byref -> eax single-def "Inline stloc first use temp"
; ; Lcl frame size = 0 G_M45289_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp - ;; size=3 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M45289_IG02: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx edx] mov ecx, gword ptr [ecx+0x14] @@ -29,25 +29,22 @@ G_M45289_IG02: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=0000 ; gcrRegs -[ecx edx] ; byrRegs +[eax] test eax, eax
- je SHORT G_M45289_IG04
+ je SHORT G_M45289_IG05
;; size=15 bbWeight=1 PerfScore 9.25
-G_M45289_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
+G_M45289_IG03: ; bbWeight=0.52, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref
mov eax, dword ptr [eax] ; byrRegs -[eax]
- jmp SHORT G_M45289_IG06 - ;; size=4 bbWeight=0.50 PerfScore 2.00 -G_M45289_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=2 bbWeight=0.52 PerfScore 1.04 +G_M45289_IG04: ; bbWeight=0.52, epilog, nogc, extend + ret + ;; size=1 bbWeight=0.52 PerfScore 0.52 +G_M45289_IG05: ; bbWeight=0.48, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov eax, 0xD1FFAB1E
- ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M45289_IG05: ; bbWeight=0.50, epilog, nogc, extend - pop ebp
+ ;; size=5 bbWeight=0.48 PerfScore 0.12 +G_M45289_IG06: ; bbWeight=0.48, epilog, nogc, extend
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75 -G_M45289_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc - pop ebp - ret - ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=1 bbWeight=0.48 PerfScore 0.48
-; Total bytes of code 31, prolog size 3, PerfScore 14.12, instruction count 14, allocated bytes for code 31 (MethodHash=685a4f16) for method Jil.Common.Utils+<>c__DisplayClass9_0:<IdealMemberOrderForWriting>b__6(System.Reflection.FieldInfo):int:this (FullOpts)
+; Total bytes of code 24, prolog size 0, PerfScore 11.41, instruction count 9, allocated bytes for code 24 (MethodHash=685a4f16) for method Jil.Common.Utils+<>c__DisplayClass9_0:<IdealMemberOrderForWriting>b__6(System.Reflection.FieldInfo):int:this (FullOpts)
; ============================================================

-7 (-20.59%) : 32979.dasm - Microsoft.CodeAnalysis.SpecialTypes:GetTypeFromMetadataName(System.String):byte (FullOpts)

@@ -2,26 +2,26 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; optimized using Synthesized PGO +; esp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> edx class-hnd single-def <System.String>
-; V01 loc0 [V01,T03] ( 2, 1 ) byte -> eax ld-addr-op
+; V01 loc0 [V01,T03] ( 2, 1.04) byte -> eax ld-addr-op
;* V02 tmp0 [V02,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V04 tmp2 [V04,T02] ( 3, 2.50) byref -> eax single-def "Inline stloc first use temp"
+; V04 tmp2 [V04,T02] ( 3, 2.52) byref -> eax single-def "Inline stloc first use temp"
; ; Lcl frame size = 0 G_M11356_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp
mov edx, ecx ; gcrRegs +[edx]
- ;; size=5 bbWeight=1 PerfScore 1.50
+ ;; size=2 bbWeight=1 PerfScore 0.25
G_M11356_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ecx] @@ -30,25 +30,22 @@ G_M11356_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 ; gcrRegs -[ecx edx] ; byrRegs +[eax] test eax, eax
- je SHORT G_M11356_IG04
+ je SHORT G_M11356_IG05
;; size=18 bbWeight=1 PerfScore 9.25
-G_M11356_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
+G_M11356_IG03: ; bbWeight=0.52, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref
movsx eax, byte ptr [eax] ; byrRegs -[eax]
- jmp SHORT G_M11356_IG06 - ;; size=5 bbWeight=0.50 PerfScore 3.00 -G_M11356_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=3 bbWeight=0.52 PerfScore 2.08 +G_M11356_IG04: ; bbWeight=0.52, epilog, nogc, extend + ret + ;; size=1 bbWeight=0.52 PerfScore 0.52 +G_M11356_IG05: ; bbWeight=0.48, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M11356_IG05: ; bbWeight=0.50, epilog, nogc, extend - pop ebp
+ ;; size=2 bbWeight=0.48 PerfScore 0.12 +G_M11356_IG06: ; bbWeight=0.48, epilog, nogc, extend
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75 -G_M11356_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc - pop ebp - ret - ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=1 bbWeight=0.48 PerfScore 0.48
-; Total bytes of code 34, prolog size 3, PerfScore 15.38, instruction count 15, allocated bytes for code 34 (MethodHash=2314d3a3) for method Microsoft.CodeAnalysis.SpecialTypes:GetTypeFromMetadataName(System.String):byte (FullOpts)
+; Total bytes of code 27, prolog size 0, PerfScore 12.70, instruction count 10, allocated bytes for code 27 (MethodHash=2314d3a3) for method Microsoft.CodeAnalysis.SpecialTypes:GetTypeFromMetadataName(System.String):byte (FullOpts)
; ============================================================

+21 (+40.38%) : 3840.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)

@@ -2,29 +2,33 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; esp based frame
+; optimized using Synthesized PGO +; ebp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 5.50) ref -> ecx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V00 this [V00,T00] ( 8, 7.20) 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, 3.50) int -> eax -; V03 loc1 [V03,T03] ( 4, 3 ) ref -> esi class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T03] ( 5, 4.40) int -> eax +; V03 loc1 [V03,T04] ( 4, 3.60) 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] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V07 rat0 [V07,T05] ( 2, 3.20) int -> edx "Spilling to split statement for tree"
;* V08 rat1 [V08,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V09 rat2 [V09,T04] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V09 rat2 [V09,T02] ( 2, 3.20) int -> edx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 G_M49890_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+ push ebp + mov ebp, esp
push edi push esi
- ;; size=2 bbWeight=1 PerfScore 2.00
+ ;; size=5 bbWeight=1 PerfScore 3.25
G_M49890_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 {edx}, byref, isz ; gcrRegs +[ecx] ; byrRegs +[edx] @@ -34,24 +38,9 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 ; gcrRegs +[esi] mov edi, dword ptr [esi+0x04] cmp edi, eax
- ja SHORT G_M49890_IG05
+ jbe SHORT G_M49890_IG05
;; size=14 bbWeight=1 PerfScore 7.50
-G_M49890_IG03: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 {edx}, byref - ; gcrRegs -[esi] - xor eax, eax - ; gcrRegs +[eax] - mov gword ptr [edx], eax - ;; size=4 bbWeight=0.50 PerfScore 0.62 -G_M49890_IG04: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, epilog, nogc - ; gcrRegs -[eax] - ; byrRegs -[edx] - pop esi - pop edi - ret - ;; size=3 bbWeight=0.50 PerfScore 1.00 -G_M49890_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000004 {edx}, gcvars, byref - ; gcrRegs +[esi] - ; byrRegs +[edx]
+G_M49890_IG03: ; bbWeight=0.80, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000004 {edx}, byref, isz
inc dword ptr [ecx+0x0C] mov dword ptr [ecx+0x08], eax mov edi, gword ptr [esi+4*eax+0x08] @@ -59,17 +48,45 @@ G_M49890_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {e 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+0x08] + test edx, edx + jne SHORT G_M49890_IG07 + ;; size=29 bbWeight=0.80 PerfScore 13.00 +G_M49890_IG04: ; bbWeight=0.16, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M49890_IG07 + ;; size=2 bbWeight=0.16 PerfScore 0.32 +G_M49890_IG05: ; bbWeight=0.20, 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.20 PerfScore 0.25 +G_M49890_IG06: ; bbWeight=0.20, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, epilog, nogc + ; gcrRegs -[eax] + ; byrRegs -[edx] + pop esi + pop edi + pop ebp + ret + ;; size=4 bbWeight=0.20 PerfScore 0.50 +G_M49890_IG07: ; bbWeight=0.80, 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=26 bbWeight=0.50 PerfScore 4.25 -G_M49890_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=11 bbWeight=0.80 PerfScore 1.20 +G_M49890_IG08: ; bbWeight=0.80, epilog, nogc, extend
pop esi pop edi
+ pop ebp
ret
- ;; size=3 bbWeight=0.50 PerfScore 1.00
+ ;; size=4 bbWeight=0.80 PerfScore 2.00
-; Total bytes of code 52, prolog size 2, PerfScore 16.38, instruction count 23, allocated bytes for code 52 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
+; Total bytes of code 73, prolog size 5, PerfScore 28.02, instruction count 34, allocated bytes for code 73 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
; ============================================================

+20 (+44.44%) : 36753.dasm - System.Memory.Constructors1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan1[System.__Canon]:this (FullOpts)

@@ -2,23 +2,24 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
+; V00 this [V00,T01] ( 5, 4 ) ref -> esi this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
; V01 RetBuf [V01,T02] ( 4, 4 ) byref -> edx single-def ;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.__Canon]> ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V04 tmp2 [V04,T00] ( 4, 8 ) ref -> eax class-hnd single-def "Inlining Arg" <System.__Canon[]>
+; V04 tmp2 [V04,T00] ( 7, 7.92) ref -> eax class-hnd single-def "Inlining Arg" <System.__Canon[]>
; V05 tmp3 [V05,T05] ( 2, 2 ) byref -> eax single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T08] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x4)" P-INDEP -; V07 cse0 [V07,T06] ( 2, 2 ) int -> ecx "CSE - aggressive" -;* 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,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V06 tmp4 [V06,T07] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x4)" P-INDEP +; V07 rat0 [V07,T04] ( 2, 4 ) int -> eax "Spilling to split statement for tree" +;* V08 rat1 [V08,T06] ( 0, 0 ) int -> zero-ref "runtime lookup" +; V09 rat2 [V09,T03] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -31,31 +32,50 @@ G_M3040_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, ;; size=6 bbWeight=1 PerfScore 2.50 G_M3040_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000004 {edx}, byref, isz ; byrRegs +[edx]
- cmp dword ptr [esi], esi
+ mov eax, dword ptr [esi] + mov eax, dword ptr [eax+0x24] + mov eax, dword ptr [eax] + mov eax, dword ptr [eax+0x18] + test eax, eax + je SHORT G_M3040_IG07 + ;; size=14 bbWeight=1 PerfScore 9.25 +G_M3040_IG03: ; bbWeight=0.80, gcrefRegs=00000040 {esi}, byrefRegs=00000004 {edx}, byref, isz
mov eax, gword ptr [esi+0x04] ; gcrRegs +[eax] test eax, eax
- je SHORT G_M3040_IG04
+ je SHORT G_M3040_IG08 + ;; size=7 bbWeight=0.80 PerfScore 2.60 +G_M3040_IG04: ; bbWeight=0.48, gcrefRegs=00000041 {eax esi}, byrefRegs=00000004 {edx}, byref, isz
mov ecx, dword ptr [eax+0x04]
- cmp ecx, 10 - jb SHORT G_M3040_IG04
+ cmp dword ptr [eax+0x04], 10 + jb SHORT G_M3040_IG08 + ;; size=9 bbWeight=0.48 PerfScore 2.88 +G_M3040_IG05: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000004 {edx}, byref
add eax, 8 ; gcrRegs -[eax] ; byrRegs +[eax] mov bword ptr [edx], eax mov dword ptr [edx+0x04], 10
- ;; size=29 bbWeight=1 PerfScore 11.75 -G_M3040_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 2.25 +G_M3040_IG06: ; bbWeight=1, epilog, nogc, extend
pop esi pop ebp ret ;; size=3 bbWeight=1 PerfScore 2.00
-G_M3040_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref - ; byrRegs -[eax edx]
+G_M3040_IG07: ; bbWeight=0.20, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000004 {edx}, gcvars, byref, isz + ; byrRegs -[eax] + mov eax, gword ptr [esi+0x04] + ; gcrRegs +[eax] + test eax, eax + jne SHORT G_M3040_IG04 + ;; size=7 bbWeight=0.20 PerfScore 0.65 +G_M3040_IG08: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax] + ; byrRegs -[edx]
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 45, prolog size 4, PerfScore 16.25, instruction count 19, allocated bytes for code 45 (MethodHash=74f7f41f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 65, prolog size 4, PerfScore 22.13, instruction count 27, allocated bytes for code 65 (MethodHash=74f7f41f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
; ============================================================

+44 (+72.13%) : 1819.dasm - System.Linq.Enumerable+SelectArrayIterator2[System.__Canon,System.Memory1[ubyte]]:Fill(System.ReadOnlySpan1[System.__Canon],System.Span1[System.Memory1[ubyte]],System.Func2[System.__Canon,System.Memory`1[ubyte]]) (FullOpts)

@@ -2,21 +2,26 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 2, 8 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.__Canon]> -; V01 arg1 [V01,T05] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.Memory`1[ubyte]]> -; V02 arg2 [V02,T02] ( 4, 10 ) ref -> esi class-hnd single-def <System.Func`2[System.__Canon,System.Memory`1[ubyte]]>
+; V00 arg0 [V00,T07] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.__Canon]> +; V01 arg1 [V01,T08] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.Memory`1[ubyte]]> +; V02 arg2 [V02,T02] ( 4,146.00) ref -> esi class-hnd single-def <System.Func`2[System.__Canon,System.Memory`1[ubyte]]>
;* V03 TypeCtx [V03 ] ( 0, 0 ) int -> zero-ref single-def
-; V04 loc0 [V04,T00] ( 7, 25 ) int -> ebx
+; V04 loc0 [V04,T00] ( 7,433.00) int -> [ebp-0x10]
;* V05 loc1 [V05 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
-; V06 tmp1 [V06,T04] ( 3, 6 ) int -> edi "V01.[004..008)" -; V07 tmp2 [V07,T01] ( 2, 16 ) byref -> edx "argument with side effect"
+; V06 tmp1 [V06,T04] ( 2, 73.00) byref -> [ebp-0x1C] spill-single-def "V00.[000..004)" +; V07 tmp2 [V07,T06] ( 2, 73.00) int -> [ebp-0x14] spill-single-def "V00.[004..008)" +; V08 tmp3 [V08,T05] ( 2, 73.00) byref -> [ebp-0x20] spill-single-def "V01.[000..004)" +; V09 tmp4 [V09,T03] ( 3, 74.00) int -> [ebp-0x18] spill-single-def "V01.[004..008)" +; V10 tmp5 [V10,T01] ( 2,288.00) byref -> edi "argument with side effect"
;
-; Lcl frame size = 0
+; Lcl frame size = 20
G_M43632_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -24,48 +29,80 @@ G_M43632_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
+ sub esp, 20
mov esi, ecx ; gcrRegs +[esi]
- ;; size=8 bbWeight=1 PerfScore 4.50
+ ;; size=11 bbWeight=1 PerfScore 4.75
G_M43632_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, dword ptr [ebp+0x0C] - xor ebx, ebx - test edi, edi
+ mov edi, bword ptr [ebp+0x10] + ; byrRegs +[edi] + mov bword ptr [ebp-0x1C], edi + ; GC ptr vars +{V06} + mov ebx, dword ptr [ebp+0x14] + mov dword ptr [ebp-0x14], ebx + mov eax, bword ptr [ebp+0x08] + ; byrRegs +[eax] + mov bword ptr [ebp-0x20], eax + ; GC ptr vars +{V08} + mov ecx, dword ptr [ebp+0x0C] + mov dword ptr [ebp-0x18], ecx + xor edx, edx + test ecx, ecx
jle SHORT G_M43632_IG04
- ;; size=9 bbWeight=1 PerfScore 2.50 -G_M43632_IG03: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov edx, bword ptr [ebp+0x08]
+ ;; size=30 bbWeight=1 PerfScore 9.50 +G_M43632_IG03: ; bbWeight=72.00, gcVars=00000030 {V06 V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, gcvars, byref, isz + ; byrRegs -[edi] + lea edi, [edx+2*edx] + lea edi, bword ptr [eax+4*edi] + ; byrRegs +[edi] + cmp edx, ebx + jae SHORT G_M43632_IG06 + mov ebx, bword ptr [ebp-0x1C] + ; byrRegs +[ebx] + mov dword ptr [ebp-0x10], edx + push gword ptr [ebx+4*edx] + mov edx, edi
; byrRegs +[edx]
- lea ecx, [ebx+2*ebx] - lea edx, bword ptr [edx+4*ecx] - cmp ebx, dword ptr [ebp+0x14] - jae SHORT G_M43632_IG05 - mov ecx, bword ptr [ebp+0x10] - ; byrRegs +[ecx] - push gword ptr [ecx+4*ebx]
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx]
- ; byrRegs -[ecx]
call [esi+0x0C]<unknown method> ; gcrRegs -[ecx]
- ; byrRegs -[edx] - inc ebx - cmp ebx, edi - jl SHORT G_M43632_IG03 - ;; size=31 bbWeight=4 PerfScore 58.00 -G_M43632_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; byrRegs -[eax edx edi] + mov edi, dword ptr [ebp-0x10] + inc edi + mov ecx, dword ptr [ebp-0x18] + cmp edi, ecx + mov edx, edi + mov eax, bword ptr [ebp-0x20] + ; byrRegs +[eax] + jl SHORT G_M43632_IG05 + ;; size=43 bbWeight=72.00 PerfScore 1170.00 +G_M43632_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[esi]
+ ; byrRegs -[eax ebx] + ; GC ptr vars -{V06 V08} + lea esp, [ebp-0x0C]
pop ebx pop esi pop edi pop ebp ret 16
- ;; size=7 bbWeight=1 PerfScore 4.00 -G_M43632_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=10 bbWeight=1 PerfScore 4.50 +G_M43632_IG05: ; bbWeight=36.00, gcVars=00000030 {V06 V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, gcvars, byref, isz + ; gcrRegs +[esi] + ; byrRegs +[eax] + ; GC ptr vars +{V04 V06 V08} + mov ebx, dword ptr [ebp-0x14] + jmp SHORT G_M43632_IG03 + ;; size=5 bbWeight=36.00 PerfScore 108.00 +G_M43632_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[esi] + ; byrRegs -[eax] + ; GC ptr vars -{V04 V06 V08}
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 61, prolog size 6, PerfScore 69.00, instruction count 29, allocated bytes for code 61 (MethodHash=98fc558f) for method System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.Memory`1[ubyte]]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.Memory`1[ubyte]],System.Func`2[System.__Canon,System.Memory`1[ubyte]]) (FullOpts)
+; Total bytes of code 105, prolog size 9, PerfScore 1296.75, instruction count 45, allocated bytes for code 105 (MethodHash=98fc558f) for method System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.Memory`1[ubyte]]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.Memory`1[ubyte]],System.Func`2[System.__Canon,System.Memory`1[ubyte]]) (FullOpts)
; ============================================================

benchmarks.run_pgo.windows.x86.checked.mch

-16 (-18.60%) : 7919.dasm - System.Collections.Immutable.SortedInt32KeyNode1[System.Collections.Immutable.ImmutableDictionary2+HashBucket[System.Canon,System.Canon]]:SetItem(int,System.Collections.Immutable.ImmutableDictionary2+HashBucket[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer1[System.Collections.Immutable.ImmutableDictionary2+HashBucket[System.__Canon,System.__Canon]],byref,byref):System.Collections.Immutable.SortedInt32KeyNode1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Canon,System.Canon]]:this (Tier1)

@@ -2,8 +2,10 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier1 code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments @@ -11,13 +13,13 @@ ; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]> ; V01 arg1 [V01,T02] ( 3, 3 ) int -> edx single-def ; V02 arg2 [V02,T08] ( 1, 1 ) struct (12) [ebp+0x14] do-not-enreg[S] single-def <System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]>
-; V03 arg3 [V03,T04] ( 3, 2 ) ref -> ecx class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
+; V03 arg3 [V03,T04] ( 2, 2 ) ref -> ecx class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
; V04 arg4 [V04,T06] ( 1, 1 ) byref -> [ebp+0x0C] single-def ; V05 arg5 [V05,T07] ( 1, 1 ) byref -> [ebp+0x08] single-def ;* V06 tmp0 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V07 rat0 [V07,T03] ( 2, 4 ) int -> eax "Spilling to split statement for tree"
+;* V07 rat0 [V07,T03] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V08 rat1 [V08,T05] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V09 rat2 [V09,T01] ( 2, 4 ) int -> eax "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 @@ -31,18 +33,9 @@ G_M55135_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[ecx] ;; size=9 bbWeight=1 PerfScore 3.50 G_M55135_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [esi] - mov eax, dword ptr [eax+0x24] - mov eax, dword ptr [eax] - mov eax, dword ptr [eax+0x08] - test eax, eax - je SHORT G_M55135_IG06 - ;; size=14 bbWeight=1 PerfScore 9.25 -G_M55135_IG03: ; bbWeight=0.80, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [esi], esi
test ecx, ecx
- je SHORT G_M55135_IG07 - ;; size=4 bbWeight=0.80 PerfScore 1.00 -G_M55135_IG04: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M55135_IG04
push gword ptr [ebp+0x1C] push gword ptr [ebp+0x18] push gword ptr [ebp+0x14] @@ -53,19 +46,14 @@ G_M55135_IG04: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000 mov ecx, esi call [<unknown method>] ; gcrRegs -[ecx] +[eax]
- ;; size=26 bbWeight=1 PerfScore 10.25 -G_M55135_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 14.50 +G_M55135_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi pop ebp ret 24 ;; size=5 bbWeight=1 PerfScore 3.00
-G_M55135_IG06: ; bbWeight=0.20, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] +[ecx] - test ecx, ecx - jne SHORT G_M55135_IG04 - ;; size=4 bbWeight=0.20 PerfScore 0.25 -G_M55135_IG07: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ecx]
+G_M55135_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax]
mov ecx, 0x4C5 mov edx, 0xD1FFAB1E call CORINFO_HELP_STRCNS @@ -77,6 +65,6 @@ G_M55135_IG07: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 int3 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 86, prolog size 4, PerfScore 27.25, instruction count 33, allocated bytes for code 86 (MethodHash=548e28a0) for method System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:SetItem(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]],byref,byref):System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:this (Tier1)
+; Total bytes of code 70, prolog size 4, PerfScore 21.00, instruction count 26, allocated bytes for code 70 (MethodHash=548e28a0) for method System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:SetItem(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]],byref,byref):System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:this (Tier1)
; ============================================================

-16 (-15.24%) : 41014.dasm - System.Text.Tests.PerfStringBuilder:AppendChar_Capacity(int):System.Text.StringBuilder:this (Tier0-FullOpts)

@@ -2,24 +2,24 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; fully interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Text.Tests.Perf_StringBuilder>
-; V01 arg1 [V01,T02] ( 5, 8 ) int -> [ebp-0x10] single-def -; V02 loc0 [V02,T00] ( 6, 14 ) ref -> edi class-hnd exact single-def <System.Text.StringBuilder> -; V03 loc1 [V03,T01] ( 4, 13 ) int -> ebx -; V04 tmp0 [V04,T07] ( 3, 6 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
+; V01 arg1 [V01,T04] ( 5, 76.00) int -> esi single-def +; V02 loc0 [V02,T01] ( 7,152.08) ref -> edi class-hnd exact single-def <System.Text.StringBuilder> +; V03 loc1 [V03,T00] ( 4,217.00) int -> ebx +; V04 tmp0 [V04,T05] ( 3, 6 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
-; V06 tmp2 [V06,T04] ( 3, 10 ) int -> edx "Inline stloc first use temp" -; V07 tmp3 [V07,T03] ( 3, 10 ) ref -> eax class-hnd "Inline stloc first use temp" <<unknown class>> -; V08 cse0 [V08,T05] ( 3, 10 ) int -> ecx "CSE - aggressive" -; V09 cse1 [V09,T06] ( 2, 8 ) int -> esi "CSE - aggressive"
+; V06 tmp2 [V06,T03] ( 3,146.08) int -> ecx "Inline stloc first use temp" +; V07 tmp3 [V07,T02] ( 3,146.08) ref -> edx class-hnd "Inline stloc first use temp" <<unknown class>>
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M16931_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -27,9 +27,8 @@ G_M16931_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- push eax
mov esi, edx
- ;; size=9 bbWeight=1 PerfScore 5.50
+ ;; size=8 bbWeight=1 PerfScore 4.50
G_M16931_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, 0xD1FFAB1E ; System.Text.StringBuilder call CORINFO_HELP_NEWSFAST @@ -43,53 +42,47 @@ G_M16931_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call [System.Text.StringBuilder:.ctor(int,int):this] ; gcrRegs -[eax ecx] xor ebx, ebx
- mov dword ptr [ebp-0x10], esi
test esi, esi
- jle SHORT G_M16931_IG07 - ;; size=36 bbWeight=1 PerfScore 8.50 -G_M16931_IG03: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+ jle SHORT G_M16931_IG06 + ;; size=33 bbWeight=1 PerfScore 7.50 +G_M16931_IG03: ; bbWeight=72.00, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [edi+0x0C]
- mov edx, ecx - mov eax, gword ptr [edi+0x04]
+ mov edx, gword ptr [edi+0x04] + ; gcrRegs +[edx] + cmp dword ptr [edx+0x04], ecx + jbe SHORT G_M16931_IG08 + ;; size=11 bbWeight=72.00 PerfScore 576.00 +G_M16931_IG04: ; bbWeight=2.08, gcrefRegs=00000084 {edx edi}, byrefRegs=00000000 {}, byref + mov word ptr [edx+2*ecx+0x08], 97 + inc dword ptr [edi+0x0C] + ;; size=10 bbWeight=2.08 PerfScore 8.32 +G_M16931_IG05: ; bbWeight=72.00, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[edx] + inc ebx + cmp ebx, esi + jl SHORT G_M16931_IG03 + ;; size=5 bbWeight=72.00 PerfScore 108.00 +G_M16931_IG06: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref + mov eax, edi
; gcrRegs +[eax]
- mov esi, dword ptr [eax+0x04] - cmp esi, edx - jbe SHORT G_M16931_IG05 - ;; size=15 bbWeight=4 PerfScore 30.00 -G_M16931_IG04: ; bbWeight=2, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref, isz - mov word ptr [eax+2*edx+0x08], 97 - inc ecx - mov dword ptr [edi+0x0C], ecx - jmp SHORT G_M16931_IG06 - ;; size=13 bbWeight=2 PerfScore 8.50 -G_M16931_IG05: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M16931_IG07: ; bbWeight=1, epilog, nogc, extend + pop ebx + pop esi + pop edi + pop ebp + ret + ;; size=5 bbWeight=1 PerfScore 3.00 +G_M16931_IG08: ; bbWeight=1.92, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] mov ecx, edi ; gcrRegs +[ecx] mov edx, 97 call [<unknown method>] ; gcrRegs -[ecx]
- ;; size=13 bbWeight=2 PerfScore 7.00 -G_M16931_IG06: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - inc ebx - mov esi, dword ptr [ebp-0x10] - cmp ebx, esi - mov dword ptr [ebp-0x10], esi - jl SHORT G_M16931_IG03 - ;; size=11 bbWeight=4 PerfScore 14.00 -G_M16931_IG07: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref - mov eax, edi - ; gcrRegs +[eax] - ;; size=2 bbWeight=1 PerfScore 0.25 -G_M16931_IG08: ; bbWeight=1, epilog, nogc, extend - pop ecx - pop ebx - pop esi - pop edi - pop ebp - ret - ;; size=6 bbWeight=1 PerfScore 3.50
+ jmp SHORT G_M16931_IG05 + ;; size=15 bbWeight=1.92 PerfScore 10.56
-; Total bytes of code 105, prolog size 9, PerfScore 77.25, instruction count 43, allocated bytes for code 105 (MethodHash=594ebddc) for method System.Text.Tests.Perf_StringBuilder:Append_Char_Capacity(int):System.Text.StringBuilder:this (Tier0-FullOpts)
+; Total bytes of code 89, prolog size 8, PerfScore 718.13, instruction count 35, allocated bytes for code 89 (MethodHash=594ebddc) for method System.Text.Tests.Perf_StringBuilder:Append_Char_Capacity(int):System.Text.StringBuilder:this (Tier0-FullOpts)
; ============================================================

-16 (-15.24%) : 43612.dasm - System.Text.Tests.PerfStringBuilder:AppendChar_Capacity(int):System.Text.StringBuilder:this (Tier0-FullOpts)

@@ -2,24 +2,24 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; fully interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Text.Tests.Perf_StringBuilder>
-; V01 arg1 [V01,T02] ( 5, 8 ) int -> [ebp-0x10] single-def -; V02 loc0 [V02,T00] ( 6, 14 ) ref -> edi class-hnd exact single-def <System.Text.StringBuilder> -; V03 loc1 [V03,T01] ( 4, 13 ) int -> ebx -; V04 tmp0 [V04,T07] ( 3, 6 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
+; V01 arg1 [V01,T04] ( 5, 76.00) int -> esi single-def +; V02 loc0 [V02,T01] ( 7,152.08) ref -> edi class-hnd exact single-def <System.Text.StringBuilder> +; V03 loc1 [V03,T00] ( 4,217.00) int -> ebx +; V04 tmp0 [V04,T05] ( 3, 6 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
-; V06 tmp2 [V06,T04] ( 3, 10 ) int -> edx "Inline stloc first use temp" -; V07 tmp3 [V07,T03] ( 3, 10 ) ref -> eax class-hnd "Inline stloc first use temp" <<unknown class>> -; V08 cse0 [V08,T05] ( 3, 10 ) int -> ecx "CSE - aggressive" -; V09 cse1 [V09,T06] ( 2, 8 ) int -> esi "CSE - aggressive"
+; V06 tmp2 [V06,T03] ( 3,146.08) int -> ecx "Inline stloc first use temp" +; V07 tmp3 [V07,T02] ( 3,146.08) ref -> edx class-hnd "Inline stloc first use temp" <<unknown class>>
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M16931_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -27,9 +27,8 @@ G_M16931_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- push eax
mov esi, edx
- ;; size=9 bbWeight=1 PerfScore 5.50
+ ;; size=8 bbWeight=1 PerfScore 4.50
G_M16931_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, 0xD1FFAB1E ; System.Text.StringBuilder call CORINFO_HELP_NEWSFAST @@ -43,53 +42,47 @@ G_M16931_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call [System.Text.StringBuilder:.ctor(int,int):this] ; gcrRegs -[eax ecx] xor ebx, ebx
- mov dword ptr [ebp-0x10], esi
test esi, esi
- jle SHORT G_M16931_IG07 - ;; size=36 bbWeight=1 PerfScore 8.50 -G_M16931_IG03: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+ jle SHORT G_M16931_IG06 + ;; size=33 bbWeight=1 PerfScore 7.50 +G_M16931_IG03: ; bbWeight=72.00, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [edi+0x0C]
- mov edx, ecx - mov eax, gword ptr [edi+0x04]
+ mov edx, gword ptr [edi+0x04] + ; gcrRegs +[edx] + cmp dword ptr [edx+0x04], ecx + jbe SHORT G_M16931_IG08 + ;; size=11 bbWeight=72.00 PerfScore 576.00 +G_M16931_IG04: ; bbWeight=2.08, gcrefRegs=00000084 {edx edi}, byrefRegs=00000000 {}, byref + mov word ptr [edx+2*ecx+0x08], 97 + inc dword ptr [edi+0x0C] + ;; size=10 bbWeight=2.08 PerfScore 8.32 +G_M16931_IG05: ; bbWeight=72.00, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[edx] + inc ebx + cmp ebx, esi + jl SHORT G_M16931_IG03 + ;; size=5 bbWeight=72.00 PerfScore 108.00 +G_M16931_IG06: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref + mov eax, edi
; gcrRegs +[eax]
- mov esi, dword ptr [eax+0x04] - cmp esi, edx - jbe SHORT G_M16931_IG05 - ;; size=15 bbWeight=4 PerfScore 30.00 -G_M16931_IG04: ; bbWeight=2, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref, isz - mov word ptr [eax+2*edx+0x08], 97 - inc ecx - mov dword ptr [edi+0x0C], ecx - jmp SHORT G_M16931_IG06 - ;; size=13 bbWeight=2 PerfScore 8.50 -G_M16931_IG05: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M16931_IG07: ; bbWeight=1, epilog, nogc, extend + pop ebx + pop esi + pop edi + pop ebp + ret + ;; size=5 bbWeight=1 PerfScore 3.00 +G_M16931_IG08: ; bbWeight=1.92, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] mov ecx, edi ; gcrRegs +[ecx] mov edx, 97 call [<unknown method>] ; gcrRegs -[ecx]
- ;; size=13 bbWeight=2 PerfScore 7.00 -G_M16931_IG06: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - inc ebx - mov esi, dword ptr [ebp-0x10] - cmp ebx, esi - mov dword ptr [ebp-0x10], esi - jl SHORT G_M16931_IG03 - ;; size=11 bbWeight=4 PerfScore 14.00 -G_M16931_IG07: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref - mov eax, edi - ; gcrRegs +[eax] - ;; size=2 bbWeight=1 PerfScore 0.25 -G_M16931_IG08: ; bbWeight=1, epilog, nogc, extend - pop ecx - pop ebx - pop esi - pop edi - pop ebp - ret - ;; size=6 bbWeight=1 PerfScore 3.50
+ jmp SHORT G_M16931_IG05 + ;; size=15 bbWeight=1.92 PerfScore 10.56
-; Total bytes of code 105, prolog size 9, PerfScore 77.25, instruction count 43, allocated bytes for code 105 (MethodHash=594ebddc) for method System.Text.Tests.Perf_StringBuilder:Append_Char_Capacity(int):System.Text.StringBuilder:this (Tier0-FullOpts)
+; Total bytes of code 89, prolog size 8, PerfScore 718.13, instruction count 35, allocated bytes for code 89 (MethodHash=594ebddc) for method System.Text.Tests.Perf_StringBuilder:Append_Char_Capacity(int):System.Text.StringBuilder:this (Tier0-FullOpts)
; ============================================================

+33 (+28.21%) : 47957.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span1[uint],System.ReadOnlySpan1[uint],ulong):uint (Tier0-FullOpts)

@@ -2,29 +2,34 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; fully interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T08] ( 2, 8 ) struct ( 8) [ebp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[uint]> -; V01 arg1 [V01,T10] ( 2, 5 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
+; V00 arg0 [V00,T14] ( 2, 2 ) struct ( 8) [ebp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[uint]> +; V01 arg1 [V01,T15] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V02 arg2 [V02 ] ( 0, 0 ) long -> zero-ref single-def ;* V03 loc0 [V03 ] ( 0, 0 ) long -> zero-ref
-; V04 loc1 [V04,T00] ( 7, 25 ) int -> [ebp-0x10] -; V05 loc2 [V05,T04] ( 3, 12 ) int -> eax -; V06 loc3 [V06,T03] ( 3, 12 ) byref -> ecx -; V07 tmp0 [V07,T09] ( 3, 6 ) int -> [ebp-0x14] spill-single-def "V01.[004..008)" -; V08 cse0 [V08,T05] ( 3, 12 ) int -> esi "CSE - moderate" -; V09 rat0 [V09,T11] ( 1, 4 ) int -> [ebp+0x08] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-INDEP -; V10 rat1 [V10,T12] ( 1, 4 ) int -> [ebp+0x0C] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-INDEP -; V11 rat2 [V11,T01] ( 8, 22 ) int -> edi "field V03.lo (fldOffset=0x0)" P-INDEP -; V12 rat3 [V12,T02] ( 7, 21 ) int -> ebx "field V03.hi (fldOffset=0x4)" P-INDEP -; V13 rat4 [V13 ] ( 1, 8 ) long -> [ebp-0x1C] multireg-ret "ReplaceWithLclVar is creating a new local variable" -; V14 rat5 [V14,T06] ( 2, 12 ) int -> eax "field V13.lo (fldOffset=0x0)" P-INDEP -; V15 rat6 [V15,T07] ( 2, 12 ) int -> edx "field V13.hi (fldOffset=0x4)" P-INDEP
+; V04 loc1 [V04,T00] ( 7,433.00) int -> esi +; V05 loc2 [V05,T04] ( 3,216.00) int -> eax +; V06 loc3 [V06,T03] ( 3,216.00) byref -> ebx +; V07 tmp0 [V07,T09] ( 2, 73.00) byref -> [ebp-0x28] spill-single-def "V00.[000..004)" +; V08 tmp1 [V08,T11] ( 2, 73.00) int -> [ebp-0x10] spill-single-def "V00.[004..008)" +; V09 tmp2 [V09,T10] ( 2, 73.00) byref -> [ebp-0x2C] spill-single-def "V01.[000..004)" +; V10 tmp3 [V10,T08] ( 3, 74.00) int -> [ebp-0x14] spill-single-def "V01.[004..008)" +; V11 cse0 [V11,T05] ( 3,216.00) int -> edi "CSE - moderate" +; V12 rat0 [V12,T12] ( 1, 72.00) int -> [ebp+0x08] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-INDEP +; V13 rat1 [V13,T13] ( 1, 72.00) int -> [ebp+0x0C] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-INDEP +; V14 rat2 [V14,T01] ( 8,327.44) int -> [ebp-0x18] "field V03.lo (fldOffset=0x0)" P-INDEP +; V15 rat3 [V15,T02] ( 7,326.44) int -> [ebp-0x1C] "field V03.hi (fldOffset=0x4)" P-INDEP +; V16 rat4 [V16 ] ( 1,144.00) long -> [ebp-0x24] multireg-ret "ReplaceWithLclVar is creating a new local variable" +; V17 rat5 [V17,T06] ( 2,216.00) int -> eax "field V16.lo (fldOffset=0x0)" P-INDEP +; V18 rat6 [V18,T07] ( 2,216.00) int -> edx "field V16.hi (fldOffset=0x4)" P-INDEP
;
-; Lcl frame size = 16
+; Lcl frame size = 32
G_M60135_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -32,59 +37,70 @@ G_M60135_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 32
;; size=9 bbWeight=1 PerfScore 4.50 G_M60135_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov esi, dword ptr [ebp+0x14] - mov dword ptr [ebp-0x14], esi - xor edi, edi - xor ebx, ebx - xor eax, eax - test esi, esi - jle SHORT G_M60135_IG06 - ;; size=16 bbWeight=1 PerfScore 4.00 -G_M60135_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov edx, bword ptr [ebp+0x10] - ; byrRegs +[edx]
+ mov esi, bword ptr [ebp+0x18] + ; byrRegs +[esi] + mov bword ptr [ebp-0x28], esi + ; GC ptr vars +{V07} + mov edi, dword ptr [ebp+0x1C] + mov dword ptr [ebp-0x10], edi + mov ebx, bword ptr [ebp+0x10] + ; byrRegs +[ebx] + mov bword ptr [ebp-0x2C], ebx + ; GC ptr vars +{V09} + mov eax, dword ptr [ebp+0x14] + mov dword ptr [ebp-0x14], eax + xor edx, edx + xor ecx, ecx + mov dword ptr [ebp-0x18], edx + mov dword ptr [ebp-0x1C], ecx + xor esi, esi + ; byrRegs -[esi] + test eax, eax + jle SHORT G_M60135_IG09 + ;; size=40 bbWeight=1 PerfScore 12.00 +G_M60135_IG03: ; bbWeight=72.00, gcVars=00000600 {V07 V09}, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
push 0
- mov dword ptr [ebp-0x10], eax - push dword ptr [edx+4*eax]
+ push dword ptr [ebx+4*esi]
push dword ptr [ebp+0x0C] push dword ptr [ebp+0x08] call CORINFO_HELP_LMUL
- ; byrRegs -[edx] - add edi, eax - adc ebx, edx - mov eax, edi
+ ; byrRegs -[ebx] + mov ecx, dword ptr [ebp-0x18] + add eax, ecx + mov ecx, dword ptr [ebp-0x1C] + adc ecx, edx + mov edx, eax
xor edx, edx
- mov edi, ebx - xor ebx, ebx - mov edx, dword ptr [ebp-0x10] - cmp edx, dword ptr [ebp+0x1C] - jae SHORT G_M60135_IG08 - mov ecx, bword ptr [ebp+0x18] - ; byrRegs +[ecx] - lea ecx, bword ptr [ecx+4*edx] - mov esi, dword ptr [ecx] - cmp esi, eax
+ cmp esi, edi + jae SHORT G_M60135_IG10 + mov ebx, bword ptr [ebp-0x28] + ; byrRegs +[ebx] + lea ebx, bword ptr [ebx+4*esi] + mov edi, dword ptr [ebx] + cmp edi, eax
jae SHORT G_M60135_IG05
- ;; size=54 bbWeight=4 PerfScore 74.00 -G_M60135_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref - add edi, 1 - adc ebx, 0 - ;; size=6 bbWeight=2 PerfScore 1.50 -G_M60135_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz - sub esi, eax - mov dword ptr [ecx], esi - inc edx - mov esi, dword ptr [ebp-0x14] - cmp edx, esi - mov eax, edx - jl SHORT G_M60135_IG03 - ;; size=14 bbWeight=4 PerfScore 16.00 -G_M60135_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; byrRegs -[ecx] - mov eax, edi
+ ;; size=46 bbWeight=72.00 PerfScore 1098.00 +G_M60135_IG04: ; bbWeight=18.72, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref + add ecx, 1 + adc edx, 0 + ;; size=6 bbWeight=18.72 PerfScore 14.04 +G_M60135_IG05: ; bbWeight=72.00, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz + sub edi, eax + mov dword ptr [ebx], edi + inc esi + mov edi, dword ptr [ebp-0x14] + cmp esi, edi + mov dword ptr [ebp-0x1C], edx + mov ebx, bword ptr [ebp-0x2C] + jl SHORT G_M60135_IG08 + ;; size=18 bbWeight=72.00 PerfScore 414.00 +G_M60135_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; byrRegs -[ebx] + ; GC ptr vars -{V07 V09} + mov eax, ecx
;; size=2 bbWeight=1 PerfScore 0.25 G_M60135_IG07: ; bbWeight=1, epilog, nogc, extend lea esp, [ebp-0x0C] @@ -94,11 +110,24 @@ G_M60135_IG07: ; bbWeight=1, epilog, nogc, extend pop ebp ret 24 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M60135_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M60135_IG08: ; bbWeight=36.00, gcVars=00000600 {V07 V09}, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, gcvars, byref, isz + ; byrRegs +[ebx] + ; GC ptr vars +{V07 V09 V10} + mov dword ptr [ebp-0x18], ecx + mov edi, dword ptr [ebp-0x10] + jmp SHORT G_M60135_IG03 + ;; size=8 bbWeight=36.00 PerfScore 144.00 +G_M60135_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; byrRegs -[ebx] + ; GC ptr vars -{V07 V09 V10} + mov ecx, dword ptr [ebp-0x18] + jmp SHORT G_M60135_IG06 + ;; size=5 bbWeight=0.50 PerfScore 1.50 +G_M60135_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 117, prolog size 9, PerfScore 104.75, instruction count 52, allocated bytes for code 117 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier0-FullOpts)
+; Total bytes of code 150, prolog size 9, PerfScore 1692.79, instruction count 63, allocated bytes for code 150 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier0-FullOpts)
; ============================================================

+33 (+28.21%) : 27254.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span1[uint],System.ReadOnlySpan1[uint],ulong):uint (Tier0-FullOpts)

@@ -2,29 +2,34 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; fully interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T08] ( 2, 8 ) struct ( 8) [ebp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[uint]> -; V01 arg1 [V01,T10] ( 2, 5 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
+; V00 arg0 [V00,T14] ( 2, 2 ) struct ( 8) [ebp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[uint]> +; V01 arg1 [V01,T15] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V02 arg2 [V02 ] ( 0, 0 ) long -> zero-ref single-def ;* V03 loc0 [V03 ] ( 0, 0 ) long -> zero-ref
-; V04 loc1 [V04,T00] ( 7, 25 ) int -> [ebp-0x10] -; V05 loc2 [V05,T04] ( 3, 12 ) int -> eax -; V06 loc3 [V06,T03] ( 3, 12 ) byref -> ecx -; V07 tmp0 [V07,T09] ( 3, 6 ) int -> [ebp-0x14] spill-single-def "V01.[004..008)" -; V08 cse0 [V08,T05] ( 3, 12 ) int -> esi "CSE - moderate" -; V09 rat0 [V09,T11] ( 1, 4 ) int -> [ebp+0x08] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-INDEP -; V10 rat1 [V10,T12] ( 1, 4 ) int -> [ebp+0x0C] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-INDEP -; V11 rat2 [V11,T01] ( 8, 22 ) int -> edi "field V03.lo (fldOffset=0x0)" P-INDEP -; V12 rat3 [V12,T02] ( 7, 21 ) int -> ebx "field V03.hi (fldOffset=0x4)" P-INDEP -; V13 rat4 [V13 ] ( 1, 8 ) long -> [ebp-0x1C] multireg-ret "ReplaceWithLclVar is creating a new local variable" -; V14 rat5 [V14,T06] ( 2, 12 ) int -> eax "field V13.lo (fldOffset=0x0)" P-INDEP -; V15 rat6 [V15,T07] ( 2, 12 ) int -> edx "field V13.hi (fldOffset=0x4)" P-INDEP
+; V04 loc1 [V04,T00] ( 7,433.00) int -> esi +; V05 loc2 [V05,T04] ( 3,216.00) int -> eax +; V06 loc3 [V06,T03] ( 3,216.00) byref -> ebx +; V07 tmp0 [V07,T09] ( 2, 73.00) byref -> [ebp-0x28] spill-single-def "V00.[000..004)" +; V08 tmp1 [V08,T11] ( 2, 73.00) int -> [ebp-0x10] spill-single-def "V00.[004..008)" +; V09 tmp2 [V09,T10] ( 2, 73.00) byref -> [ebp-0x2C] spill-single-def "V01.[000..004)" +; V10 tmp3 [V10,T08] ( 3, 74.00) int -> [ebp-0x14] spill-single-def "V01.[004..008)" +; V11 cse0 [V11,T05] ( 3,216.00) int -> edi "CSE - moderate" +; V12 rat0 [V12,T12] ( 1, 72.00) int -> [ebp+0x08] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-INDEP +; V13 rat1 [V13,T13] ( 1, 72.00) int -> [ebp+0x0C] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-INDEP +; V14 rat2 [V14,T01] ( 8,327.44) int -> [ebp-0x18] "field V03.lo (fldOffset=0x0)" P-INDEP +; V15 rat3 [V15,T02] ( 7,326.44) int -> [ebp-0x1C] "field V03.hi (fldOffset=0x4)" P-INDEP +; V16 rat4 [V16 ] ( 1,144.00) long -> [ebp-0x24] multireg-ret "ReplaceWithLclVar is creating a new local variable" +; V17 rat5 [V17,T06] ( 2,216.00) int -> eax "field V16.lo (fldOffset=0x0)" P-INDEP +; V18 rat6 [V18,T07] ( 2,216.00) int -> edx "field V16.hi (fldOffset=0x4)" P-INDEP
;
-; Lcl frame size = 16
+; Lcl frame size = 32
G_M60135_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -32,59 +37,70 @@ G_M60135_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 32
;; size=9 bbWeight=1 PerfScore 4.50 G_M60135_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov esi, dword ptr [ebp+0x14] - mov dword ptr [ebp-0x14], esi - xor edi, edi - xor ebx, ebx - xor eax, eax - test esi, esi - jle SHORT G_M60135_IG06 - ;; size=16 bbWeight=1 PerfScore 4.00 -G_M60135_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov edx, bword ptr [ebp+0x10] - ; byrRegs +[edx]
+ mov esi, bword ptr [ebp+0x18] + ; byrRegs +[esi] + mov bword ptr [ebp-0x28], esi + ; GC ptr vars +{V07} + mov edi, dword ptr [ebp+0x1C] + mov dword ptr [ebp-0x10], edi + mov ebx, bword ptr [ebp+0x10] + ; byrRegs +[ebx] + mov bword ptr [ebp-0x2C], ebx + ; GC ptr vars +{V09} + mov eax, dword ptr [ebp+0x14] + mov dword ptr [ebp-0x14], eax + xor edx, edx + xor ecx, ecx + mov dword ptr [ebp-0x18], edx + mov dword ptr [ebp-0x1C], ecx + xor esi, esi + ; byrRegs -[esi] + test eax, eax + jle SHORT G_M60135_IG09 + ;; size=40 bbWeight=1 PerfScore 12.00 +G_M60135_IG03: ; bbWeight=72.00, gcVars=00000600 {V07 V09}, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
push 0
- mov dword ptr [ebp-0x10], eax - push dword ptr [edx+4*eax]
+ push dword ptr [ebx+4*esi]
push dword ptr [ebp+0x0C] push dword ptr [ebp+0x08] call CORINFO_HELP_LMUL
- ; byrRegs -[edx] - add edi, eax - adc ebx, edx - mov eax, edi
+ ; byrRegs -[ebx] + mov ecx, dword ptr [ebp-0x18] + add eax, ecx + mov ecx, dword ptr [ebp-0x1C] + adc ecx, edx + mov edx, eax
xor edx, edx
- mov edi, ebx - xor ebx, ebx - mov edx, dword ptr [ebp-0x10] - cmp edx, dword ptr [ebp+0x1C] - jae SHORT G_M60135_IG08 - mov ecx, bword ptr [ebp+0x18] - ; byrRegs +[ecx] - lea ecx, bword ptr [ecx+4*edx] - mov esi, dword ptr [ecx] - cmp esi, eax
+ cmp esi, edi + jae SHORT G_M60135_IG10 + mov ebx, bword ptr [ebp-0x28] + ; byrRegs +[ebx] + lea ebx, bword ptr [ebx+4*esi] + mov edi, dword ptr [ebx] + cmp edi, eax
jae SHORT G_M60135_IG05
- ;; size=54 bbWeight=4 PerfScore 74.00 -G_M60135_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref - add edi, 1 - adc ebx, 0 - ;; size=6 bbWeight=2 PerfScore 1.50 -G_M60135_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz - sub esi, eax - mov dword ptr [ecx], esi - inc edx - mov esi, dword ptr [ebp-0x14] - cmp edx, esi - mov eax, edx - jl SHORT G_M60135_IG03 - ;; size=14 bbWeight=4 PerfScore 16.00 -G_M60135_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; byrRegs -[ecx] - mov eax, edi
+ ;; size=46 bbWeight=72.00 PerfScore 1098.00 +G_M60135_IG04: ; bbWeight=18.72, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref + add ecx, 1 + adc edx, 0 + ;; size=6 bbWeight=18.72 PerfScore 14.04 +G_M60135_IG05: ; bbWeight=72.00, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz + sub edi, eax + mov dword ptr [ebx], edi + inc esi + mov edi, dword ptr [ebp-0x14] + cmp esi, edi + mov dword ptr [ebp-0x1C], edx + mov ebx, bword ptr [ebp-0x2C] + jl SHORT G_M60135_IG08 + ;; size=18 bbWeight=72.00 PerfScore 414.00 +G_M60135_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; byrRegs -[ebx] + ; GC ptr vars -{V07 V09} + mov eax, ecx
;; size=2 bbWeight=1 PerfScore 0.25 G_M60135_IG07: ; bbWeight=1, epilog, nogc, extend lea esp, [ebp-0x0C] @@ -94,11 +110,24 @@ G_M60135_IG07: ; bbWeight=1, epilog, nogc, extend pop ebp ret 24 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M60135_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M60135_IG08: ; bbWeight=36.00, gcVars=00000600 {V07 V09}, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, gcvars, byref, isz + ; byrRegs +[ebx] + ; GC ptr vars +{V07 V09 V10} + mov dword ptr [ebp-0x18], ecx + mov edi, dword ptr [ebp-0x10] + jmp SHORT G_M60135_IG03 + ;; size=8 bbWeight=36.00 PerfScore 144.00 +G_M60135_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; byrRegs -[ebx] + ; GC ptr vars -{V07 V09 V10} + mov ecx, dword ptr [ebp-0x18] + jmp SHORT G_M60135_IG06 + ;; size=5 bbWeight=0.50 PerfScore 1.50 +G_M60135_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 117, prolog size 9, PerfScore 104.75, instruction count 52, allocated bytes for code 117 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier0-FullOpts)
+; Total bytes of code 150, prolog size 9, PerfScore 1692.79, instruction count 63, allocated bytes for code 150 (MethodHash=01ed1518) for method System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier0-FullOpts)
; ============================================================

+34 (+44.74%) : 2668.dasm - System.Linq.Enumerable+SelectArrayIterator2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan1[System.Canon],System.Span1[System.__Canon],System.Func2[System.Canon,System.__Canon]) (Tier0-FullOpts)

@@ -2,21 +2,26 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 2, 8 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.__Canon]> -; V01 arg1 [V01,T04] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.__Canon]> -; V02 arg2 [V02,T01] ( 4, 10 ) ref -> esi class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
+; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.__Canon]> +; V01 arg1 [V01,T07] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.__Canon]> +; V02 arg2 [V02,T01] ( 4,146.00) ref -> esi class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
;* V03 TypeCtx [V03 ] ( 0, 0 ) int -> zero-ref single-def
-; V04 loc0 [V04,T00] ( 7, 25 ) int -> ebx
+; V04 loc0 [V04,T00] ( 7,433.00) int -> [ebp-0x10]
;* V05 loc1 [V05 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
-; V06 tmp1 [V06,T03] ( 3, 6 ) int -> edi "V01.[004..008)" -; TEMP_01 byref -> [ebp-0x10]
+; V06 tmp1 [V06,T03] ( 2, 73.00) byref -> edi single-def "V00.[000..004)" +; V07 tmp2 [V07,T05] ( 2, 73.00) int -> ebx "V00.[004..008)" +; V08 tmp3 [V08,T04] ( 2, 73.00) byref -> [ebp-0x18] spill-single-def "V01.[000..004)" +; V09 tmp4 [V09,T02] ( 3, 74.00) int -> [ebp-0x14] spill-single-def "V01.[004..008)" +; TEMP_01 byref -> [ebp-0x1C]
;
-; Lcl frame size = 4
+; Lcl frame size = 16
G_M2996_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -24,58 +29,82 @@ G_M2996_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- push eax
+ sub esp, 16
xor eax, eax
- mov dword ptr [ebp-0x10], eax
+ mov dword ptr [ebp-0x1C], eax
mov esi, ecx ; gcrRegs +[esi]
- ;; size=14 bbWeight=1 PerfScore 6.75
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M2996_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, dword ptr [ebp+0x0C] - xor ebx, ebx - test edi, edi
+ mov edi, bword ptr [ebp+0x10] + ; byrRegs +[edi] + mov ebx, dword ptr [ebp+0x14] + mov eax, bword ptr [ebp+0x08] + ; byrRegs +[eax] + mov bword ptr [ebp-0x18], eax + ; GC ptr vars +{V08} + mov ecx, dword ptr [ebp+0x0C] + mov dword ptr [ebp-0x14], ecx + xor edx, edx + test ecx, ecx
jle SHORT G_M2996_IG04
- ;; size=9 bbWeight=1 PerfScore 2.50 -G_M2996_IG03: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov edx, bword ptr [ebp+0x08]
+ ;; size=24 bbWeight=1 PerfScore 7.50 +G_M2996_IG03: ; bbWeight=72.00, gcVars=00000010 {V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000081 {eax edi}, gcvars, byref, isz + mov dword ptr [ebp-0x10], edx + lea edx, bword ptr [eax+4*edx]
; byrRegs +[edx]
- lea edx, bword ptr [edx+4*ebx] - mov bword ptr [ebp-0x10], edx - cmp ebx, dword ptr [ebp+0x14] - jae SHORT G_M2996_IG05 - mov ecx, bword ptr [ebp+0x10] - ; byrRegs +[ecx] - mov edx, gword ptr [ecx+4*ebx]
+ mov bword ptr [ebp-0x1C], edx + mov eax, dword ptr [ebp-0x10] + ; byrRegs -[eax] + cmp eax, ebx + jae SHORT G_M2996_IG06 + mov dword ptr [ebp-0x10], eax + mov edx, gword ptr [edi+4*eax]
; gcrRegs +[edx] ; byrRegs -[edx] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx]
- ; byrRegs -[ecx]
call [esi+0x0C]<unknown method> ; gcrRegs -[ecx edx] +[eax]
- mov edx, bword ptr [ebp-0x10]
+ mov edx, bword ptr [ebp-0x1C]
; byrRegs +[edx] call CORINFO_HELP_CHECKED_ASSIGN_REF_EAX ; gcrRegs -[eax] ; byrRegs -[edx]
- inc ebx - cmp ebx, edi - jl SHORT G_M2996_IG03 - ;; size=39 bbWeight=4 PerfScore 68.00 -G_M2996_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ mov eax, dword ptr [ebp-0x10] + inc eax + mov ecx, dword ptr [ebp-0x14] + cmp eax, ecx + mov edx, eax + jl SHORT G_M2996_IG05 + ;; size=49 bbWeight=72.00 PerfScore 1332.00 +G_M2996_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[esi]
- pop ecx
+ ; byrRegs -[edi] + ; GC ptr vars -{V08} + lea esp, [ebp-0x0C]
pop ebx pop esi pop edi pop ebp ret 16
- ;; size=8 bbWeight=1 PerfScore 4.50 -G_M2996_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=10 bbWeight=1 PerfScore 4.50 +G_M2996_IG05: ; bbWeight=36.00, gcVars=00000010 {V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz + ; gcrRegs +[esi] + ; byrRegs +[edi] + ; GC ptr vars +{V04 V08} + mov eax, bword ptr [ebp-0x18] + ; byrRegs +[eax] + jmp SHORT G_M2996_IG03 + ;; size=5 bbWeight=36.00 PerfScore 108.00 +G_M2996_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[esi] + ; byrRegs -[eax edi] + ; GC ptr vars -{V04 V08}
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 12, PerfScore 81.75, instruction count 35, allocated bytes for code 76 (MethodHash=b58ef44b) for method System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier0-FullOpts)
+; Total bytes of code 110, prolog size 14, PerfScore 1458.00, instruction count 46, allocated bytes for code 110 (MethodHash=b58ef44b) for method System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier0-FullOpts)
; ============================================================

benchmarks.run_tiered.windows.x86.checked.mch

-7 (-22.58%) : 70601.dasm - Jil.Common.Utils+<>cDisplayClass9_0:b6(System.Reflection.FieldInfo):int:this (Tier1)

@@ -2,25 +2,25 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier1 code ; optimized code
-; ebp based frame
+; optimized using Synthesized PGO +; esp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> ecx this class-hnd single-def <Jil.Common.Utils+<>c__DisplayClass9_0> ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> edx class-hnd single-def <System.Reflection.FieldInfo>
-; V02 loc0 [V02,T04] ( 2, 1 ) int -> eax ld-addr-op
+; V02 loc0 [V02,T04] ( 2, 1.04) int -> eax ld-addr-op
;* V03 tmp0 [V03,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V04 tmp1 [V04,T00] ( 3, 6 ) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>>
-; V05 tmp2 [V05,T03] ( 3, 2.50) byref -> eax single-def "Inline stloc first use temp"
+; V05 tmp2 [V05,T03] ( 3, 2.52) byref -> eax single-def "Inline stloc first use temp"
; ; Lcl frame size = 0 G_M45289_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp - ;; size=3 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M45289_IG02: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx edx] mov ecx, gword ptr [ecx+0x14] @@ -29,25 +29,22 @@ G_M45289_IG02: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=0000 ; gcrRegs -[ecx edx] ; byrRegs +[eax] test eax, eax
- je SHORT G_M45289_IG04
+ je SHORT G_M45289_IG05
;; size=15 bbWeight=1 PerfScore 9.25
-G_M45289_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
+G_M45289_IG03: ; bbWeight=0.52, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref
mov eax, dword ptr [eax] ; byrRegs -[eax]
- jmp SHORT G_M45289_IG06 - ;; size=4 bbWeight=0.50 PerfScore 2.00 -G_M45289_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=2 bbWeight=0.52 PerfScore 1.04 +G_M45289_IG04: ; bbWeight=0.52, epilog, nogc, extend + ret + ;; size=1 bbWeight=0.52 PerfScore 0.52 +G_M45289_IG05: ; bbWeight=0.48, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov eax, 0xD1FFAB1E
- ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M45289_IG05: ; bbWeight=0.50, epilog, nogc, extend - pop ebp
+ ;; size=5 bbWeight=0.48 PerfScore 0.12 +G_M45289_IG06: ; bbWeight=0.48, epilog, nogc, extend
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75 -G_M45289_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc - pop ebp - ret - ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=1 bbWeight=0.48 PerfScore 0.48
-; Total bytes of code 31, prolog size 3, PerfScore 14.12, instruction count 14, allocated bytes for code 31 (MethodHash=685a4f16) for method Jil.Common.Utils+<>c__DisplayClass9_0:<IdealMemberOrderForWriting>b__6(System.Reflection.FieldInfo):int:this (Tier1)
+; Total bytes of code 24, prolog size 0, PerfScore 11.41, instruction count 9, allocated bytes for code 24 (MethodHash=685a4f16) for method Jil.Common.Utils+<>c__DisplayClass9_0:<IdealMemberOrderForWriting>b__6(System.Reflection.FieldInfo):int:this (Tier1)
; ============================================================

-7 (-21.21%) : 44361.dasm - MessagePack.Internal.BuiltinResolverGetFormatterHelper:GetFormatter(System.Type):System.Object (Tier1)

@@ -2,26 +2,26 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier1 code ; optimized code
-; ebp based frame
+; optimized using Synthesized PGO +; esp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> edx class-hnd single-def <System.Type>
-; V01 loc0 [V01,T03] ( 2, 1 ) ref -> eax ld-addr-op class-hnd <System.Object>
+; V01 loc0 [V01,T03] ( 2, 1.04) ref -> eax ld-addr-op class-hnd <System.Object>
;* V02 tmp0 [V02,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V04 tmp2 [V04,T02] ( 3, 2.50) byref -> eax single-def "Inline stloc first use temp"
+; V04 tmp2 [V04,T02] ( 3, 2.52) byref -> eax single-def "Inline stloc first use temp"
; ; Lcl frame size = 0 G_M25826_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp
mov edx, ecx ; gcrRegs +[edx]
- ;; size=5 bbWeight=1 PerfScore 1.50
+ ;; size=2 bbWeight=1 PerfScore 0.25
G_M25826_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ecx] @@ -30,28 +30,25 @@ G_M25826_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 ; gcrRegs -[ecx edx] ; byrRegs +[eax] test eax, eax
- je SHORT G_M25826_IG04
+ je SHORT G_M25826_IG05
;; size=18 bbWeight=1 PerfScore 9.25
-G_M25826_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
+G_M25826_IG03: ; bbWeight=0.52, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref
mov eax, gword ptr [eax] ; gcrRegs +[eax] ; byrRegs -[eax]
- jmp SHORT G_M25826_IG06 - ;; size=4 bbWeight=0.50 PerfScore 2.00 -G_M25826_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=2 bbWeight=0.52 PerfScore 1.04 +G_M25826_IG04: ; bbWeight=0.52, epilog, nogc, extend + ret + ;; size=1 bbWeight=0.52 PerfScore 0.52 +G_M25826_IG05: ; bbWeight=0.48, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] xor eax, eax ; gcrRegs +[eax]
- ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M25826_IG05: ; bbWeight=0.50, epilog, nogc, extend - pop ebp
+ ;; size=2 bbWeight=0.48 PerfScore 0.12 +G_M25826_IG06: ; bbWeight=0.48, epilog, nogc, extend
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75 -G_M25826_IG06: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc - pop ebp - ret - ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=1 bbWeight=0.48 PerfScore 0.48
-; Total bytes of code 33, prolog size 3, PerfScore 14.38, instruction count 15, allocated bytes for code 33 (MethodHash=089c9b1d) for method MessagePack.Internal.BuiltinResolverGetFormatterHelper:GetFormatter(System.Type):System.Object (Tier1)
+; Total bytes of code 26, prolog size 0, PerfScore 11.66, instruction count 10, allocated bytes for code 26 (MethodHash=089c9b1d) for method MessagePack.Internal.BuiltinResolverGetFormatterHelper:GetFormatter(System.Type):System.Object (Tier1)
; ============================================================

-7 (-21.21%) : 5632.dasm - Utf8Json.Resolvers.BuiltinResolver+BuiltinResolverGetFormatterHelper:GetFormatter(System.Type):System.Object (Tier1)

@@ -2,26 +2,26 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier1 code ; optimized code
-; ebp based frame
+; optimized using Synthesized PGO +; esp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> edx class-hnd single-def <System.Type>
-; V01 loc0 [V01,T03] ( 2, 1 ) ref -> eax ld-addr-op class-hnd <System.Object>
+; V01 loc0 [V01,T03] ( 2, 1.04) ref -> eax ld-addr-op class-hnd <System.Object>
;* V02 tmp0 [V02,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V04 tmp2 [V04,T02] ( 3, 2.50) byref -> eax single-def "Inline stloc first use temp"
+; V04 tmp2 [V04,T02] ( 3, 2.52) byref -> eax single-def "Inline stloc first use temp"
; ; Lcl frame size = 0 G_M46729_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp
mov edx, ecx ; gcrRegs +[edx]
- ;; size=5 bbWeight=1 PerfScore 1.50
+ ;; size=2 bbWeight=1 PerfScore 0.25
G_M46729_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ecx] @@ -30,28 +30,25 @@ G_M46729_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 ; gcrRegs -[ecx edx] ; byrRegs +[eax] test eax, eax
- je SHORT G_M46729_IG04
+ je SHORT G_M46729_IG05
;; size=18 bbWeight=1 PerfScore 9.25
-G_M46729_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
+G_M46729_IG03: ; bbWeight=0.52, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref
mov eax, gword ptr [eax] ; gcrRegs +[eax] ; byrRegs -[eax]
- jmp SHORT G_M46729_IG06 - ;; size=4 bbWeight=0.50 PerfScore 2.00 -G_M46729_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=2 bbWeight=0.52 PerfScore 1.04 +G_M46729_IG04: ; bbWeight=0.52, epilog, nogc, extend + ret + ;; size=1 bbWeight=0.52 PerfScore 0.52 +G_M46729_IG05: ; bbWeight=0.48, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] xor eax, eax ; gcrRegs +[eax]
- ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M46729_IG05: ; bbWeight=0.50, epilog, nogc, extend - pop ebp
+ ;; size=2 bbWeight=0.48 PerfScore 0.12 +G_M46729_IG06: ; bbWeight=0.48, epilog, nogc, extend
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75 -G_M46729_IG06: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc - pop ebp - ret - ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=1 bbWeight=0.48 PerfScore 0.48
-; Total bytes of code 33, prolog size 3, PerfScore 14.38, instruction count 15, allocated bytes for code 33 (MethodHash=5d514976) for method Utf8Json.Resolvers.BuiltinResolver+BuiltinResolverGetFormatterHelper:GetFormatter(System.Type):System.Object (Tier1)
+; Total bytes of code 26, prolog size 0, PerfScore 11.66, instruction count 10, allocated bytes for code 26 (MethodHash=5d514976) for method Utf8Json.Resolvers.BuiltinResolver+BuiltinResolverGetFormatterHelper:GetFormatter(System.Type):System.Object (Tier1)
; ============================================================

+21 (+40.38%) : 4624.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)

@@ -2,29 +2,33 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier1 code ; optimized code
-; esp based frame
+; optimized using Synthesized PGO +; ebp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 5.50) ref -> ecx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V00 this [V00,T00] ( 8, 7.20) 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, 3.50) int -> eax -; V03 loc1 [V03,T03] ( 4, 3 ) ref -> esi class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T03] ( 5, 4.40) int -> eax +; V03 loc1 [V03,T04] ( 4, 3.60) 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] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V07 rat0 [V07,T05] ( 2, 3.20) int -> edx "Spilling to split statement for tree"
;* V08 rat1 [V08,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V09 rat2 [V09,T04] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V09 rat2 [V09,T02] ( 2, 3.20) int -> edx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 G_M49890_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+ push ebp + mov ebp, esp
push edi push esi
- ;; size=2 bbWeight=1 PerfScore 2.00
+ ;; size=5 bbWeight=1 PerfScore 3.25
G_M49890_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 {edx}, byref, isz ; gcrRegs +[ecx] ; byrRegs +[edx] @@ -34,24 +38,9 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 ; gcrRegs +[esi] mov edi, dword ptr [esi+0x04] cmp edi, eax
- ja SHORT G_M49890_IG05
+ jbe SHORT G_M49890_IG05
;; size=14 bbWeight=1 PerfScore 7.50
-G_M49890_IG03: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 {edx}, byref - ; gcrRegs -[esi] - xor eax, eax - ; gcrRegs +[eax] - mov gword ptr [edx], eax - ;; size=4 bbWeight=0.50 PerfScore 0.62 -G_M49890_IG04: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, epilog, nogc - ; gcrRegs -[eax] - ; byrRegs -[edx] - pop esi - pop edi - ret - ;; size=3 bbWeight=0.50 PerfScore 1.00 -G_M49890_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000004 {edx}, gcvars, byref - ; gcrRegs +[esi] - ; byrRegs +[edx]
+G_M49890_IG03: ; bbWeight=0.80, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000004 {edx}, byref, isz
inc dword ptr [ecx+0x0C] mov dword ptr [ecx+0x08], eax mov edi, gword ptr [esi+4*eax+0x08] @@ -59,17 +48,45 @@ G_M49890_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {e 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.80 PerfScore 13.00 +G_M49890_IG04: ; bbWeight=0.16, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M49890_IG07 + ;; size=2 bbWeight=0.16 PerfScore 0.32 +G_M49890_IG05: ; bbWeight=0.20, 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.20 PerfScore 0.25 +G_M49890_IG06: ; bbWeight=0.20, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, epilog, nogc + ; gcrRegs -[eax] + ; byrRegs -[edx] + pop esi + pop edi + pop ebp + ret + ;; size=4 bbWeight=0.20 PerfScore 0.50 +G_M49890_IG07: ; bbWeight=0.80, 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=26 bbWeight=0.50 PerfScore 4.25 -G_M49890_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=11 bbWeight=0.80 PerfScore 1.20 +G_M49890_IG08: ; bbWeight=0.80, epilog, nogc, extend
pop esi pop edi
+ pop ebp
ret
- ;; size=3 bbWeight=0.50 PerfScore 1.00
+ ;; size=4 bbWeight=0.80 PerfScore 2.00
-; Total bytes of code 52, prolog size 2, PerfScore 16.38, instruction count 23, allocated bytes for code 52 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+; Total bytes of code 73, prolog size 5, PerfScore 28.02, instruction count 34, allocated bytes for code 73 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================

+34 (+44.74%) : 2599.dasm - System.Linq.Enumerable+SelectArrayIterator2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan1[System.Canon],System.Span1[System.__Canon],System.Func2[System.Canon,System.__Canon]) (Tier0-FullOpts)

@@ -2,21 +2,26 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 2, 8 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.__Canon]> -; V01 arg1 [V01,T04] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.__Canon]> -; V02 arg2 [V02,T01] ( 4, 10 ) ref -> esi class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
+; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.__Canon]> +; V01 arg1 [V01,T07] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.__Canon]> +; V02 arg2 [V02,T01] ( 4,146.00) ref -> esi class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
;* V03 TypeCtx [V03 ] ( 0, 0 ) int -> zero-ref single-def
-; V04 loc0 [V04,T00] ( 7, 25 ) int -> ebx
+; V04 loc0 [V04,T00] ( 7,433.00) int -> [ebp-0x10]
;* V05 loc1 [V05 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
-; V06 tmp1 [V06,T03] ( 3, 6 ) int -> edi "V01.[004..008)" -; TEMP_01 byref -> [ebp-0x10]
+; V06 tmp1 [V06,T03] ( 2, 73.00) byref -> edi single-def "V00.[000..004)" +; V07 tmp2 [V07,T05] ( 2, 73.00) int -> ebx "V00.[004..008)" +; V08 tmp3 [V08,T04] ( 2, 73.00) byref -> [ebp-0x18] spill-single-def "V01.[000..004)" +; V09 tmp4 [V09,T02] ( 3, 74.00) int -> [ebp-0x14] spill-single-def "V01.[004..008)" +; TEMP_01 byref -> [ebp-0x1C]
;
-; Lcl frame size = 4
+; Lcl frame size = 16
G_M2996_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -24,58 +29,82 @@ G_M2996_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- push eax
+ sub esp, 16
xor eax, eax
- mov dword ptr [ebp-0x10], eax
+ mov dword ptr [ebp-0x1C], eax
mov esi, ecx ; gcrRegs +[esi]
- ;; size=14 bbWeight=1 PerfScore 6.75
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M2996_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, dword ptr [ebp+0x0C] - xor ebx, ebx - test edi, edi
+ mov edi, bword ptr [ebp+0x10] + ; byrRegs +[edi] + mov ebx, dword ptr [ebp+0x14] + mov eax, bword ptr [ebp+0x08] + ; byrRegs +[eax] + mov bword ptr [ebp-0x18], eax + ; GC ptr vars +{V08} + mov ecx, dword ptr [ebp+0x0C] + mov dword ptr [ebp-0x14], ecx + xor edx, edx + test ecx, ecx
jle SHORT G_M2996_IG04
- ;; size=9 bbWeight=1 PerfScore 2.50 -G_M2996_IG03: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov edx, bword ptr [ebp+0x08]
+ ;; size=24 bbWeight=1 PerfScore 7.50 +G_M2996_IG03: ; bbWeight=72.00, gcVars=00000010 {V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000081 {eax edi}, gcvars, byref, isz + mov dword ptr [ebp-0x10], edx + lea edx, bword ptr [eax+4*edx]
; byrRegs +[edx]
- lea edx, bword ptr [edx+4*ebx] - mov bword ptr [ebp-0x10], edx - cmp ebx, dword ptr [ebp+0x14] - jae SHORT G_M2996_IG05 - mov ecx, bword ptr [ebp+0x10] - ; byrRegs +[ecx] - mov edx, gword ptr [ecx+4*ebx]
+ mov bword ptr [ebp-0x1C], edx + mov eax, dword ptr [ebp-0x10] + ; byrRegs -[eax] + cmp eax, ebx + jae SHORT G_M2996_IG06 + mov dword ptr [ebp-0x10], eax + mov edx, gword ptr [edi+4*eax]
; gcrRegs +[edx] ; byrRegs -[edx] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx]
- ; byrRegs -[ecx]
call [esi+0x0C]<unknown method> ; gcrRegs -[ecx edx] +[eax]
- mov edx, bword ptr [ebp-0x10]
+ mov edx, bword ptr [ebp-0x1C]
; byrRegs +[edx] call CORINFO_HELP_CHECKED_ASSIGN_REF_EAX ; gcrRegs -[eax] ; byrRegs -[edx]
- inc ebx - cmp ebx, edi - jl SHORT G_M2996_IG03 - ;; size=39 bbWeight=4 PerfScore 68.00 -G_M2996_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ mov eax, dword ptr [ebp-0x10] + inc eax + mov ecx, dword ptr [ebp-0x14] + cmp eax, ecx + mov edx, eax + jl SHORT G_M2996_IG05 + ;; size=49 bbWeight=72.00 PerfScore 1332.00 +G_M2996_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[esi]
- pop ecx
+ ; byrRegs -[edi] + ; GC ptr vars -{V08} + lea esp, [ebp-0x0C]
pop ebx pop esi pop edi pop ebp ret 16
- ;; size=8 bbWeight=1 PerfScore 4.50 -G_M2996_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=10 bbWeight=1 PerfScore 4.50 +G_M2996_IG05: ; bbWeight=36.00, gcVars=00000010 {V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz + ; gcrRegs +[esi] + ; byrRegs +[edi] + ; GC ptr vars +{V04 V08} + mov eax, bword ptr [ebp-0x18] + ; byrRegs +[eax] + jmp SHORT G_M2996_IG03 + ;; size=5 bbWeight=36.00 PerfScore 108.00 +G_M2996_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[esi] + ; byrRegs -[eax edi] + ; GC ptr vars -{V04 V08}
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 12, PerfScore 81.75, instruction count 35, allocated bytes for code 76 (MethodHash=b58ef44b) for method System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier0-FullOpts)
+; Total bytes of code 110, prolog size 14, PerfScore 1458.00, instruction count 46, allocated bytes for code 110 (MethodHash=b58ef44b) for method System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier0-FullOpts)
; ============================================================

+34 (+44.74%) : 20491.dasm - System.Linq.Enumerable+SelectArrayIterator2[int,System.__Canon]:Fill(System.ReadOnlySpan1[int],System.Span1[System.__Canon],System.Func2[int,System.__Canon]) (Tier0-FullOpts)

@@ -2,21 +2,26 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 2, 8 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[int]> -; V01 arg1 [V01,T04] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.__Canon]> -; V02 arg2 [V02,T01] ( 4, 10 ) ref -> esi class-hnd single-def <System.Func`2[int,System.__Canon]>
+; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[int]> +; V01 arg1 [V01,T07] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.__Canon]> +; V02 arg2 [V02,T01] ( 4,146.00) ref -> esi class-hnd single-def <System.Func`2[int,System.__Canon]>
;* V03 TypeCtx [V03 ] ( 0, 0 ) int -> zero-ref single-def
-; V04 loc0 [V04,T00] ( 7, 25 ) int -> ebx
+; V04 loc0 [V04,T00] ( 7,433.00) int -> [ebp-0x10]
;* V05 loc1 [V05 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
-; V06 tmp1 [V06,T03] ( 3, 6 ) int -> edi "V01.[004..008)" -; TEMP_01 byref -> [ebp-0x10]
+; V06 tmp1 [V06,T03] ( 2, 73.00) byref -> edi single-def "V00.[000..004)" +; V07 tmp2 [V07,T05] ( 2, 73.00) int -> ebx "V00.[004..008)" +; V08 tmp3 [V08,T04] ( 2, 73.00) byref -> [ebp-0x18] spill-single-def "V01.[000..004)" +; V09 tmp4 [V09,T02] ( 3, 74.00) int -> [ebp-0x14] spill-single-def "V01.[004..008)" +; TEMP_01 byref -> [ebp-0x1C]
;
-; Lcl frame size = 4
+; Lcl frame size = 16
G_M32001_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -24,57 +29,81 @@ G_M32001_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- push eax
+ sub esp, 16
xor eax, eax
- mov dword ptr [ebp-0x10], eax
+ mov dword ptr [ebp-0x1C], eax
mov esi, ecx ; gcrRegs +[esi]
- ;; size=14 bbWeight=1 PerfScore 6.75
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M32001_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, dword ptr [ebp+0x0C] - xor ebx, ebx - test edi, edi
+ mov edi, bword ptr [ebp+0x10] + ; byrRegs +[edi] + mov ebx, dword ptr [ebp+0x14] + mov eax, bword ptr [ebp+0x08] + ; byrRegs +[eax] + mov bword ptr [ebp-0x18], eax + ; GC ptr vars +{V08} + mov ecx, dword ptr [ebp+0x0C] + mov dword ptr [ebp-0x14], ecx + xor edx, edx + test ecx, ecx
jle SHORT G_M32001_IG04
- ;; size=9 bbWeight=1 PerfScore 2.50 -G_M32001_IG03: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov edx, bword ptr [ebp+0x08]
+ ;; size=24 bbWeight=1 PerfScore 7.50 +G_M32001_IG03: ; bbWeight=72.00, gcVars=00000010 {V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000081 {eax edi}, gcvars, byref, isz + mov dword ptr [ebp-0x10], edx + lea edx, bword ptr [eax+4*edx]
; byrRegs +[edx]
- lea edx, bword ptr [edx+4*ebx] - mov bword ptr [ebp-0x10], edx - cmp ebx, dword ptr [ebp+0x14] - jae SHORT G_M32001_IG05 - mov ecx, bword ptr [ebp+0x10] - ; byrRegs +[ecx] - mov edx, dword ptr [ecx+4*ebx]
+ mov bword ptr [ebp-0x1C], edx + mov eax, dword ptr [ebp-0x10] + ; byrRegs -[eax] + cmp eax, ebx + jae SHORT G_M32001_IG06 + mov dword ptr [ebp-0x10], eax + mov edx, dword ptr [edi+4*eax]
; byrRegs -[edx] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx]
- ; byrRegs -[ecx]
call [esi+0x0C]<unknown method> ; gcrRegs -[ecx] +[eax]
- mov edx, bword ptr [ebp-0x10]
+ mov edx, bword ptr [ebp-0x1C]
; byrRegs +[edx] call CORINFO_HELP_CHECKED_ASSIGN_REF_EAX ; gcrRegs -[eax] ; byrRegs -[edx]
- inc ebx - cmp ebx, edi - jl SHORT G_M32001_IG03 - ;; size=39 bbWeight=4 PerfScore 68.00 -G_M32001_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ mov eax, dword ptr [ebp-0x10] + inc eax + mov ecx, dword ptr [ebp-0x14] + cmp eax, ecx + mov edx, eax + jl SHORT G_M32001_IG05 + ;; size=49 bbWeight=72.00 PerfScore 1332.00 +G_M32001_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[esi]
- pop ecx
+ ; byrRegs -[edi] + ; GC ptr vars -{V08} + lea esp, [ebp-0x0C]
pop ebx pop esi pop edi pop ebp ret 16
- ;; size=8 bbWeight=1 PerfScore 4.50 -G_M32001_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=10 bbWeight=1 PerfScore 4.50 +G_M32001_IG05: ; bbWeight=36.00, gcVars=00000010 {V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz + ; gcrRegs +[esi] + ; byrRegs +[edi] + ; GC ptr vars +{V04 V08} + mov eax, bword ptr [ebp-0x18] + ; byrRegs +[eax] + jmp SHORT G_M32001_IG03 + ;; size=5 bbWeight=36.00 PerfScore 108.00 +G_M32001_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[esi] + ; byrRegs -[eax edi] + ; GC ptr vars -{V04 V08}
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 12, PerfScore 81.75, instruction count 35, allocated bytes for code 76 (MethodHash=3fe682fe) for method System.Linq.Enumerable+SelectArrayIterator`2[int,System.__Canon]:Fill(System.ReadOnlySpan`1[int],System.Span`1[System.__Canon],System.Func`2[int,System.__Canon]) (Tier0-FullOpts)
+; Total bytes of code 110, prolog size 14, PerfScore 1458.00, instruction count 46, allocated bytes for code 110 (MethodHash=3fe682fe) for method System.Linq.Enumerable+SelectArrayIterator`2[int,System.__Canon]:Fill(System.ReadOnlySpan`1[int],System.Span`1[System.__Canon],System.Func`2[int,System.__Canon]) (Tier0-FullOpts)
; ============================================================

coreclr_tests.run.windows.x86.checked.mch

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

@@ -2,58 +2,37 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; optimized using Synthesized PGO +; esp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; 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,T01] ( 2, 2 ) float -> mm0 single-def +; V01 tmp0 [V01,T00] ( 2, 4 ) float -> mm0 "Single return block return value" +;* V02 cse0 [V02,T02] ( 0, 0 ) float -> zero-ref "CSE - aggressive" +; 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%) : 229267.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)

@@ -2,54 +2,38 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; optimized using Synthesized PGO +; esp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; 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)
; ============================================================

-18 (-52.94%) : 247456.dasm - ILGEN_0x6a2f58fb:Main():int (FullOpts)

@@ -2,33 +2,38 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; esp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ;
+;* V00 tmp0 [V00 ] ( 0, 0 ) double -> zero-ref "Inline stloc first use temp" +; V01 tmp1 [V01 ] ( 2, 2 ) byte -> [esp+0x00] do-not-enreg[X] addr-exposed ld-addr-op "Inline stloc first use temp" +;* V02 tmp2 [V02 ] ( 0, 0 ) byref -> zero-ref +;* V03 tmp3 [V03 ] ( 0, 0 ) byref -> zero-ref +;* V04 tmp4 [V04 ] ( 0, 0 ) byref -> zero-ref +;* V05 tmp5 [V05 ] ( 0, 0 ) byref -> zero-ref +;* V06 tmp6 [V06 ] ( 0, 0 ) float -> zero-ref +;* V07 tmp7 [V07 ] ( 0, 0 ) byref -> zero-ref
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M31479_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- vzeroupper - ;; size=3 bbWeight=1 PerfScore 1.00 -G_M31479_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - vmovss xmm0, dword ptr [@RWD00] - sub esp, 4 - ; npt arg push 0 - vmovss dword ptr [esp], xmm0 - mov ecx, 0xD1FFAB1E - call [ILGEN_0x6a2f58fb:Method_0x89b7ef42(int,float):int] - ; gcr arg pop 1 - add eax, 45 - ;; size=30 bbWeight=1 PerfScore 8.75 -G_M31479_IG03: ; bbWeight=1, epilog, nogc, extend - ret
+ push eax
;; size=1 bbWeight=1 PerfScore 1.00
-RWD00 dd 39B13B98h ; 0.000338045
+G_M31479_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov byte ptr [esp], 0xD1FFAB1E + mov byte ptr [esp], 98 + mov eax, 100 + ;; size=13 bbWeight=1 PerfScore 2.25 +G_M31479_IG03: ; bbWeight=1, epilog, nogc, extend + pop ecx + ret + ;; size=2 bbWeight=1 PerfScore 1.50
- -; Total bytes of code 34, prolog size 3, PerfScore 10.75, instruction count 8, allocated bytes for code 34 (MethodHash=f7748508) for method ILGEN_0x6a2f58fb:Main():int (FullOpts)
+; Total bytes of code 16, prolog size 1, PerfScore 4.75, instruction count 6, allocated bytes for code 16 (MethodHash=f7748508) for method ILGEN_0x6a2f58fb:Main():int (FullOpts)
; ============================================================

+34 (+44.74%) : 344267.dasm - System.Linq.Enumerable+SelectArrayIterator2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan1[System.Canon],System.Span1[System.__Canon],System.Func2[System.Canon,System.__Canon]) (Tier0-FullOpts)

@@ -2,21 +2,26 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 2, 8 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.__Canon]> -; V01 arg1 [V01,T04] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.__Canon]> -; V02 arg2 [V02,T01] ( 4, 10 ) ref -> esi class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
+; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.__Canon]> +; V01 arg1 [V01,T07] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.__Canon]> +; V02 arg2 [V02,T01] ( 4,146.00) ref -> esi class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
;* V03 TypeCtx [V03 ] ( 0, 0 ) int -> zero-ref single-def
-; V04 loc0 [V04,T00] ( 7, 25 ) int -> ebx
+; V04 loc0 [V04,T00] ( 7,433.00) int -> [ebp-0x10]
;* V05 loc1 [V05 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
-; V06 tmp1 [V06,T03] ( 3, 6 ) int -> edi "V01.[004..008)" -; TEMP_01 byref -> [ebp-0x10]
+; V06 tmp1 [V06,T03] ( 2, 73.00) byref -> edi single-def "V00.[000..004)" +; V07 tmp2 [V07,T05] ( 2, 73.00) int -> ebx "V00.[004..008)" +; V08 tmp3 [V08,T04] ( 2, 73.00) byref -> [ebp-0x18] spill-single-def "V01.[000..004)" +; V09 tmp4 [V09,T02] ( 3, 74.00) int -> [ebp-0x14] spill-single-def "V01.[004..008)" +; TEMP_01 byref -> [ebp-0x1C]
;
-; Lcl frame size = 4
+; Lcl frame size = 16
G_M2996_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -24,58 +29,82 @@ G_M2996_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- push eax
+ sub esp, 16
xor eax, eax
- mov dword ptr [ebp-0x10], eax
+ mov dword ptr [ebp-0x1C], eax
mov esi, ecx ; gcrRegs +[esi]
- ;; size=14 bbWeight=1 PerfScore 6.75
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M2996_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, dword ptr [ebp+0x0C] - xor ebx, ebx - test edi, edi
+ mov edi, bword ptr [ebp+0x10] + ; byrRegs +[edi] + mov ebx, dword ptr [ebp+0x14] + mov eax, bword ptr [ebp+0x08] + ; byrRegs +[eax] + mov bword ptr [ebp-0x18], eax + ; GC ptr vars +{V08} + mov ecx, dword ptr [ebp+0x0C] + mov dword ptr [ebp-0x14], ecx + xor edx, edx + test ecx, ecx
jle SHORT G_M2996_IG04
- ;; size=9 bbWeight=1 PerfScore 2.50 -G_M2996_IG03: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov edx, bword ptr [ebp+0x08]
+ ;; size=24 bbWeight=1 PerfScore 7.50 +G_M2996_IG03: ; bbWeight=72.00, gcVars=00000010 {V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000081 {eax edi}, gcvars, byref, isz + mov dword ptr [ebp-0x10], edx + lea edx, bword ptr [eax+4*edx]
; byrRegs +[edx]
- lea edx, bword ptr [edx+4*ebx] - mov bword ptr [ebp-0x10], edx - cmp ebx, dword ptr [ebp+0x14] - jae SHORT G_M2996_IG05 - mov ecx, bword ptr [ebp+0x10] - ; byrRegs +[ecx] - mov edx, gword ptr [ecx+4*ebx]
+ mov bword ptr [ebp-0x1C], edx + mov eax, dword ptr [ebp-0x10] + ; byrRegs -[eax] + cmp eax, ebx + jae SHORT G_M2996_IG06 + mov dword ptr [ebp-0x10], eax + mov edx, gword ptr [edi+4*eax]
; gcrRegs +[edx] ; byrRegs -[edx] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx]
- ; byrRegs -[ecx]
call [esi+0x0C]<unknown method> ; gcrRegs -[ecx edx] +[eax]
- mov edx, bword ptr [ebp-0x10]
+ mov edx, bword ptr [ebp-0x1C]
; byrRegs +[edx] call CORINFO_HELP_CHECKED_ASSIGN_REF_EAX ; gcrRegs -[eax] ; byrRegs -[edx]
- inc ebx - cmp ebx, edi - jl SHORT G_M2996_IG03 - ;; size=39 bbWeight=4 PerfScore 68.00 -G_M2996_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ mov eax, dword ptr [ebp-0x10] + inc eax + mov ecx, dword ptr [ebp-0x14] + cmp eax, ecx + mov edx, eax + jl SHORT G_M2996_IG05 + ;; size=49 bbWeight=72.00 PerfScore 1332.00 +G_M2996_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[esi]
- pop ecx
+ ; byrRegs -[edi] + ; GC ptr vars -{V08} + lea esp, [ebp-0x0C]
pop ebx pop esi pop edi pop ebp ret 16
- ;; size=8 bbWeight=1 PerfScore 4.50 -G_M2996_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=10 bbWeight=1 PerfScore 4.50 +G_M2996_IG05: ; bbWeight=36.00, gcVars=00000010 {V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz + ; gcrRegs +[esi] + ; byrRegs +[edi] + ; GC ptr vars +{V04 V08} + mov eax, bword ptr [ebp-0x18] + ; byrRegs +[eax] + jmp SHORT G_M2996_IG03 + ;; size=5 bbWeight=36.00 PerfScore 108.00 +G_M2996_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[esi] + ; byrRegs -[eax edi] + ; GC ptr vars -{V04 V08}
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 12, PerfScore 81.75, instruction count 35, allocated bytes for code 76 (MethodHash=b58ef44b) for method System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier0-FullOpts)
+; Total bytes of code 110, prolog size 14, PerfScore 1458.00, instruction count 46, allocated bytes for code 110 (MethodHash=b58ef44b) for method System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier0-FullOpts)
; ============================================================

+45 (+54.88%) : 341182.dasm - bleu4.bleun:main():int (Tier0-FullOpts)

@@ -2,65 +2,80 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ;
-; V00 cse0 [V00,T01] ( 6, 3 ) int -> ecx "CSE - aggressive" -; V01 cse1 [V01,T02] ( 6, 3 ) int -> esi "CSE - aggressive" -; V02 cse2 [V02,T00] ( 6, 4 ) int -> edx "CSE - aggressive" -; V03 cse3 [V03,T03] ( 4, 3 ) int -> eax "CSE - aggressive"
+; V00 cse0 [V00,T00] ( 4, 2.69) int -> eax "CSE - aggressive"
; ; Lcl frame size = 0
-G_M45527_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M45527_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
- push esi - ;; size=4 bbWeight=1 PerfScore 2.25
+ ;; size=3 bbWeight=1 PerfScore 1.25
G_M45527_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz call [ble_u4.ble_un:initialize()] mov eax, dword ptr [D1FFAB1EH] ; static handle
- mov edx, dword ptr [D1FFAB1EH] ; static handle - cmp eax, edx - jbe SHORT G_M45527_IG05 - ;; size=21 bbWeight=1 PerfScore 8.25 -G_M45527_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov ecx, dword ptr [D1FFAB1EH] ; static handle - cmp eax, ecx - jbe SHORT G_M45527_IG05 - mov esi, dword ptr [D1FFAB1EH] ; static handle - cmp eax, esi - jbe SHORT G_M45527_IG05 - cmp edx, ecx
+ cmp eax, dword ptr [D1FFAB1EH] ; static handle
ja SHORT G_M45527_IG05
- cmp edx, esi - ja SHORT G_M45527_IG05 - cmp ecx, edx - jbe SHORT G_M45527_IG05 - cmp ecx, esi - ja SHORT G_M45527_IG05 - cmp esi, edx - jbe SHORT G_M45527_IG05 - cmp esi, ecx - jbe SHORT G_M45527_IG05 - mov eax, 100 - ;; size=49 bbWeight=0.50 PerfScore 7.12 -G_M45527_IG04: ; bbWeight=0.50, epilog, nogc, extend - pop esi - pop ebp - ret - ;; size=3 bbWeight=0.50 PerfScore 1.00 -G_M45527_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=19 bbWeight=1 PerfScore 9.00 +G_M45527_IG03: ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M45527_IG06: ; bbWeight=0.50, epilog, nogc, extend - pop esi
+ ;; size=2 bbWeight=1.00 PerfScore 0.25 +G_M45527_IG04: ; bbWeight=1.00, epilog, nogc, extend
pop ebp ret
- ;; size=3 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1.00 PerfScore 1.50 +G_M45527_IG05: ; bbWeight=0.38, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + cmp eax, dword ptr [D1FFAB1EH] ; static handle + jbe SHORT G_M45527_IG03 + ;; size=8 bbWeight=0.38 PerfScore 1.54 +G_M45527_IG06: ; bbWeight=0.31, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + cmp eax, dword ptr [D1FFAB1EH] ; static handle + jbe SHORT G_M45527_IG03 + ;; size=8 bbWeight=0.31 PerfScore 1.23 +G_M45527_IG07: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [D1FFAB1EH] ; static handle + cmp eax, dword ptr [D1FFAB1EH] ; static handle + ja SHORT G_M45527_IG03 + ;; size=13 bbWeight=0.25 PerfScore 1.47 +G_M45527_IG08: ; bbWeight=0.03, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [D1FFAB1EH] ; static handle + cmp eax, dword ptr [D1FFAB1EH] ; static handle + ja SHORT G_M45527_IG03 + ;; size=13 bbWeight=0.03 PerfScore 0.16 +G_M45527_IG09: ; bbWeight=0.01, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [D1FFAB1EH] ; static handle + cmp eax, dword ptr [D1FFAB1EH] ; static handle + jbe SHORT G_M45527_IG03 + ;; size=13 bbWeight=0.01 PerfScore 0.08 +G_M45527_IG10: ; bbWeight=0.01, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [D1FFAB1EH] ; static handle + cmp eax, dword ptr [D1FFAB1EH] ; static handle + ja SHORT G_M45527_IG03 + ;; size=13 bbWeight=0.01 PerfScore 0.03 +G_M45527_IG11: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [D1FFAB1EH] ; static handle + cmp eax, dword ptr [D1FFAB1EH] ; static handle + jbe SHORT G_M45527_IG03 + ;; size=13 bbWeight=0.00 PerfScore 0.01 +G_M45527_IG12: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [D1FFAB1EH] ; static handle + cmp eax, dword ptr [D1FFAB1EH] ; static handle + jbe SHORT G_M45527_IG03 + ;; size=13 bbWeight=0.00 PerfScore 0.00 +G_M45527_IG13: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 100 + ;; size=5 bbWeight=0.00 PerfScore 0.00 +G_M45527_IG14: ; bbWeight=0.00, epilog, nogc, extend + pop ebp + ret + ;; size=2 bbWeight=0.00 PerfScore 0.00
-; Total bytes of code 82, prolog size 4, PerfScore 19.75, instruction count 34, allocated bytes for code 82 (MethodHash=30204e28) for method ble_u4.ble_un:main():int (Tier0-FullOpts)
+; Total bytes of code 127, prolog size 3, PerfScore 16.52, instruction count 34, allocated bytes for code 127 (MethodHash=30204e28) for method ble_u4.ble_un:main():int (Tier0-FullOpts)
; ============================================================

+45 (+54.88%) : 164348.dasm - bleu4.bleun:main():int (FullOpts)

@@ -2,65 +2,80 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ;
-; V00 cse0 [V00,T01] ( 6, 3 ) int -> ecx "CSE - aggressive" -; V01 cse1 [V01,T02] ( 6, 3 ) int -> esi "CSE - aggressive" -; V02 cse2 [V02,T00] ( 6, 4 ) int -> edx "CSE - aggressive" -; V03 cse3 [V03,T03] ( 4, 3 ) int -> eax "CSE - aggressive"
+; V00 cse0 [V00,T00] ( 4, 2.69) int -> eax "CSE - aggressive"
; ; Lcl frame size = 0
-G_M45527_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M45527_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
- push esi - ;; size=4 bbWeight=1 PerfScore 2.25
+ ;; size=3 bbWeight=1 PerfScore 1.25
G_M45527_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz call [ble_u4.ble_un:initialize()] mov eax, dword ptr [D1FFAB1EH] ; static handle
- mov edx, dword ptr [D1FFAB1EH] ; static handle - cmp eax, edx - jbe SHORT G_M45527_IG05 - ;; size=21 bbWeight=1 PerfScore 8.25 -G_M45527_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov ecx, dword ptr [D1FFAB1EH] ; static handle - cmp eax, ecx - jbe SHORT G_M45527_IG05 - mov esi, dword ptr [D1FFAB1EH] ; static handle - cmp eax, esi - jbe SHORT G_M45527_IG05 - cmp edx, ecx
+ cmp eax, dword ptr [D1FFAB1EH] ; static handle
ja SHORT G_M45527_IG05
- cmp edx, esi - ja SHORT G_M45527_IG05 - cmp ecx, edx - jbe SHORT G_M45527_IG05 - cmp ecx, esi - ja SHORT G_M45527_IG05 - cmp esi, edx - jbe SHORT G_M45527_IG05 - cmp esi, ecx - jbe SHORT G_M45527_IG05 - mov eax, 100 - ;; size=49 bbWeight=0.50 PerfScore 7.12 -G_M45527_IG04: ; bbWeight=0.50, epilog, nogc, extend - pop esi - pop ebp - ret - ;; size=3 bbWeight=0.50 PerfScore 1.00 -G_M45527_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=19 bbWeight=1 PerfScore 9.00 +G_M45527_IG03: ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M45527_IG06: ; bbWeight=0.50, epilog, nogc, extend - pop esi
+ ;; size=2 bbWeight=1.00 PerfScore 0.25 +G_M45527_IG04: ; bbWeight=1.00, epilog, nogc, extend
pop ebp ret
- ;; size=3 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1.00 PerfScore 1.50 +G_M45527_IG05: ; bbWeight=0.38, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + cmp eax, dword ptr [D1FFAB1EH] ; static handle + jbe SHORT G_M45527_IG03 + ;; size=8 bbWeight=0.38 PerfScore 1.54 +G_M45527_IG06: ; bbWeight=0.31, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + cmp eax, dword ptr [D1FFAB1EH] ; static handle + jbe SHORT G_M45527_IG03 + ;; size=8 bbWeight=0.31 PerfScore 1.23 +G_M45527_IG07: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [D1FFAB1EH] ; static handle + cmp eax, dword ptr [D1FFAB1EH] ; static handle + ja SHORT G_M45527_IG03 + ;; size=13 bbWeight=0.25 PerfScore 1.47 +G_M45527_IG08: ; bbWeight=0.03, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [D1FFAB1EH] ; static handle + cmp eax, dword ptr [D1FFAB1EH] ; static handle + ja SHORT G_M45527_IG03 + ;; size=13 bbWeight=0.03 PerfScore 0.16 +G_M45527_IG09: ; bbWeight=0.01, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [D1FFAB1EH] ; static handle + cmp eax, dword ptr [D1FFAB1EH] ; static handle + jbe SHORT G_M45527_IG03 + ;; size=13 bbWeight=0.01 PerfScore 0.08 +G_M45527_IG10: ; bbWeight=0.01, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [D1FFAB1EH] ; static handle + cmp eax, dword ptr [D1FFAB1EH] ; static handle + ja SHORT G_M45527_IG03 + ;; size=13 bbWeight=0.01 PerfScore 0.03 +G_M45527_IG11: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [D1FFAB1EH] ; static handle + cmp eax, dword ptr [D1FFAB1EH] ; static handle + jbe SHORT G_M45527_IG03 + ;; size=13 bbWeight=0.00 PerfScore 0.01 +G_M45527_IG12: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [D1FFAB1EH] ; static handle + cmp eax, dword ptr [D1FFAB1EH] ; static handle + jbe SHORT G_M45527_IG03 + ;; size=13 bbWeight=0.00 PerfScore 0.00 +G_M45527_IG13: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 100 + ;; size=5 bbWeight=0.00 PerfScore 0.00 +G_M45527_IG14: ; bbWeight=0.00, epilog, nogc, extend + pop ebp + ret + ;; size=2 bbWeight=0.00 PerfScore 0.00
-; Total bytes of code 82, prolog size 4, PerfScore 19.75, instruction count 34, allocated bytes for code 82 (MethodHash=30204e28) for method ble_u4.ble_un:main():int (FullOpts)
+; Total bytes of code 127, prolog size 3, PerfScore 16.52, instruction count 34, allocated bytes for code 127 (MethodHash=30204e28) for method ble_u4.ble_un:main():int (FullOpts)
; ============================================================

libraries.crossgen2.windows.x86.checked.mch

-21 (-27.27%) : 71595.dasm - Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,int[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)

@@ -3,15 +3,17 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> esi class-hnd single-def <System.String> ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> edi class-hnd single-def <int[]>
-; V02 tmp0 [V02,T00] ( 7, 14 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.FileIO.TextFieldParser>
+; V02 tmp0 [V02,T00] ( 6, 12 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.FileIO.TextFieldParser>
; ; Lcl frame size = 0 @@ -43,18 +45,11 @@ G_M8139_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 ; gcrRegs +[edx] call [Microsoft.VisualBasic.FileIO.TextFieldParser:set_FieldWidths(int[]):this] ; gcrRegs -[ecx edx edi]
- mov ecx, dword ptr [(reloc)] ; const ptr - push gword ptr [ecx] - mov ecx, ebx - ; gcrRegs +[ecx] - mov edx, 1 - call [Microsoft.VisualBasic.FileIO.TextFieldParser:ValidateFieldTypeEnumValue(int,System.String):this] - ; gcrRegs -[ecx]
mov dword ptr [ebx+0x4C], 1 mov byte ptr [ebx+0x6B], 1 mov eax, ebx ; gcrRegs +[eax]
- ;; size=62 bbWeight=1 PerfScore 20.00
+ ;; size=41 bbWeight=1 PerfScore 12.50
G_M8139_IG03: ; bbWeight=1, epilog, nogc, extend pop ebx pop esi @@ -63,6 +58,6 @@ G_M8139_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=5 bbWeight=1 PerfScore 3.00
-; Total bytes of code 77, prolog size 6, PerfScore 27.75, instruction count 28, allocated bytes for code 77 (MethodHash=07e2e034) for method Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,int[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
+; Total bytes of code 56, prolog size 6, PerfScore 20.25, instruction count 23, allocated bytes for code 56 (MethodHash=07e2e034) for method Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,int[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
; ============================================================

-18 (-25.00%) : 71594.dasm - Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,System.String[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)

@@ -3,15 +3,17 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> esi class-hnd single-def <System.String> ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> edi class-hnd single-def <System.String[]>
-; V02 tmp0 [V02,T00] ( 7, 14 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.FileIO.TextFieldParser>
+; V02 tmp0 [V02,T00] ( 6, 12 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.FileIO.TextFieldParser>
; ; Lcl frame size = 0 @@ -43,19 +45,12 @@ G_M21542_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 ; gcrRegs +[edx] call [Microsoft.VisualBasic.FileIO.TextFieldParser:set_Delimiters(System.String[]):this] ; gcrRegs -[ecx edx edi]
- mov ecx, dword ptr [(reloc)] ; const ptr - push gword ptr [ecx] - mov ecx, ebx - ; gcrRegs +[ecx] - xor edx, edx - call [Microsoft.VisualBasic.FileIO.TextFieldParser:ValidateFieldTypeEnumValue(int,System.String):this] - ; gcrRegs -[ecx]
xor eax, eax mov dword ptr [ebx+0x4C], eax mov byte ptr [ebx+0x6B], 1 mov eax, ebx ; gcrRegs +[eax]
- ;; size=57 bbWeight=1 PerfScore 20.25
+ ;; size=39 bbWeight=1 PerfScore 12.75
G_M21542_IG03: ; bbWeight=1, epilog, nogc, extend pop ebx pop esi @@ -64,6 +59,6 @@ G_M21542_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=5 bbWeight=1 PerfScore 3.00
-; Total bytes of code 72, prolog size 6, PerfScore 28.00, instruction count 29, allocated bytes for code 72 (MethodHash=4b06abd9) for method Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,System.String[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
+; Total bytes of code 54, prolog size 6, PerfScore 20.50, instruction count 24, allocated bytes for code 54 (MethodHash=4b06abd9) for method Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,System.String[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
; ============================================================

-16 (-25.00%) : 257208.dasm - System.Linq.Expressions.CatchBlock:Update(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression):System.Linq.Expressions.CatchBlock:this (FullOpts)

@@ -3,70 +3,68 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 5 ) ref -> ecx this class-hnd single-def <System.Linq.Expressions.CatchBlock> -; V01 arg1 [V01,T01] ( 4, 3.50) ref -> edx class-hnd single-def <System.Linq.Expressions.ParameterExpression> -; V02 arg2 [V02,T03] ( 2, 1 ) ref -> [ebp+0x0C] class-hnd single-def <System.Linq.Expressions.Expression> -; V03 arg3 [V03,T04] ( 2, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Linq.Expressions.Expression> -; V04 tmp0 [V04,T02] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V00 this [V00,T00] ( 7, 5.44) ref -> ecx this class-hnd single-def <System.Linq.Expressions.CatchBlock> +; V01 arg1 [V01,T01] ( 4, 3.67) ref -> edx class-hnd single-def <System.Linq.Expressions.ParameterExpression> +; V02 arg2 [V02,T03] ( 2, 1.47) ref -> eax class-hnd single-def <System.Linq.Expressions.Expression> +; V03 arg3 [V03,T04] ( 2, 1.31) ref -> esi class-hnd single-def <System.Linq.Expressions.Expression> +; V04 tmp0 [V04,T02] ( 2, 2.67) ref -> ecx single-def "argument with side effect"
; ; Lcl frame size = 0
-G_M60861_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M60861_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
- push edi
push esi
- ;; size=5 bbWeight=1 PerfScore 3.25 -G_M60861_IG02: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
+ mov eax, gword ptr [ebp+0x0C] + ; gcrRegs +[eax] + mov esi, gword ptr [ebp+0x08] + ; gcrRegs +[esi] + ;; size=10 bbWeight=1 PerfScore 4.25 +G_M60861_IG02: ; bbWeight=1, gcrefRegs=00000047 {eax ecx edx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx edx] cmp edx, gword ptr [ecx+0x04]
- jne SHORT G_M60861_IG06
+ jne SHORT G_M60861_IG07
;; size=5 bbWeight=1 PerfScore 4.00
-G_M60861_IG03: ; bbWeight=0.50, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz - mov esi, gword ptr [ebp+0x0C] - ; gcrRegs +[esi] - cmp esi, gword ptr [ecx+0x10] - jne SHORT G_M60861_IG05 - mov edi, gword ptr [ebp+0x08] - ; gcrRegs +[edi] - cmp edi, gword ptr [ecx+0x0C] - mov gword ptr [ebp+0x0C], esi - mov gword ptr [ebp+0x08], edi - jne SHORT G_M60861_IG06
+G_M60861_IG03: ; bbWeight=0.80, gcrefRegs=00000047 {eax ecx edx esi}, byrefRegs=00000000 {}, byref, isz + cmp eax, gword ptr [ecx+0x10] + jne SHORT G_M60861_IG07 + ;; size=5 bbWeight=0.80 PerfScore 3.20 +G_M60861_IG04: ; bbWeight=0.64, gcrefRegs=00000047 {eax ecx edx esi}, byrefRegs=00000000 {}, byref, isz + cmp esi, gword ptr [ecx+0x0C] + jne SHORT G_M60861_IG07 + ;; size=5 bbWeight=0.64 PerfScore 2.56 +G_M60861_IG05: ; bbWeight=0.33, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax edx esi]
mov eax, ecx ; gcrRegs +[eax]
- ;; size=24 bbWeight=0.50 PerfScore 6.12 -G_M60861_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=2 bbWeight=0.33 PerfScore 0.08 +G_M60861_IG06: ; bbWeight=0.33, epilog, nogc, extend
pop esi
- pop edi
pop ebp ret 8
- ;; size=6 bbWeight=0.50 PerfScore 1.75 -G_M60861_IG05: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000046 {ecx edx esi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax edi] - mov gword ptr [ebp+0x0C], esi - ;; size=3 bbWeight=0.25 PerfScore 0.25 -G_M60861_IG06: ; bbWeight=0.50, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi]
+ ;; size=5 bbWeight=0.33 PerfScore 1.00 +G_M60861_IG07: ; bbWeight=0.67, gcVars=00000000 {}, gcrefRegs=00000047 {eax ecx edx esi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs +[edx esi]
mov ecx, gword ptr [ecx+0x08]
- push gword ptr [ebp+0x08] - push gword ptr [ebp+0x0C]
+ push esi + push eax
call [<unknown method>]
- ; gcrRegs -[ecx edx] +[eax] - ;; size=15 bbWeight=0.50 PerfScore 3.50 -G_M60861_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ; gcrRegs -[ecx edx esi] + ;; size=11 bbWeight=0.67 PerfScore 4.67 +G_M60861_IG08: ; bbWeight=0.67, epilog, nogc, extend
pop esi
- pop edi
pop ebp ret 8
- ;; size=6 bbWeight=0.50 PerfScore 1.75
+ ;; size=5 bbWeight=0.67 PerfScore 2.00
-; Total bytes of code 64, prolog size 5, PerfScore 20.62, instruction count 28, allocated bytes for code 64 (MethodHash=c47b1242) for method System.Linq.Expressions.CatchBlock:Update(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression):System.Linq.Expressions.CatchBlock:this (FullOpts)
+; Total bytes of code 48, prolog size 4, PerfScore 21.76, instruction count 22, allocated bytes for code 48 (MethodHash=c47b1242) for method System.Linq.Expressions.CatchBlock:Update(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression):System.Linq.Expressions.CatchBlock:this (FullOpts)
; ============================================================

+21 (+210.00%) : 168102.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementKeyword(ushort):ubyte (FullOpts)

@@ -3,25 +3,45 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
-; esp based frame
+; optimized using Synthesized PGO +; ebp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> ecx single-def
+; V01 tmp0 [V01,T01] ( 3, 2.52) ushort -> eax "Inline stloc first use temp" +; V02 tmp1 [V02,T02] ( 3, 2 ) ubyte -> eax "Inline stloc first use temp"
; ; Lcl frame size = 0 G_M64956_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00 -G_M64956_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - movzx ecx, cx - call [Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementSubOrFunctionKeyword(ushort):ubyte] - ;; size=9 bbWeight=1 PerfScore 3.25 -G_M64956_IG03: ; bbWeight=1, epilog, nogc, extend
+ push ebp + mov ebp, esp + ;; size=3 bbWeight=1 PerfScore 1.25 +G_M64956_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + movzx eax, cx + cmp eax, 478 + je SHORT G_M64956_IG04 + ;; size=10 bbWeight=1 PerfScore 1.50 +G_M64956_IG03: ; bbWeight=0.52, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + cmp eax, 558 + jne SHORT G_M64956_IG06 + ;; size=7 bbWeight=0.52 PerfScore 0.65 +G_M64956_IG04: ; bbWeight=0.75, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 1 + ;; size=5 bbWeight=0.75 PerfScore 0.19 +G_M64956_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc + pop ebp
ret
- ;; size=1 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=1 PerfScore 1.50 +G_M64956_IG06: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + xor eax, eax + jmp SHORT G_M64956_IG05 + ;; size=4 bbWeight=0.25 PerfScore 0.56
-; Total bytes of code 10, prolog size 0, PerfScore 4.25, instruction count 3, allocated bytes for code 10 (MethodHash=cd320243) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementKeyword(ushort):ubyte (FullOpts)
+; Total bytes of code 31, prolog size 3, PerfScore 5.65, instruction count 12, allocated bytes for code 31 (MethodHash=cd320243) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementKeyword(ushort):ubyte (FullOpts)
; ============================================================

+21 (+210.00%) : 168103.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDelegateStatementKeyword(ushort):ubyte (FullOpts)

@@ -3,25 +3,45 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
-; esp based frame
+; optimized using Synthesized PGO +; ebp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> ecx single-def
+; V01 tmp0 [V01,T01] ( 3, 2.52) ushort -> eax "Inline stloc first use temp" +; V02 tmp1 [V02,T02] ( 3, 2 ) ubyte -> eax "Inline stloc first use temp"
; ; Lcl frame size = 0 G_M11355_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00 -G_M11355_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - movzx ecx, cx - call [Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDelegateStatementSubOrFunctionKeyword(ushort):ubyte] - ;; size=9 bbWeight=1 PerfScore 3.25 -G_M11355_IG03: ; bbWeight=1, epilog, nogc, extend
+ push ebp + mov ebp, esp + ;; size=3 bbWeight=1 PerfScore 1.25 +G_M11355_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + movzx eax, cx + cmp eax, 478 + je SHORT G_M11355_IG04 + ;; size=10 bbWeight=1 PerfScore 1.50 +G_M11355_IG03: ; bbWeight=0.52, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + cmp eax, 558 + jne SHORT G_M11355_IG06 + ;; size=7 bbWeight=0.52 PerfScore 0.65 +G_M11355_IG04: ; bbWeight=0.75, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 1 + ;; size=5 bbWeight=0.75 PerfScore 0.19 +G_M11355_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc + pop ebp
ret
- ;; size=1 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=1 PerfScore 1.50 +G_M11355_IG06: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + xor eax, eax + jmp SHORT G_M11355_IG05 + ;; size=4 bbWeight=0.25 PerfScore 0.56
-; Total bytes of code 10, prolog size 0, PerfScore 4.25, instruction count 3, allocated bytes for code 10 (MethodHash=e166d3a4) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDelegateStatementKeyword(ushort):ubyte (FullOpts)
+; Total bytes of code 31, prolog size 3, PerfScore 5.65, instruction count 12, allocated bytes for code 31 (MethodHash=e166d3a4) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDelegateStatementKeyword(ushort):ubyte (FullOpts)
; ============================================================

+21 (+210.00%) : 168104.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)

@@ -3,25 +3,45 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
-; esp based frame
+; optimized using Synthesized PGO +; ebp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> ecx single-def
+; V01 tmp0 [V01,T01] ( 3, 2.52) ushort -> eax "Inline stloc first use temp" +; V02 tmp1 [V02,T02] ( 3, 2 ) ubyte -> eax "Inline stloc first use temp"
; ; Lcl frame size = 0 G_M24505_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00 -G_M24505_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - movzx ecx, cx - call [Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderSubOrFunctionKeyword(ushort):ubyte] - ;; size=9 bbWeight=1 PerfScore 3.25 -G_M24505_IG03: ; bbWeight=1, epilog, nogc, extend
+ push ebp + mov ebp, esp + ;; size=3 bbWeight=1 PerfScore 1.25 +G_M24505_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + movzx eax, cx + cmp eax, 478 + je SHORT G_M24505_IG04 + ;; size=10 bbWeight=1 PerfScore 1.50 +G_M24505_IG03: ; bbWeight=0.52, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + cmp eax, 558 + jne SHORT G_M24505_IG06 + ;; size=7 bbWeight=0.52 PerfScore 0.65 +G_M24505_IG04: ; bbWeight=0.75, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 1 + ;; size=5 bbWeight=0.75 PerfScore 0.19 +G_M24505_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc + pop ebp
ret
- ;; size=1 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=1 PerfScore 1.50 +G_M24505_IG06: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + xor eax, eax + jmp SHORT G_M24505_IG05 + ;; size=4 bbWeight=0.25 PerfScore 0.56
-; Total bytes of code 10, prolog size 0, PerfScore 4.25, instruction count 3, allocated bytes for code 10 (MethodHash=7ce7a046) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
+; Total bytes of code 31, prolog size 3, PerfScore 5.65, instruction count 12, allocated bytes for code 31 (MethodHash=7ce7a046) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
; ============================================================

libraries.pmi.windows.x86.checked.mch

-9 (-52.94%) : 237366.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)

@@ -2,39 +2,35 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; optimized using Synthesized PGO +; esp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 3, 2.50) ref -> ecx this class-hnd single-def <System.IO.Compression.DeflateManagedStream>
+; V00 this [V00,T01] ( 3, 2.80) ref -> ecx this class-hnd single-def <System.IO.Compression.DeflateManagedStream>
; V01 arg1 [V01,T00] ( 3, 3 ) ubyte -> edx single-def ;* V02 tmp0 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; ; 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
- jne SHORT G_M40773_IG04
+ je SHORT G_M40773_IG04
;; size=4 bbWeight=1 PerfScore 1.25
-G_M40773_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M40773_IG03: ; bbWeight=0.80, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref + mov eax, dword ptr [ecx+0x08] + ;; size=3 bbWeight=0.80 PerfScore 1.60 +G_M40773_IG04: ; bbWeight=0.38, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[ecx]
- pop ebp
ret
- ;; size=2 bbWeight=1 PerfScore 1.50 -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 - jmp SHORT G_M40773_IG03 - ;; size=8 bbWeight=0.50 PerfScore 3.00
+ ;; size=1 bbWeight=0.38 PerfScore 0.38
-; 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 8, prolog size 0, PerfScore 3.23, instruction count 4, allocated bytes for code 8 (MethodHash=8a3760ba) for method System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
; ============================================================

-45 (-44.12%) : 271446.dasm - System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],System.IFormatProvider,byref):ubyte (FullOpts)

@@ -2,92 +2,68 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 1 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 1 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 1, 1 ) struct ( 8) [ebp+0x08] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]> -; V01 arg1 [V01,T00] ( 4, 3.12) ref -> ecx class-hnd single-def <System.IFormatProvider>
+; V00 arg0 [V00,T03] ( 1, 1.00) struct ( 8) [ebp+0x08] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]> +; V01 arg1 [V01,T00] ( 4, 3.25) ref -> ecx class-hnd single-def <System.IFormatProvider>
; V02 arg2 [V02,T01] ( 3, 3 ) byref -> esi single-def
-; V03 tmp0 [V03,T03] ( 3, 1.50) ref -> edi class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> -; V04 tmp1 [V04,T02] ( 2, 2 ) int -> eax "Inline return value spill temp" -; V05 tmp2 [V05 ] ( 3, 2 ) ref -> [ebp-0x0C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <<unknown class>>
+; V03 tmp0 [V03,T02] ( 3, 2.00) ref -> eax class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> +;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inline ldloca(s) first use temp" <<unknown class>> +;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
-G_M47970_IG01: ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M47970_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
- push edi
push esi
- push eax - xor eax, eax - mov dword ptr [ebp-0x0C], eax
mov esi, edx ; byrRegs +[esi]
- ;; size=13 bbWeight=1.00 PerfScore 5.75 -G_M47970_IG02: ; bbWeight=1.00, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, byref, isz
+ ;; size=6 bbWeight=1 PerfScore 2.50 +G_M47970_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs +[ecx] test ecx, ecx jne SHORT G_M47970_IG06
- ;; size=4 bbWeight=1.00 PerfScore 1.25 -G_M47970_IG03: ; bbWeight=0.38, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+ ;; size=4 bbWeight=1 PerfScore 1.25 +G_M47970_IG03: ; bbWeight=0.75, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
; gcrRegs -[ecx] call [System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo] ; gcrRegs +[eax]
- mov edi, eax - ; gcrRegs +[edi] - ;; size=8 bbWeight=0.38 PerfScore 1.22 -G_M47970_IG04: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - ; gcrRegs -[eax] - lea edx, [ebp-0x0C] - mov ecx, 7 - call [System.Number:TryValidateParseStyleInteger(int,byref):ubyte] - test eax, eax - je SHORT G_M47970_IG07
+ ;; size=6 bbWeight=0.75 PerfScore 2.26 +G_M47970_IG04: ; bbWeight=1.00, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, byref
push dword ptr [ebp+0x0C] push bword ptr [ebp+0x08] push esi
- mov edx, edi
+ mov edx, eax
; gcrRegs +[edx] mov ecx, 7 call [<unknown method>]
- ; gcrRegs -[edx edi]
+ ; gcrRegs -[eax edx]
; byrRegs -[esi]
- xor ecx, ecx - ; gcrRegs +[ecx] - mov gword ptr [ebp-0x0C], ecx
test eax, eax sete al movzx eax, al
- ;; size=51 bbWeight=1 PerfScore 14.25 -G_M47970_IG05: ; bbWeight=1, epilog, nogc, extend - pop ecx
+ ;; size=28 bbWeight=1.00 PerfScore 8.00 +G_M47970_IG05: ; bbWeight=1.00, epilog, nogc, extend
pop esi
- pop edi
pop ebp ret 8
- ;; size=7 bbWeight=1 PerfScore 4.00 -G_M47970_IG06: ; bbWeight=0.12, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ ;; size=5 bbWeight=1.00 PerfScore 3.00 +G_M47970_IG06: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, gcvars, byref, isz + ; gcrRegs +[ecx]
; byrRegs +[esi] call [System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo] ; gcrRegs -[ecx] +[eax]
- mov edi, eax - ; gcrRegs +[edi]
jmp SHORT G_M47970_IG04
- ;; size=10 bbWeight=0.12 PerfScore 0.65 -G_M47970_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax edi] - ; byrRegs -[esi] - mov ecx, gword ptr [ebp-0x0C] - ; gcrRegs +[ecx] - call CORINFO_HELP_THROW - ; gcrRegs -[ecx] - int3 - ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0.25 PerfScore 1.24
-; Total bytes of code 102, prolog size 11, PerfScore 27.12, instruction count 39, allocated bytes for code 102 (MethodHash=22f2449d) for method System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],System.IFormatProvider,byref):ubyte (FullOpts)
+; Total bytes of code 57, prolog size 4, PerfScore 18.24, instruction count 21, allocated bytes for code 57 (MethodHash=22f2449d) for method System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],System.IFormatProvider,byref):ubyte (FullOpts)
; ============================================================

-30 (-41.10%) : 262131.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type):this (FullOpts)

@@ -2,18 +2,21 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 0 inlinees with PGO data; 5 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments ;
-; V00 this [V00,T00] ( 6, 6 ) ref -> esi this class-hnd single-def <System.Runtime.Serialization.Json.DataContractJsonSerializer>
+; V00 this [V00,T00] ( 5, 5 ) ref -> esi this class-hnd single-def <System.Runtime.Serialization.Json.DataContractJsonSerializer>
; V01 arg1 [V01,T01] ( 3, 3 ) ref -> edx class-hnd single-def <System.Type> ;* V02 tmp0 [V02 ] ( 0, 0 ) int -> zero-ref ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V04 tmp2 [V04,T03] ( 3, 2 ) ubyte -> eax "Inline return value spill temp" -; V05 tmp3 [V05,T02] ( 3, 5 ) ref -> ecx class-hnd single-def "Inlining Arg" <System.Xml.XmlDictionaryString>
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Xml.XmlDictionaryString> +;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V06 tmp4 [V06,T02] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Xml.XmlDictionaryString>
; ; Lcl frame size = 0 @@ -24,7 +27,7 @@ G_M61883_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov esi, ecx ; gcrRegs +[esi] ;; size=6 bbWeight=1 PerfScore 2.50
-G_M61883_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+G_M61883_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[edx] push 0 push 0xD1FFAB1E @@ -37,38 +40,17 @@ G_M61883_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=0000 ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx edx]
- xor ecx, ecx - ; gcrRegs +[ecx] - call [System.Runtime.Serialization.Json.DataContractJsonSerializer:ConvertXmlNameToJsonName(System.Xml.XmlDictionaryString):System.Xml.XmlDictionaryString] - ; gcrRegs -[ecx] +[eax] - lea edx, bword ptr [esi+0x18] - ; byrRegs +[edx] - call CORINFO_HELP_ASSIGN_REF_EAX - ; gcrRegs -[eax] - ; byrRegs -[edx] - mov ecx, gword ptr [esi+0x18] - ; gcrRegs +[ecx] - test ecx, ecx - je SHORT G_M61883_IG04 - ;; size=48 bbWeight=1 PerfScore 18.25 -G_M61883_IG03: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - mov ecx, gword ptr [ecx+0x08] - call [System.Runtime.Serialization.Json.DataContractJsonSerializer:CheckIfJsonNameRequiresMapping(System.String):ubyte] - ; gcrRegs -[ecx] - jmp SHORT G_M61883_IG05 - ;; size=11 bbWeight=0.50 PerfScore 3.50 -G_M61883_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M61883_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - mov byte ptr [esi+0x2F], al - ;; size=3 bbWeight=1 PerfScore 1.00 -G_M61883_IG06: ; bbWeight=1, epilog, nogc, extend
+ ; gcrRegs +[eax] + mov gword ptr [esi+0x18], eax + mov byte ptr [esi+0x2F], 0 + ;; size=34 bbWeight=1 PerfScore 12.50 +G_M61883_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi pop ebp ret ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 73, prolog size 4, PerfScore 27.38, instruction count 28, allocated bytes for code 73 (MethodHash=cc760e44) for method System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type):this (FullOpts)
+; Total bytes of code 43, prolog size 4, PerfScore 17.00, instruction count 19, allocated bytes for code 43 (MethodHash=cc760e44) for method System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type):this (FullOpts)
; ============================================================

+44 (+220.00%) : 63271.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)

@@ -2,31 +2,59 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; esp based frame
+; optimized using Synthesized PGO +; ebp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> ecx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol>
-; V01 loc0 [V01,T01] ( 3, 3 ) int -> eax single-def
+;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref single-def +; V02 tmp0 [V02,T02] ( 4, 3 ) int -> eax "Inline return value spill temp" +;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V04 tmp2 [V04,T01] ( 4, 3.60) int -> eax single-def "Inline stloc first use temp"
; ; Lcl frame size = 0 G_M4118_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00 -G_M4118_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+ push ebp + mov ebp, esp + push esi + ;; size=4 bbWeight=1 PerfScore 2.25 +G_M4118_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
- mov ecx, dword ptr [ecx+0x40]
+ mov eax, dword ptr [ecx+0x40] + and eax, 0x30000 + je SHORT G_M4118_IG04 + ;; size=10 bbWeight=1 PerfScore 3.25 +G_M4118_IG03: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
- call [Microsoft.CodeAnalysis.TypeAttributesExtensions:ToCharSet(int):int]
+ mov edx, 3 + xor ecx, ecx + mov esi, 4 + cmp eax, 0x20000 + cmove ecx, esi + cmp eax, 0x10000 + cmovne edx, ecx + mov eax, edx + jmp SHORT G_M4118_IG05 + ;; size=32 bbWeight=0.80 PerfScore 3.20 +G_M4118_IG04: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 2 + ;; size=5 bbWeight=0.20 PerfScore 0.05 +G_M4118_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov edx, 2 test eax, eax cmove eax, edx
- ;; size=19 bbWeight=1 PerfScore 5.75 -G_M4118_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=10 bbWeight=1 PerfScore 0.75 +G_M4118_IG06: ; bbWeight=1, epilog, nogc, extend + pop esi + pop ebp
ret
- ;; size=1 bbWeight=1 PerfScore 1.00
+ ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 20, prolog size 0, PerfScore 6.75, instruction count 6, allocated bytes for code 20 (MethodHash=fe4cefe9) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
+; Total bytes of code 64, prolog size 4, PerfScore 11.50, instruction count 22, allocated bytes for code 64 (MethodHash=fe4cefe9) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
; ============================================================

+30 (+272.73%) : 91589.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)

@@ -2,29 +2,50 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; esp based frame
+; optimized using Synthesized PGO +; ebp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser>
-; V01 arg1 [V01,T00] ( 3, 3 ) ref -> edx class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> edx class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken> +; V02 tmp0 [V02,T02] ( 3, 2 ) ubyte -> eax "Inline return value spill temp" +; V03 tmp1 [V03,T00] ( 4, 6.43) ushort -> eax "Inlining Arg"
; ; Lcl frame size = 0 G_M28613_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00 -G_M28613_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+ push ebp + mov ebp, esp + ;; size=3 bbWeight=1 PerfScore 1.25 +G_M28613_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edx]
- movzx ecx, word ptr [edx+0x08] - call [Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsTerminator(ushort):ubyte]
+ movzx eax, word ptr [edx+0x08] + cmp eax, 677 + je SHORT G_M28613_IG05 + ;; size=11 bbWeight=1 PerfScore 3.25 +G_M28613_IG03: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
- ;; size=10 bbWeight=1 PerfScore 5.00 -G_M28613_IG03: ; bbWeight=1, epilog, nogc, extend
+ cmp eax, 652 + je SHORT G_M28613_IG05 + ;; size=7 bbWeight=0.80 PerfScore 1.00 +G_M28613_IG04: ; bbWeight=0.42, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + cmp eax, 678 + sete al + movzx eax, al + jmp SHORT G_M28613_IG06 + ;; size=13 bbWeight=0.42 PerfScore 1.46 +G_M28613_IG05: ; bbWeight=0.58, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 1 + ;; size=5 bbWeight=0.58 PerfScore 0.15 +G_M28613_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc + pop ebp
ret
- ;; size=1 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 11, prolog size 0, PerfScore 6.00, instruction count 3, allocated bytes for code 11 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 41, prolog size 3, PerfScore 8.60, instruction count 14, allocated bytes for code 41 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================

+30 (+272.73%) : 91595.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)

@@ -2,29 +2,50 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; esp based frame
+; optimized using Synthesized PGO +; ebp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser>
-; V01 arg1 [V01,T00] ( 3, 3 ) ref -> edx class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> edx class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken> +; V02 tmp0 [V02,T02] ( 3, 2 ) ubyte -> eax "Inline return value spill temp" +; V03 tmp1 [V03,T00] ( 4, 6.43) ushort -> eax "Inlining Arg"
; ; Lcl frame size = 0 G_M39608_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00 -G_M39608_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+ push ebp + mov ebp, esp + ;; size=3 bbWeight=1 PerfScore 1.25 +G_M39608_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edx]
- movzx ecx, word ptr [edx+0x08] - call [Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsTerminator(ushort):ubyte]
+ movzx eax, word ptr [edx+0x08] + cmp eax, 677 + je SHORT G_M39608_IG05 + ;; size=11 bbWeight=1 PerfScore 3.25 +G_M39608_IG03: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
- ;; size=10 bbWeight=1 PerfScore 5.00 -G_M39608_IG03: ; bbWeight=1, epilog, nogc, extend
+ cmp eax, 652 + je SHORT G_M39608_IG05 + ;; size=7 bbWeight=0.80 PerfScore 1.00 +G_M39608_IG04: ; bbWeight=0.42, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + cmp eax, 678 + sete al + movzx eax, al + jmp SHORT G_M39608_IG06 + ;; size=13 bbWeight=0.42 PerfScore 1.46 +G_M39608_IG05: ; bbWeight=0.58, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 1 + ;; size=5 bbWeight=0.58 PerfScore 0.15 +G_M39608_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc + pop ebp
ret
- ;; size=1 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 11, prolog size 0, PerfScore 6.00, instruction count 3, allocated bytes for code 11 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 41, prolog size 3, PerfScore 8.60, instruction count 14, allocated bytes for code 41 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================

libraries_tests.run.windows.x86.Release.mch

-24 (-19.67%) : 48700.dasm - System.Xml.Linq.XObject:NotifyChanging(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (Tier0-FullOpts)

@@ -2,21 +2,23 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; fully interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 3, 3 ) ref -> ecx this class-hnd single-def <System.Xml.Linq.XObject> -; V01 arg1 [V01,T03] ( 3, 6 ) ref -> esi class-hnd single-def <System.Object> -; V02 arg2 [V02,T06] ( 1, 4 ) ref -> [ebp+0x08] class-hnd single-def <System.Xml.Linq.XObjectChangeEventArgs> -; V03 loc0 [V03,T04] ( 3, 6 ) ubyte -> ebx -; V04 loc1 [V04,T01] ( 6, 21 ) ref -> [ebp-0x10] class-hnd <System.Xml.Linq.XObject> -; V05 loc2 [V05,T02] ( 3, 12 ) ref -> registers class-hnd exact <<unknown class>> -; V06 tmp0 [V06,T00] ( 4, 32 ) ref -> [ebp-0x14] class-hnd exact "dup spill" <<unknown class>>
+; V00 this [V00,T06] ( 3, 3 ) ref -> ecx this class-hnd single-def <System.Xml.Linq.XObject> +; V01 arg1 [V01,T03] ( 3, 74.00) ref -> esi class-hnd single-def <System.Object> +; V02 arg2 [V02,T04] ( 1, 72.00) ref -> edi class-hnd single-def <System.Xml.Linq.XObjectChangeEventArgs> +; V03 loc0 [V03,T05] ( 3, 39.44) ubyte -> ebx +; V04 loc1 [V04,T01] ( 6,261.66) ref -> [ebp-0x10] class-hnd <System.Xml.Linq.XObject> +; V05 loc2 [V05,T02] ( 3,181.44) ref -> eax class-hnd exact <<unknown class>> +; V06 tmp0 [V06,T00] ( 4,437.76) ref -> eax class-hnd exact "dup spill" <<unknown class>>
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref ;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M58311_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -24,12 +26,12 @@ G_M58311_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 8
+ push eax
mov esi, edx ; gcrRegs +[esi] mov edi, gword ptr [ebp+0x08] ; gcrRegs +[edi]
- ;; size=14 bbWeight=1 PerfScore 5.75
+ ;; size=12 bbWeight=1 PerfScore 6.50
G_M58311_IG02: ; bbWeight=1, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx] xor ebx, ebx @@ -37,21 +39,27 @@ G_M58311_IG02: ; bbWeight=1, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs= ; gcrRegs +[eax] jmp SHORT G_M58311_IG04 ;; size=6 bbWeight=1 PerfScore 2.50
-G_M58311_IG03: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ecx] - mov eax, gword ptr [eax+0x04] - mov gword ptr [ebp-0x10], eax - ; GC ptr vars +{V04}
+G_M58311_IG03: ; bbWeight=13.30, gcVars=00000002 {V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax ecx] + ; GC ptr vars +{V01 V04} + mov ecx, gword ptr [ebp-0x10] + ; gcrRegs +[ecx] + mov ecx, gword ptr [ecx+0x04] + mov gword ptr [ebp-0x10], ecx
mov eax, gword ptr [ebp-0x10]
- ;; size=9 bbWeight=2 PerfScore 8.00 -G_M58311_IG04: ; bbWeight=8, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz - ; GC ptr vars -{V04}
+ ; gcrRegs +[eax] + ;; size=12 bbWeight=13.30 PerfScore 66.52 +G_M58311_IG04: ; bbWeight=106.61, gcVars=00000000 {}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[ecx] + ; GC ptr vars -{V01 V04}
test eax, eax
- je SHORT G_M58311_IG07 - ;; size=4 bbWeight=8 PerfScore 10.00 -G_M58311_IG05: ; bbWeight=4, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M58311_IG10 + ;; size=4 bbWeight=106.61 PerfScore 133.26 +G_M58311_IG05: ; bbWeight=55.44, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
cmp gword ptr [eax+0x08], 0
- je SHORT G_M58311_IG03
+ je SHORT G_M58311_IG09 + ;; size=6 bbWeight=55.44 PerfScore 221.75 +G_M58311_IG06: ; bbWeight=72.00, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
mov gword ptr [ebp-0x10], eax ; GC ptr vars +{V04} mov ecx, eax @@ -60,54 +68,47 @@ G_M58311_IG05: ; bbWeight=4, gcrefRegs=000000C1 {eax esi edi}, byrefRegs= call [System.Xml.Linq.XObject:Annotation[System.__Canon]():System.__Canon:this] ; gcrRegs -[ecx] test eax, eax
- je SHORT G_M58311_IG06 - mov edx, eax - ; gcrRegs +[edx] - mov eax, gword ptr [ebp-0x10] - mov ebx, 1 - mov ecx, gword ptr [edx+0x04] - ; gcrRegs +[ecx] - test ecx, ecx
je SHORT G_M58311_IG03
- mov gword ptr [ebp-0x10], eax - mov gword ptr [ebp+0x08], edi
+ ;; size=20 bbWeight=72.00 PerfScore 414.00 +G_M58311_IG07: ; bbWeight=37.44, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz + mov ebx, 1 + mov eax, gword ptr [eax+0x04] + test eax, eax + je SHORT G_M58311_IG03 + ;; size=12 bbWeight=37.44 PerfScore 131.04 +G_M58311_IG08: ; bbWeight=72.00, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
push edi ; gcr arg push 0 mov edx, esi
- mov gword ptr [ebp-0x14], ecx - ; GC ptr vars +{V06} - mov ecx, gword ptr [ecx+0x04] - mov edi, gword ptr [ebp-0x14] - ; GC ptr vars -{V06} - call [edi+0x0C]<unknown method> - ; gcrRegs -[eax ecx edx edi]
+ ; gcrRegs +[edx] + mov ecx, gword ptr [eax+0x04] + ; gcrRegs +[ecx] + call [eax+0x0C]<unknown method> + ; gcrRegs -[eax ecx edx]
; gcr arg pop 1
- mov eax, gword ptr [ebp-0x10] - ; gcrRegs +[eax] - mov edi, gword ptr [ebp+0x08] - ; gcrRegs +[edi]
jmp SHORT G_M58311_IG03
- ;; size=72 bbWeight=4 PerfScore 115.00 -G_M58311_IG06: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] - mov eax, gword ptr [ebp-0x10]
+ ;; size=11 bbWeight=72.00 PerfScore 594.00 +G_M58311_IG09: ; bbWeight=27.72, gcVars=00000000 {}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[eax]
+ ; GC ptr vars -{V04} + mov gword ptr [ebp-0x10], eax + ; GC ptr vars +{V04}
jmp SHORT G_M58311_IG03
- ;; size=5 bbWeight=2 PerfScore 6.00 -G_M58311_IG07: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=5 bbWeight=27.72 PerfScore 83.16 +G_M58311_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax esi edi] ; GC ptr vars -{V04} mov eax, ebx ;; size=2 bbWeight=1 PerfScore 0.25
-G_M58311_IG08: ; bbWeight=1, epilog, nogc, extend - lea esp, [ebp-0x0C]
+G_M58311_IG11: ; bbWeight=1, epilog, nogc, extend + pop ecx
pop ebx pop esi pop edi pop ebp ret 4
- ;; size=10 bbWeight=1 PerfScore 4.50
+ ;; size=8 bbWeight=1 PerfScore 4.50
-; Total bytes of code 122, prolog size 14, PerfScore 152.00, instruction count 50, allocated bytes for code 122 (MethodHash=22781c38) for method System.Xml.Linq.XObject:NotifyChanging(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (Tier0-FullOpts)
+; Total bytes of code 98, prolog size 12, PerfScore 1657.48, instruction count 43, allocated bytes for code 98 (MethodHash=22781c38) for method System.Xml.Linq.XObject:NotifyChanging(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (Tier0-FullOpts)
; ============================================================

-24 (-13.79%) : 31361.dasm - System.Collections.Generic.SortedSet`1+Enumerator[ubyte]:Initialize():this (Tier0-FullOpts)

@@ -2,29 +2,30 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 8, 16 ) byref -> esi this single-def -; V01 loc0 [V01,T01] ( 12, 26 ) ref -> edi class-hnd <System.Collections.Generic.SortedSet`1+Node[ubyte]>
+; V00 this [V00,T02] ( 8,175.71) byref -> esi this single-def +; V01 loc0 [V01,T01] ( 12,256.08) ref -> edi class-hnd <System.Collections.Generic.SortedSet`1+Node[ubyte]>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Generic.SortedSet`1+Node[ubyte]> ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Generic.SortedSet`1+Node[ubyte]>
-; V04 tmp0 [V04,T05] ( 5, 10 ) ref -> ebx -; V05 tmp1 [V05,T08] ( 3, 6 ) ref -> [ebp-0x10]
+; V04 tmp0 [V04,T05] ( 5, 66.58) ref -> ebx +; V05 tmp1 [V05,T07] ( 3, 48.97) ref -> [ebp-0x10]
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> ;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>>
-; V08 tmp4 [V08,T00] ( 7, 28 ) ref -> ecx class-hnd "Inlining Arg" <<unknown class>> -; V09 tmp5 [V09,T06] ( 4, 8 ) int -> eax "Inline stloc first use temp" -; V10 tmp6 [V10,T09] ( 3, 6 ) ref -> [ebp-0x14] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> ecx "argument with side effect" -; V12 tmp8 [V12,T04] ( 3, 12 ) ref -> ecx "argument with side effect" -; V13 cse0 [V13,T07] ( 2, 8 ) int -> ecx "CSE - moderate" -; V14 cse1 [V14,T10] ( 2, 4 ) int -> edx "CSE - moderate"
+; V08 tmp4 [V08,T03] ( 7,162.24) ref -> ecx class-hnd "Inlining Arg" <<unknown class>> +; V09 tmp5 [V09,T08] ( 4, 41.60) int -> eax "Inline stloc first use temp" +; V10 tmp6 [V10,T09] ( 3, 39.52) ref -> edx class-hnd "Inline stloc first use temp" <<unknown class>> +; V11 tmp7 [V11,T00] ( 3,432.00) ref -> ecx "argument with side effect" +; V12 tmp8 [V12,T06] ( 3, 53.91) ref -> ecx "argument with side effect" +; V13 cse0 [V13,T04] ( 2,144.00) int -> ecx "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M62780_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -32,11 +33,11 @@ G_M62780_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 8
+ push eax
mov esi, ecx ; byrRegs +[esi]
- ;; size=11 bbWeight=1 PerfScore 4.75 -G_M62780_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+ ;; size=9 bbWeight=1 PerfScore 5.50 +G_M62780_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
xor ecx, ecx ; gcrRegs +[ecx] mov gword ptr [esi+0x08], ecx @@ -44,41 +45,23 @@ G_M62780_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e mov edi, gword ptr [ecx+0x04] ; gcrRegs +[edi] test edi, edi
- je G_M62780_IG15 - ;; size=18 bbWeight=1 PerfScore 6.50 -G_M62780_IG03: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
+ je SHORT G_M62780_IG16 + ;; size=14 bbWeight=1 PerfScore 6.50 +G_M62780_IG03: ; bbWeight=72.00, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs -[ecx] movzx ecx, byte ptr [esi+0x10] test ecx, ecx
- jne SHORT G_M62780_IG05 - ;; size=8 bbWeight=4 PerfScore 13.00 -G_M62780_IG04: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
+ jne SHORT G_M62780_IG12 + ;; size=8 bbWeight=72.00 PerfScore 234.00 +G_M62780_IG04: ; bbWeight=18.72, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov ebx, gword ptr [edi+0x04] ; gcrRegs +[ebx]
- jmp SHORT G_M62780_IG06 - ;; size=5 bbWeight=2 PerfScore 8.00 -G_M62780_IG05: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - ; gcrRegs -[ebx] - mov ebx, gword ptr [edi+0x08] - ; gcrRegs +[ebx] - jmp SHORT G_M62780_IG07 - ;; size=5 bbWeight=2 PerfScore 8.00 -G_M62780_IG06: ; bbWeight=2, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
mov eax, gword ptr [edi+0x08] ; gcrRegs +[eax] mov gword ptr [ebp-0x10], eax ; GC ptr vars +{V05}
- jmp SHORT G_M62780_IG08 - ;; size=8 bbWeight=2 PerfScore 10.00 -G_M62780_IG07: ; bbWeight=2, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref - ; gcrRegs -[eax] - ; GC ptr vars -{V05} - mov eax, gword ptr [edi+0x04] - ; gcrRegs +[eax] - mov gword ptr [ebp-0x10], eax - ; GC ptr vars +{V05} - ;; size=6 bbWeight=2 PerfScore 6.00 -G_M62780_IG08: ; bbWeight=4, gcVars=00000100 {V05}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ ;; size=9 bbWeight=18.72 PerfScore 93.60 +G_M62780_IG05: ; bbWeight=72.00, gcVars=00000080 {V05}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[eax] mov ecx, gword ptr [esi] ; gcrRegs +[ecx] @@ -88,47 +71,69 @@ G_M62780_IG08: ; bbWeight=4, gcVars=00000100 {V05}, gcrefRegs=00000088 {e call [eax+0x10]<unknown method> ; gcrRegs -[ecx] test eax, eax
- je SHORT G_M62780_IG11 - ;; size=18 bbWeight=4 PerfScore 49.00 -G_M62780_IG09: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ je SHORT G_M62780_IG13 + ;; size=18 bbWeight=72.00 PerfScore 882.00 +G_M62780_IG06: ; bbWeight=18.72, gcVars=00000000 {}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; GC ptr vars -{V05} mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] mov eax, dword ptr [ecx+0x08] mov edx, gword ptr [ecx+0x04] ; gcrRegs +[edx]
- mov gword ptr [ebp-0x14], edx - ; GC ptr vars +{V10} - mov edx, dword ptr [edx+0x04]
+ cmp dword ptr [edx+0x04], eax + ja SHORT G_M62780_IG11 + ;; size=14 bbWeight=18.72 PerfScore 187.20 +G_M62780_IG07: ; bbWeight=18.72, gcrefRegs=0000008A {ecx ebx edi}, byrefRegs=00000040 {esi}, byref
; gcrRegs -[edx]
- cmp edx, eax - jbe SHORT G_M62780_IG10 - mov edx, gword ptr [ebp-0x14]
+ mov edx, edi
; gcrRegs +[edx]
+ call [<unknown method>] + ; gcrRegs -[ecx edx edi] + ;; size=8 bbWeight=18.72 PerfScore 60.84 +G_M62780_IG08: ; bbWeight=4.31, gcrefRegs=00000008 {ebx}, byrefRegs=00000040 {esi}, byref + mov edi, ebx + ; gcrRegs +[edi] + ;; size=2 bbWeight=4.31 PerfScore 1.08 +G_M62780_IG09: ; bbWeight=72.00, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz + ; gcrRegs -[ebx] + test edi, edi + jne SHORT G_M62780_IG03 + ;; size=4 bbWeight=72.00 PerfScore 90.00 +G_M62780_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[edi] + ; byrRegs -[esi] + jmp SHORT G_M62780_IG16 + ;; size=2 bbWeight=1 PerfScore 2.00 +G_M62780_IG11: ; bbWeight=2.08, gcrefRegs=0000008E {ecx edx ebx edi}, byrefRegs=00000040 {esi}, byref, isz + ; gcrRegs +[ecx edx ebx edi] + ; byrRegs +[esi]
lea edx, bword ptr [edx+4*eax+0x08] ; gcrRegs -[edx] ; byrRegs +[edx]
- ; GC ptr vars -{V10}
call CORINFO_HELP_ASSIGN_REF_EDI ; gcrRegs -[edi] ; byrRegs -[edx] inc dword ptr [ecx+0x0C] inc eax mov dword ptr [ecx+0x08], eax
- jmp SHORT G_M62780_IG13 - ;; size=40 bbWeight=2 PerfScore 39.00 -G_M62780_IG10: ; bbWeight=2, gcrefRegs=0000008A {ecx ebx edi}, byrefRegs=00000040 {esi}, byref, isz - ; gcrRegs +[edi] - mov edx, edi - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx edi] - jmp SHORT G_M62780_IG13 - ;; size=10 bbWeight=2 PerfScore 10.50 -G_M62780_IG11: ; bbWeight=2, gcVars=00000100 {V05}, gcrefRegs=00000008 {ebx}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; GC ptr vars +{V05 V08}
+ jmp SHORT G_M62780_IG08 + ;; size=18 bbWeight=2.08 PerfScore 17.16 +G_M62780_IG12: ; bbWeight=17.28, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz + ; gcrRegs -[ecx ebx] +[edi] + mov ebx, gword ptr [edi+0x08] + ; gcrRegs +[ebx] + mov eax, gword ptr [edi+0x04] + ; gcrRegs +[eax] + mov gword ptr [ebp-0x10], eax + ; GC ptr vars +{V05} + jmp SHORT G_M62780_IG05 + ;; size=11 bbWeight=17.28 PerfScore 120.96 +G_M62780_IG13: ; bbWeight=17.28, gcVars=00000080 {V05}, gcrefRegs=00000008 {ebx}, byrefRegs=00000040 {esi}, gcvars, byref, isz + ; gcrRegs -[eax edi]
test ebx, ebx
- je SHORT G_M62780_IG12
+ je SHORT G_M62780_IG15 + ;; size=4 bbWeight=17.28 PerfScore 21.60 +G_M62780_IG14: ; bbWeight=8.99, gcrefRegs=00000008 {ebx}, byrefRegs=00000040 {esi}, byref, isz
mov ecx, gword ptr [esi] ; gcrRegs +[ecx] movzx edx, byte ptr [ebx+0x0C] @@ -137,36 +142,26 @@ G_M62780_IG11: ; bbWeight=2, gcVars=00000100 {V05}, gcrefRegs=00000008 {e call [eax+0x10]<unknown method> ; gcrRegs -[ecx] test eax, eax
- jne SHORT G_M62780_IG13 - ;; size=22 bbWeight=2 PerfScore 27.00 -G_M62780_IG12: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+ jne SHORT G_M62780_IG08 + ;; size=18 bbWeight=8.99 PerfScore 110.07 +G_M62780_IG15: ; bbWeight=12.97, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs -[ebx] mov edi, gword ptr [ebp-0x10] ; gcrRegs +[edi]
- jmp SHORT G_M62780_IG14 - ;; size=5 bbWeight=2 PerfScore 6.00 -G_M62780_IG13: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000040 {esi}, gcvars, byref - ; gcrRegs -[edi] +[ebx] - ; GC ptr vars -{V05 V08} - mov edi, ebx - ; gcrRegs +[edi] - ;; size=2 bbWeight=2 PerfScore 0.50 -G_M62780_IG14: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref - ; gcrRegs -[ebx] - test edi, edi - jne G_M62780_IG03 - ;; size=8 bbWeight=4 PerfScore 5.00 -G_M62780_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ jmp SHORT G_M62780_IG09 + ;; size=5 bbWeight=12.97 PerfScore 38.90 +G_M62780_IG16: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[edi] ; byrRegs -[esi]
- lea esp, [ebp-0x0C]
+ ; GC ptr vars -{V05} + pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=1 PerfScore 3.50
+ ;; size=6 bbWeight=1 PerfScore 3.50
-; Total bytes of code 174, prolog size 9, PerfScore 196.75, instruction count 69, allocated bytes for code 174 (MethodHash=990c0ac3) for method System.Collections.Generic.SortedSet`1+Enumerator[ubyte]:Initialize():this (Tier0-FullOpts)
+; Total bytes of code 150, prolog size 7, PerfScore 1874.91, instruction count 64, allocated bytes for code 150 (MethodHash=990c0ac3) for method System.Collections.Generic.SortedSet`1+Enumerator[ubyte]:Initialize():this (Tier0-FullOpts)
; ============================================================

-24 (-12.90%) : 20820.dasm - System.IO.Path:GetDirectoryName(System.String):System.String (Tier1)

@@ -9,63 +9,64 @@ ; 4 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 8, 8 ) ref -> esi class-hnd single-def <System.String>
+; V00 arg0 [V00,T10] ( 6,104 ) ref -> esi class-hnd single-def <System.String>
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref ;* V02 tmp0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V07 tmp5 [V07,T12] ( 2, 4 ) int -> edx "Inlining Arg" -; V08 tmp6 [V08,T10] ( 2, 4 ) byref -> eax single-def "Inlining Arg"
+; V07 tmp5 [V07,T02] ( 2,200 ) int -> edx "Inlining Arg" +; V08 tmp6 [V08,T00] ( 2,200 ) byref -> eax single-def "Inlining Arg"
;* V09 tmp7 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V10 tmp8 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V11 tmp9 [V11,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V11 tmp9 [V11,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V12 tmp10 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V13 tmp11 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]>
-; V14 tmp12 [V14,T06] ( 5, 5 ) int -> ecx "Inline stloc first use temp"
+; V14 tmp12 [V14,T24] ( 5, 5 ) int -> ecx "Inline stloc first use temp"
;* V15 tmp13 [V15 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp" ;* V16 tmp14 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V17 tmp15 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V18 tmp16 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp17 [V19,T13] ( 2, 4 ) int -> ebx "Inlining Arg" -; V20 tmp18 [V20,T11] ( 2, 4 ) byref -> edi single-def "Inlining Arg"
+; V19 tmp17 [V19,T03] ( 2,200 ) int -> ebx "Inlining Arg" +; V20 tmp18 [V20,T01] ( 2,200 ) byref -> edi single-def "Inlining Arg"
;* V21 tmp19 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp20 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V23 tmp21 [V23,T09] ( 4, 4 ) int -> eax "Inline return value spill temp"
+; V23 tmp21 [V23,T23] ( 4, 5.59) int -> eax "Inline return value spill temp"
;* V24 tmp22 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp23 [V25,T01] ( 4, 18 ) int -> eax "Inline stloc first use temp" -; V26 tmp24 [V26,T00] ( 12, 29 ) int -> ecx "Inline stloc first use temp" -; V27 tmp25 [V27,T14] ( 2, 4 ) int -> ecx "dup spill" -;* V28 tmp26 [V28,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V29 tmp27 [V29,T04] ( 3, 5.79) ushort -> edx "Inlining Arg" -;* V30 tmp28 [V30,T27] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V31 tmp29 [V31,T05] ( 3, 5.79) ushort -> edi "Inlining Arg"
+; V25 tmp23 [V25,T08] ( 4,108.42) int -> eax "Inline stloc first use temp" +; V26 tmp24 [V26,T07] ( 13,141.37) int -> ecx "Inline stloc first use temp" +; V27 tmp25 [V27,T22] ( 2, 15.16) int -> ecx "dup spill" +;* V28 tmp26 [V28,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V29 tmp27 [V29,T20] ( 3, 21.94) ushort -> edx "Inlining Arg" +;* V30 tmp28 [V30,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V31 tmp29 [V31,T21] ( 3, 21.94) ushort -> edx "Inlining Arg"
;* V32 tmp30 [V32 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP ;* V33 tmp31 [V33 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x4)" P-INDEP ;* V34 tmp32 [V34 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP ;* V35 tmp33 [V35 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP
-; V36 tmp34 [V36,T17] ( 2, 2 ) byref -> eax single-def "field V04._reference (fldOffset=0x0)" P-INDEP -; V37 tmp35 [V37,T15] ( 3, 3 ) int -> edx "field V04._length (fldOffset=0x4)" P-INDEP -; V38 tmp36 [V38,T18] ( 2, 2 ) byref -> eax single-def "field V05._reference (fldOffset=0x0)" P-INDEP -; V39 tmp37 [V39,T23] ( 2, 2 ) int -> edx "field V05._length (fldOffset=0x4)" P-INDEP
+; V36 tmp34 [V36,T18] ( 2, 51 ) byref -> eax single-def "field V04._reference (fldOffset=0x0)" P-INDEP +; V37 tmp35 [V37,T11] ( 3,101 ) int -> edx "field V04._length (fldOffset=0x4)" P-INDEP +; V38 tmp36 [V38,T12] ( 2,100 ) byref -> eax single-def "field V05._reference (fldOffset=0x0)" P-INDEP +; V39 tmp37 [V39,T15] ( 2,100 ) int -> edx "field V05._length (fldOffset=0x4)" P-INDEP
;* V40 tmp38 [V40 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP ;* V41 tmp39 [V41 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x4)" P-INDEP ;* V42 tmp40 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP ;* V43 tmp41 [V43 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP
-; V44 tmp42 [V44,T19] ( 2, 2 ) byref -> eax single-def "field V13._reference (fldOffset=0x0)" P-INDEP -; V45 tmp43 [V45,T16] ( 3, 3 ) int -> edx "field V13._length (fldOffset=0x4)" P-INDEP -; V46 tmp44 [V46,T20] ( 2, 2 ) byref -> edi "field V16._reference (fldOffset=0x0)" P-INDEP -; V47 tmp45 [V47,T24] ( 2, 2 ) int -> ebx "field V16._length (fldOffset=0x4)" P-INDEP -; V48 tmp46 [V48,T21] ( 2, 2 ) byref -> edi single-def "field V17._reference (fldOffset=0x0)" P-INDEP -; V49 tmp47 [V49,T25] ( 2, 2 ) int -> ebx "field V17._length (fldOffset=0x4)" P-INDEP
+; V44 tmp42 [V44,T28] ( 2, 2 ) byref -> eax single-def "field V13._reference (fldOffset=0x0)" P-INDEP +; V45 tmp43 [V45,T27] ( 3, 3 ) int -> edx "field V13._length (fldOffset=0x4)" P-INDEP +; V46 tmp44 [V46,T13] ( 2,100 ) byref -> edi "field V16._reference (fldOffset=0x0)" P-INDEP +; V47 tmp45 [V47,T16] ( 2,100 ) int -> ebx "field V16._length (fldOffset=0x4)" P-INDEP +; V48 tmp46 [V48,T14] ( 2,100 ) byref -> edi single-def "field V17._reference (fldOffset=0x0)" P-INDEP +; V49 tmp47 [V49,T17] ( 2,100 ) int -> ebx "field V17._length (fldOffset=0x4)" P-INDEP
;* V50 tmp48 [V50 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP ;* V51 tmp49 [V51 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP
-; V52 tmp50 [V52,T08] ( 4, 4 ) byref -> [ebp-0x10] spill-single-def "field V24._reference (fldOffset=0x0)" P-INDEP -; V53 tmp51 [V53,T07] ( 5, 5 ) int -> ebx "field V24._length (fldOffset=0x4)" P-INDEP -; V54 cse0 [V54,T03] ( 3, 6 ) int -> edx "CSE - moderate"
+; V52 tmp50 [V52,T09] ( 4,107.58) byref -> edi single-def "field V24._reference (fldOffset=0x0)" P-INDEP +; V53 tmp51 [V53,T04] ( 5,157.58) int -> ebx "field V24._length (fldOffset=0x4)" P-INDEP +; V54 cse0 [V54,T05] ( 3,150 ) byref -> edi "CSE - moderate" +; V55 cse1 [V55,T06] ( 3,150 ) int -> ebx "CSE - moderate"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M25805_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -73,79 +74,109 @@ G_M25805_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- push eax
mov esi, ecx ; gcrRegs +[esi]
- ;; size=9 bbWeight=1 PerfScore 5.50 -G_M25805_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=8 bbWeight=1 PerfScore 4.50 +G_M25805_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
test esi, esi
- je G_M25805_IG15 - lea eax, bword ptr [esi+0x08]
+ je SHORT G_M25805_IG11 + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M25805_IG03: ; bbWeight=50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + lea edi, bword ptr [esi+0x08] + ; byrRegs +[edi] + mov eax, edi
; byrRegs +[eax]
- mov edx, dword ptr [esi+0x04]
+ mov ebx, dword ptr [esi+0x04] + mov edx, ebx
test edx, edx
- je G_M25805_IG15
+ je SHORT G_M25805_IG11 + ;; size=14 bbWeight=50 PerfScore 212.50 +G_M25805_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000081 {eax edi}, byref, isz
xor ecx, ecx test edx, edx
- jle G_M25805_IG15 - ;; size=32 bbWeight=1 PerfScore 6.50 -G_M25805_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz
+ jle SHORT G_M25805_IG11 + ;; size=6 bbWeight=1 PerfScore 1.50 +G_M25805_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000081 {eax edi}, byref, isz
cmp word ptr [eax+2*ecx], 32
- jne SHORT G_M25805_IG14
+ jne SHORT G_M25805_IG06
inc ecx cmp ecx, edx
- jl SHORT G_M25805_IG03 - jmp SHORT G_M25805_IG15
+ jl SHORT G_M25805_IG05 + jmp SHORT G_M25805_IG11
;; size=14 bbWeight=1 PerfScore 7.50
-G_M25805_IG04: ; bbWeight=8, gcVars=00000100 {V52}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz - ; byrRegs -[eax] +[edi] - ; GC ptr vars +{V08 V52}
+G_M25805_IG06: ; bbWeight=50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz + ; byrRegs -[eax] + push ebx + push edi + ; byr arg push 1 + call [<unknown method>] + ; gcr arg pop 1 + mov ecx, ebx
cmp ecx, eax
- jle SHORT G_M25805_IG08 - ;; size=4 bbWeight=8 PerfScore 10.00 -G_M25805_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+ jle SHORT G_M25805_IG10 + ;; size=14 bbWeight=50 PerfScore 325.00 +G_M25805_IG07: ; bbWeight=4.21, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz + cmp ecx, eax + jle SHORT G_M25805_IG14 + ;; size=4 bbWeight=4.21 PerfScore 5.26 +G_M25805_IG08: ; bbWeight=3.79, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
dec ecx cmp ecx, ebx
- jae SHORT G_M25805_IG17
+ jae SHORT G_M25805_IG20
movzx edx, word ptr [edi+2*ecx] cmp edx, 92
- je SHORT G_M25805_IG08 - ;; size=14 bbWeight=1 PerfScore 4.75 -G_M25805_IG06: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+ je SHORT G_M25805_IG14 + ;; size=14 bbWeight=3.79 PerfScore 18.00 +G_M25805_IG09: ; bbWeight=3.39, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
cmp edx, 47
- jne SHORT G_M25805_IG04 - jmp SHORT G_M25805_IG08 - ;; size=7 bbWeight=0.89 PerfScore 2.91 -G_M25805_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M25805_IG07 + jmp SHORT G_M25805_IG14 + ;; size=7 bbWeight=3.39 PerfScore 11.02 +G_M25805_IG10: ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[edi]
- mov ecx, edx - mov edi, bword ptr [ebp-0x10]
+ mov eax, -1 + jmp SHORT G_M25805_IG18 + ;; size=7 bbWeight=0.20 PerfScore 0.45 +G_M25805_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[esi] + xor eax, eax + ; gcrRegs +[eax] + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M25805_IG12: ; bbWeight=1, epilog, nogc, extend + pop ebx + pop esi + pop edi + pop ebp + ret + ;; size=5 bbWeight=1 PerfScore 3.00 +G_M25805_IG13: ; bbWeight=3.41, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref + ; gcrRegs -[eax] +[esi]
; byrRegs +[edi]
- ;; size=5 bbWeight=4 PerfScore 5.00 -G_M25805_IG08: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+ dec ecx + ;; size=1 bbWeight=3.41 PerfScore 0.85 +G_M25805_IG14: ; bbWeight=4.21, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
cmp ecx, eax
- jle SHORT G_M25805_IG11 - ;; size=4 bbWeight=8 PerfScore 10.00 -G_M25805_IG09: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+ jle SHORT G_M25805_IG17 + ;; size=4 bbWeight=4.21 PerfScore 5.26 +G_M25805_IG15: ; bbWeight=3.79, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
lea edx, [ecx-0x01] cmp edx, ebx
- jae SHORT G_M25805_IG17 - movzx edi, word ptr [edi+2*ecx-0x02]
+ jae SHORT G_M25805_IG20 + movzx edx, word ptr [edi+2*ecx-0x02] + cmp edx, 92 + je SHORT G_M25805_IG13 + ;; size=17 bbWeight=3.79 PerfScore 18.95 +G_M25805_IG16: ; bbWeight=3.39, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz + cmp edx, 47 + je SHORT G_M25805_IG13 + ;; size=5 bbWeight=3.39 PerfScore 4.24 +G_M25805_IG17: ; bbWeight=3.39, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; byrRegs -[edi]
- cmp edi, 92 - je SHORT G_M25805_IG07 - ;; size=17 bbWeight=1 PerfScore 5.00 -G_M25805_IG10: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - cmp edi, 47 - je SHORT G_M25805_IG07 - ;; size=5 bbWeight=0.89 PerfScore 1.12 -G_M25805_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars -{V08 V52}
mov eax, ecx
- ;; size=2 bbWeight=1 PerfScore 0.25 -G_M25805_IG12: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=3.39 PerfScore 0.85 +G_M25805_IG18: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
test eax, eax
- jl SHORT G_M25805_IG15
+ jl SHORT G_M25805_IG11
push eax ...

+26 (+37.14%) : 41248.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:AddPlusOne(System.Span1[ubyte],System.Span1[ubyte]) (Tier0-FullOpts)

@@ -2,20 +2,24 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; fully interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]> -; V01 arg1 [V01,T04] ( 2, 8 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]> -; V02 loc0 [V02,T03] ( 3, 9 ) int -> ecx -; V03 loc1 [V03,T00] ( 10, 34 ) int -> esi -; V04 loc2 [V04,T01] ( 3, 12 ) int -> ecx -; V05 tmp0 [V05,T02] ( 3, 9 ) byref -> eax single-def "V00.[000..004)" -; V06 tmp1 [V06,T05] ( 3, 6 ) int -> edx single-def "V00.[004..008)"
+; V00 arg0 [V00,T07] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]> +; V01 arg1 [V01,T08] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]> +; V02 loc0 [V02,T03] ( 3,145.00) int -> registers +; V03 loc1 [V03,T00] ( 10,578.00) int -> ebx +; V04 loc2 [V04,T01] ( 3,216.00) int -> edx +; V05 tmp0 [V05,T02] ( 3,145.00) byref -> eax single-def "V00.[000..004)" +; V06 tmp1 [V06,T04] ( 3, 74.00) int -> [ebp-0x10] spill-single-def "V00.[004..008)" +; V07 tmp2 [V07,T05] ( 2, 73.00) byref -> [ebp-0x14] spill-single-def "V01.[000..004)" +; V08 tmp3 [V08,T06] ( 2, 73.00) int -> esi single-def "V01.[004..008)"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M31293_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -23,45 +27,65 @@ G_M31293_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- ;; size=6 bbWeight=1 PerfScore 4.25
+ sub esp, 8 + ;; size=9 bbWeight=1 PerfScore 4.50
G_M31293_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, bword ptr [ebp+0x10] ; byrRegs +[eax] mov edx, dword ptr [ebp+0x14]
- mov ecx, 1 - lea esi, [edx-0x01] - test esi, esi
+ mov dword ptr [ebp-0x10], edx + mov ecx, bword ptr [ebp+0x08] + ; byrRegs +[ecx] + mov bword ptr [ebp-0x14], ecx + ; GC ptr vars +{V07} + mov esi, dword ptr [ebp+0x0C] + mov edi, 1 + lea ebx, [edx-0x01] + test ebx, ebx
jl SHORT G_M31293_IG04
- ;; size=18 bbWeight=1 PerfScore 4.00 -G_M31293_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz - cmp esi, edx - jae SHORT G_M31293_IG05 - movzx ebx, byte ptr [eax+esi] - add ecx, ebx - cmp esi, dword ptr [ebp+0x0C] - jae SHORT G_M31293_IG05 - mov edi, bword ptr [ebp+0x08]
+ ;; size=30 bbWeight=1 PerfScore 8.00 +G_M31293_IG03: ; bbWeight=72.00, gcVars=00000020 {V07}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref, isz + ; byrRegs -[ecx] + cmp ebx, edx + jae SHORT G_M31293_IG06 + movzx ecx, byte ptr [eax+ebx] + add ecx, edi + cmp ebx, esi + jae SHORT G_M31293_IG06 + mov edi, bword ptr [ebp-0x14]
; byrRegs +[edi]
- movzx ebx, byte ptr [edi+esi] - add ecx, ebx - mov byte ptr [eax+esi], cl - sar ecx, 8 - dec esi - jns SHORT G_M31293_IG03 - ;; size=33 bbWeight=4 PerfScore 50.00 -G_M31293_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ movzx edx, byte ptr [edi+ebx] + add edx, ecx + mov byte ptr [eax+ebx], dl + sar edx, 8 + mov ecx, edx + dec ebx + mov edx, dword ptr [ebp-0x10] + jns SHORT G_M31293_IG05 + ;; size=37 bbWeight=72.00 PerfScore 864.00 +G_M31293_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc
; byrRegs -[eax edi]
+ ; GC ptr vars -{V07} + lea esp, [ebp-0x0C]
pop ebx pop esi pop edi pop ebp ret 16
- ;; size=7 bbWeight=1 PerfScore 4.00 -G_M31293_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=10 bbWeight=1 PerfScore 4.50 +G_M31293_IG05: ; bbWeight=36.00, gcVars=00000020 {V07}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref, isz + ; byrRegs +[eax] + ; GC ptr vars +{V05 V07} + mov edi, ecx + jmp SHORT G_M31293_IG03 + ;; size=4 bbWeight=36.00 PerfScore 81.00 +G_M31293_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; byrRegs -[eax] + ; GC ptr vars -{V05 V07}
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 70, prolog size 6, PerfScore 62.25, instruction count 31, allocated bytes for code 70 (MethodHash=218885c2) for method System.Security.Cryptography.Pkcs.Pkcs12Kdf:AddPlusOne(System.Span`1[ubyte],System.Span`1[ubyte]) (Tier0-FullOpts)
+; Total bytes of code 96, prolog size 9, PerfScore 962.00, instruction count 41, allocated bytes for code 96 (MethodHash=218885c2) for method System.Security.Cryptography.Pkcs.Pkcs12Kdf:AddPlusOne(System.Span`1[ubyte],System.Span`1[ubyte]) (Tier0-FullOpts)
; ============================================================

+34 (+44.74%) : 13981.dasm - System.Linq.Enumerable+SelectListIterator2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan1[System.Canon],System.Span1[System.__Canon],System.Func2[System.Canon,System.__Canon]) (Tier0-FullOpts)

@@ -2,21 +2,26 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 2, 8 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.__Canon]> -; V01 arg1 [V01,T04] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.__Canon]> -; V02 arg2 [V02,T01] ( 4, 10 ) ref -> esi class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
+; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.__Canon]> +; V01 arg1 [V01,T07] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.__Canon]> +; V02 arg2 [V02,T01] ( 4,146.00) ref -> esi class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
;* V03 TypeCtx [V03 ] ( 0, 0 ) int -> zero-ref single-def
-; V04 loc0 [V04,T00] ( 7, 25 ) int -> ebx
+; V04 loc0 [V04,T00] ( 7,433.00) int -> [ebp-0x10]
;* V05 loc1 [V05 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
-; V06 tmp1 [V06,T03] ( 3, 6 ) int -> edi "V01.[004..008)" -; TEMP_01 byref -> [ebp-0x10]
+; V06 tmp1 [V06,T03] ( 2, 73.00) byref -> edi single-def "V00.[000..004)" +; V07 tmp2 [V07,T05] ( 2, 73.00) int -> ebx "V00.[004..008)" +; V08 tmp3 [V08,T04] ( 2, 73.00) byref -> [ebp-0x18] spill-single-def "V01.[000..004)" +; V09 tmp4 [V09,T02] ( 3, 74.00) int -> [ebp-0x14] spill-single-def "V01.[004..008)" +; TEMP_01 byref -> [ebp-0x1C]
;
-; Lcl frame size = 4
+; Lcl frame size = 16
G_M9263_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -24,58 +29,82 @@ G_M9263_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- push eax
+ sub esp, 16
xor eax, eax
- mov dword ptr [ebp-0x10], eax
+ mov dword ptr [ebp-0x1C], eax
mov esi, ecx ; gcrRegs +[esi]
- ;; size=14 bbWeight=1 PerfScore 6.75
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M9263_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, dword ptr [ebp+0x0C] - xor ebx, ebx - test edi, edi
+ mov edi, bword ptr [ebp+0x10] + ; byrRegs +[edi] + mov ebx, dword ptr [ebp+0x14] + mov eax, bword ptr [ebp+0x08] + ; byrRegs +[eax] + mov bword ptr [ebp-0x18], eax + ; GC ptr vars +{V08} + mov ecx, dword ptr [ebp+0x0C] + mov dword ptr [ebp-0x14], ecx + xor edx, edx + test ecx, ecx
jle SHORT G_M9263_IG04
- ;; size=9 bbWeight=1 PerfScore 2.50 -G_M9263_IG03: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov edx, bword ptr [ebp+0x08]
+ ;; size=24 bbWeight=1 PerfScore 7.50 +G_M9263_IG03: ; bbWeight=72.00, gcVars=00000010 {V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000081 {eax edi}, gcvars, byref, isz + mov dword ptr [ebp-0x10], edx + lea edx, bword ptr [eax+4*edx]
; byrRegs +[edx]
- lea edx, bword ptr [edx+4*ebx] - mov bword ptr [ebp-0x10], edx - cmp ebx, dword ptr [ebp+0x14] - jae SHORT G_M9263_IG05 - mov ecx, bword ptr [ebp+0x10] - ; byrRegs +[ecx] - mov edx, gword ptr [ecx+4*ebx]
+ mov bword ptr [ebp-0x1C], edx + mov eax, dword ptr [ebp-0x10] + ; byrRegs -[eax] + cmp eax, ebx + jae SHORT G_M9263_IG06 + mov dword ptr [ebp-0x10], eax + mov edx, gword ptr [edi+4*eax]
; gcrRegs +[edx] ; byrRegs -[edx] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx]
- ; byrRegs -[ecx]
call [esi+0x0C]<unknown method> ; gcrRegs -[ecx edx] +[eax]
- mov edx, bword ptr [ebp-0x10]
+ mov edx, bword ptr [ebp-0x1C]
; byrRegs +[edx] call CORINFO_HELP_CHECKED_ASSIGN_REF_EAX ; gcrRegs -[eax] ; byrRegs -[edx]
- inc ebx - cmp ebx, edi - jl SHORT G_M9263_IG03 - ;; size=39 bbWeight=4 PerfScore 68.00 -G_M9263_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ mov eax, dword ptr [ebp-0x10] + inc eax + mov ecx, dword ptr [ebp-0x14] + cmp eax, ecx + mov edx, eax + jl SHORT G_M9263_IG05 + ;; size=49 bbWeight=72.00 PerfScore 1332.00 +G_M9263_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[esi]
- pop ecx
+ ; byrRegs -[edi] + ; GC ptr vars -{V08} + lea esp, [ebp-0x0C]
pop ebx pop esi pop edi pop ebp ret 16
- ;; size=8 bbWeight=1 PerfScore 4.50 -G_M9263_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=10 bbWeight=1 PerfScore 4.50 +G_M9263_IG05: ; bbWeight=36.00, gcVars=00000010 {V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz + ; gcrRegs +[esi] + ; byrRegs +[edi] + ; GC ptr vars +{V04 V08} + mov eax, bword ptr [ebp-0x18] + ; byrRegs +[eax] + jmp SHORT G_M9263_IG03 + ;; size=5 bbWeight=36.00 PerfScore 108.00 +G_M9263_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[esi] + ; byrRegs -[eax edi] + ; GC ptr vars -{V04 V08}
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 12, PerfScore 81.75, instruction count 35, allocated bytes for code 76 (MethodHash=2891dbd0) for method System.Linq.Enumerable+SelectListIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier0-FullOpts)
+; Total bytes of code 110, prolog size 14, PerfScore 1458.00, instruction count 46, allocated bytes for code 110 (MethodHash=2891dbd0) for method System.Linq.Enumerable+SelectListIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier0-FullOpts)
; ============================================================

+34 (+44.74%) : 1956.dasm - System.Linq.Enumerable+SelectListIterator2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan1[System.Canon],System.Span1[System.__Canon],System.Func2[System.Canon,System.__Canon]) (Tier0-FullOpts)

@@ -2,21 +2,26 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier-0 switched to FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 2, 8 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.__Canon]> -; V01 arg1 [V01,T04] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.__Canon]> -; V02 arg2 [V02,T01] ( 4, 10 ) ref -> esi class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
+; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.__Canon]> +; V01 arg1 [V01,T07] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.__Canon]> +; V02 arg2 [V02,T01] ( 4,146.00) ref -> esi class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
;* V03 TypeCtx [V03 ] ( 0, 0 ) int -> zero-ref single-def
-; V04 loc0 [V04,T00] ( 7, 25 ) int -> ebx
+; V04 loc0 [V04,T00] ( 7,433.00) int -> [ebp-0x10]
;* V05 loc1 [V05 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
-; V06 tmp1 [V06,T03] ( 3, 6 ) int -> edi "V01.[004..008)" -; TEMP_01 byref -> [ebp-0x10]
+; V06 tmp1 [V06,T03] ( 2, 73.00) byref -> edi single-def "V00.[000..004)" +; V07 tmp2 [V07,T05] ( 2, 73.00) int -> ebx "V00.[004..008)" +; V08 tmp3 [V08,T04] ( 2, 73.00) byref -> [ebp-0x18] spill-single-def "V01.[000..004)" +; V09 tmp4 [V09,T02] ( 3, 74.00) int -> [ebp-0x14] spill-single-def "V01.[004..008)" +; TEMP_01 byref -> [ebp-0x1C]
;
-; Lcl frame size = 4
+; Lcl frame size = 16
G_M9263_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -24,58 +29,82 @@ G_M9263_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- push eax
+ sub esp, 16
xor eax, eax
- mov dword ptr [ebp-0x10], eax
+ mov dword ptr [ebp-0x1C], eax
mov esi, ecx ; gcrRegs +[esi]
- ;; size=14 bbWeight=1 PerfScore 6.75
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M9263_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, dword ptr [ebp+0x0C] - xor ebx, ebx - test edi, edi
+ mov edi, bword ptr [ebp+0x10] + ; byrRegs +[edi] + mov ebx, dword ptr [ebp+0x14] + mov eax, bword ptr [ebp+0x08] + ; byrRegs +[eax] + mov bword ptr [ebp-0x18], eax + ; GC ptr vars +{V08} + mov ecx, dword ptr [ebp+0x0C] + mov dword ptr [ebp-0x14], ecx + xor edx, edx + test ecx, ecx
jle SHORT G_M9263_IG04
- ;; size=9 bbWeight=1 PerfScore 2.50 -G_M9263_IG03: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov edx, bword ptr [ebp+0x08]
+ ;; size=24 bbWeight=1 PerfScore 7.50 +G_M9263_IG03: ; bbWeight=72.00, gcVars=00000010 {V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000081 {eax edi}, gcvars, byref, isz + mov dword ptr [ebp-0x10], edx + lea edx, bword ptr [eax+4*edx]
; byrRegs +[edx]
- lea edx, bword ptr [edx+4*ebx] - mov bword ptr [ebp-0x10], edx - cmp ebx, dword ptr [ebp+0x14] - jae SHORT G_M9263_IG05 - mov ecx, bword ptr [ebp+0x10] - ; byrRegs +[ecx] - mov edx, gword ptr [ecx+4*ebx]
+ mov bword ptr [ebp-0x1C], edx + mov eax, dword ptr [ebp-0x10] + ; byrRegs -[eax] + cmp eax, ebx + jae SHORT G_M9263_IG06 + mov dword ptr [ebp-0x10], eax + mov edx, gword ptr [edi+4*eax]
; gcrRegs +[edx] ; byrRegs -[edx] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx]
- ; byrRegs -[ecx]
call [esi+0x0C]<unknown method> ; gcrRegs -[ecx edx] +[eax]
- mov edx, bword ptr [ebp-0x10]
+ mov edx, bword ptr [ebp-0x1C]
; byrRegs +[edx] call CORINFO_HELP_CHECKED_ASSIGN_REF_EAX ; gcrRegs -[eax] ; byrRegs -[edx]
- inc ebx - cmp ebx, edi - jl SHORT G_M9263_IG03 - ;; size=39 bbWeight=4 PerfScore 68.00 -G_M9263_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ mov eax, dword ptr [ebp-0x10] + inc eax + mov ecx, dword ptr [ebp-0x14] + cmp eax, ecx + mov edx, eax + jl SHORT G_M9263_IG05 + ;; size=49 bbWeight=72.00 PerfScore 1332.00 +G_M9263_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[esi]
- pop ecx
+ ; byrRegs -[edi] + ; GC ptr vars -{V08} + lea esp, [ebp-0x0C]
pop ebx pop esi pop edi pop ebp ret 16
- ;; size=8 bbWeight=1 PerfScore 4.50 -G_M9263_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=10 bbWeight=1 PerfScore 4.50 +G_M9263_IG05: ; bbWeight=36.00, gcVars=00000010 {V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz + ; gcrRegs +[esi] + ; byrRegs +[edi] + ; GC ptr vars +{V04 V08} + mov eax, bword ptr [ebp-0x18] + ; byrRegs +[eax] + jmp SHORT G_M9263_IG03 + ;; size=5 bbWeight=36.00 PerfScore 108.00 +G_M9263_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[esi] + ; byrRegs -[eax edi] + ; GC ptr vars -{V04 V08}
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 12, PerfScore 81.75, instruction count 35, allocated bytes for code 76 (MethodHash=2891dbd0) for method System.Linq.Enumerable+SelectListIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier0-FullOpts)
+; Total bytes of code 110, prolog size 14, PerfScore 1458.00, instruction count 46, allocated bytes for code 110 (MethodHash=2891dbd0) for method System.Linq.Enumerable+SelectListIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier0-FullOpts)
; ============================================================

librariestestsnotieredcompilation.run.windows.x86.Release.mch

-37 (-97.37%) : 219408.dasm - System.IO.Tests.PathTests:GetDirectoryName_NullReturnsNull():this (FullOpts)

@@ -2,46 +2,25 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; optimized using Synthesized PGO +; esp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; 1 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.IO.Tests.PathTests>
-; V01 tmp0 [V01,T00] ( 3, 4 ) ref -> eax class-hnd exact single-def "Inlining Arg" <System.String>
+;* V01 tmp0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.String>
; ; Lcl frame size = 0 G_M50179_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp - ;; size=3 bbWeight=1 PerfScore 1.25 -G_M50179_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - xor ecx, ecx - ; gcrRegs +[ecx] - call [System.IO.Path:GetDirectoryName(System.String):System.String] - ; gcrRegs -[ecx] +[eax] - test eax, eax - jne SHORT G_M50179_IG04 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M50179_IG03: ; bbWeight=1, epilog, nogc, extend - pop ebp
+ ;; size=0 bbWeight=1 PerfScore 0.00 +G_M50179_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
ret
- ;; size=2 bbWeight=1 PerfScore 1.50 -G_M50179_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref - mov ecx, eax - ; gcrRegs +[ecx] - mov edx, 0xD1FFAB1E ; <unknown method> - call [<unknown method>] - ; gcrRegs -[ecx] - mov ecx, eax - ; gcrRegs +[ecx] - call CORINFO_HELP_THROW - ; gcrRegs -[eax ecx] - int3 - ;; size=21 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 38, prolog size 3, PerfScore 7.25, instruction count 14, allocated bytes for code 38 (MethodHash=f6743bfc) for method System.IO.Tests.PathTests:GetDirectoryName_NullReturnsNull():this (FullOpts)
+; Total bytes of code 1, prolog size 0, PerfScore 1.00, instruction count 1, allocated bytes for code 1 (MethodHash=f6743bfc) for method System.IO.Tests.PathTests:GetDirectoryName_NullReturnsNull():this (FullOpts)
; ============================================================

-28 (-84.85%) : 213774.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareEntityHandles():this (FullOpts)

@@ -2,10 +2,12 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 14 inlinees with PGO data; 96 single block inlinees; 13 inlinees without PGO data
+; 14 inlinees with PGO data; 98 single block inlinees; 14 inlinees without PGO data
; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Reflection.Metadata.Tests.HandleComparerTests> @@ -148,130 +150,133 @@ ;* V137 tmp136 [V137 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V138 tmp137 [V138 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V139 tmp138 [V139 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-;* V140 tmp139 [V140 ] ( 0, 0 ) int -> zero-ref single-def "field V01._vToken (fldOffset=0x0)" P-INDEP -;* V141 tmp140 [V141 ] ( 0, 0 ) int -> zero-ref single-def "field V02._vToken (fldOffset=0x0)" P-INDEP -;* V142 tmp141 [V142 ] ( 0, 0 ) int -> zero-ref single-def "field V03._vToken (fldOffset=0x0)" P-INDEP -;* V143 tmp142 [V143 ] ( 0, 0 ) int -> zero-ref single-def "field V04._vToken (fldOffset=0x0)" P-INDEP -;* V144 tmp143 [V144 ] ( 0, 0 ) int -> zero-ref single-def "field V05._vToken (fldOffset=0x0)" P-INDEP -;* V145 tmp144 [V145 ] ( 0, 0 ) int -> zero-ref single-def "field V06._vToken (fldOffset=0x0)" P-INDEP -;* V146 tmp145 [V146 ] ( 0, 0 ) int -> zero-ref single-def "field V07._vToken (fldOffset=0x0)" P-INDEP -;* V147 tmp146 [V147 ] ( 0, 0 ) int -> zero-ref single-def "field V08._vToken (fldOffset=0x0)" P-INDEP -;* V148 tmp147 [V148 ] ( 0, 0 ) int -> zero-ref single-def "field V09._vToken (fldOffset=0x0)" P-INDEP -;* V149 tmp148 [V149 ] ( 0, 0 ) int -> zero-ref single-def "field V10._vToken (fldOffset=0x0)" P-INDEP -;* V150 tmp149 [V150 ] ( 0, 0 ) int -> zero-ref single-def "field V11._vToken (fldOffset=0x0)" P-INDEP -;* V151 tmp150 [V151 ] ( 0, 0 ) int -> zero-ref single-def "field V12._vToken (fldOffset=0x0)" P-INDEP -;* V152 tmp151 [V152 ] ( 0, 0 ) int -> zero-ref single-def "field V13._vToken (fldOffset=0x0)" P-INDEP -;* V153 tmp152 [V153 ] ( 0, 0 ) int -> zero-ref single-def "field V14._vToken (fldOffset=0x0)" P-INDEP -;* V154 tmp153 [V154 ] ( 0, 0 ) int -> zero-ref single-def "field V15._vToken (fldOffset=0x0)" P-INDEP -;* V155 tmp154 [V155 ] ( 0, 0 ) int -> zero-ref single-def "field V16._vToken (fldOffset=0x0)" P-INDEP -;* V156 tmp155 [V156 ] ( 0, 0 ) int -> zero-ref single-def "field V17._vToken (fldOffset=0x0)" P-INDEP -;* V157 tmp156 [V157 ] ( 0, 0 ) int -> zero-ref single-def "field V18._vToken (fldOffset=0x0)" P-INDEP -;* V158 tmp157 [V158 ] ( 0, 0 ) int -> zero-ref single-def "field V19._vToken (fldOffset=0x0)" P-INDEP -;* V159 tmp158 [V159 ] ( 0, 0 ) int -> zero-ref single-def "field V20._vToken (fldOffset=0x0)" P-INDEP -;* V160 tmp159 [V160 ] ( 0, 0 ) int -> zero-ref single-def "field V21._vToken (fldOffset=0x0)" P-INDEP -;* V161 tmp160 [V161 ] ( 0, 0 ) int -> zero-ref single-def "field V22._vToken (fldOffset=0x0)" P-INDEP -;* V162 tmp161 [V162 ] ( 0, 0 ) int -> zero-ref single-def "field V23._vToken (fldOffset=0x0)" P-INDEP -;* V163 tmp162 [V163 ] ( 0, 0 ) int -> zero-ref single-def "field V24._vToken (fldOffset=0x0)" P-INDEP -;* V164 tmp163 [V164 ] ( 0, 0 ) int -> zero-ref single-def "field V25._vToken (fldOffset=0x0)" P-INDEP -;* V165 tmp164 [V165 ] ( 0, 0 ) int -> zero-ref single-def "field V26._vToken (fldOffset=0x0)" P-INDEP -;* V166 tmp165 [V166 ] ( 0, 0 ) int -> zero-ref single-def "field V27._vToken (fldOffset=0x0)" P-INDEP -;* V167 tmp166 [V167 ] ( 0, 0 ) int -> zero-ref single-def "field V28._vToken (fldOffset=0x0)" P-INDEP -;* V168 tmp167 [V168 ] ( 0, 0 ) int -> zero-ref single-def "field V29._vToken (fldOffset=0x0)" P-INDEP -;* V169 tmp168 [V169 ] ( 0, 0 ) int -> zero-ref single-def "field V30._vToken (fldOffset=0x0)" P-INDEP -;* V170 tmp169 [V170 ] ( 0, 0 ) int -> zero-ref single-def "field V31._vToken (fldOffset=0x0)" P-INDEP -;* V171 tmp170 [V171 ] ( 0, 0 ) int -> zero-ref single-def "field V32._vToken (fldOffset=0x0)" P-INDEP -;* V172 tmp171 [V172 ] ( 0, 0 ) int -> zero-ref single-def "field V33._vToken (fldOffset=0x0)" P-INDEP -;* V173 tmp172 [V173 ] ( 0, 0 ) int -> zero-ref single-def "field V34._vToken (fldOffset=0x0)" P-INDEP -;* V174 tmp173 [V174 ] ( 0, 0 ) int -> zero-ref single-def "field V35._vToken (fldOffset=0x0)" P-INDEP -;* V175 tmp174 [V175 ] ( 0, 0 ) int -> zero-ref single-def "field V36._vToken (fldOffset=0x0)" P-INDEP -;* V176 tmp175 [V176 ] ( 0, 0 ) int -> zero-ref single-def "field V37._vToken (fldOffset=0x0)" P-INDEP -;* V177 tmp176 [V177 ] ( 0, 0 ) int -> zero-ref single-def "field V38._vToken (fldOffset=0x0)" P-INDEP -;* V178 tmp177 [V178 ] ( 0, 0 ) int -> zero-ref single-def "field V39._vToken (fldOffset=0x0)" P-INDEP -;* V179 tmp178 [V179 ] ( 0, 0 ) int -> zero-ref single-def "field V40._vToken (fldOffset=0x0)" P-INDEP -;* V180 tmp179 [V180 ] ( 0, 0 ) int -> zero-ref single-def "field V41._vToken (fldOffset=0x0)" P-INDEP -;* V181 tmp180 [V181 ] ( 0, 0 ) int -> zero-ref single-def "field V42._vToken (fldOffset=0x0)" P-INDEP -;* V182 tmp181 [V182 ] ( 0, 0 ) int -> zero-ref single-def "field V43._vToken (fldOffset=0x0)" P-INDEP -;* V183 tmp182 [V183 ] ( 0, 0 ) int -> zero-ref single-def "field V44._vToken (fldOffset=0x0)" P-INDEP -;* V184 tmp183 [V184,T14] ( 0, 0 ) ubyte -> zero-ref single-def "field V48.hasValue (fldOffset=0x0)" P-INDEP -;* V185 tmp184 [V185,T15] ( 0, 0 ) ubyte -> zero-ref single-def "field V48.value (fldOffset=0x1)" P-INDEP -;* V186 tmp185 [V186 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.hasValue (fldOffset=0x0)" P-INDEP -;* V187 tmp186 [V187 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.value (fldOffset=0x1)" P-INDEP -;* V188 tmp187 [V188 ] ( 0, 0 ) int -> zero-ref single-def "field V50._vToken (fldOffset=0x0)" P-INDEP -;* V189 tmp188 [V189 ] ( 0, 0 ) int -> zero-ref single-def "field V51._vToken (fldOffset=0x0)" P-INDEP -;* V190 tmp189 [V190,T16] ( 0, 0 ) ubyte -> zero-ref single-def "field V55.hasValue (fldOffset=0x0)" P-INDEP -;* V191 tmp190 [V191,T17] ( 0, 0 ) ubyte -> zero-ref single-def "field V55.value (fldOffset=0x1)" P-INDEP -;* V192 tmp191 [V192 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V56.hasValue (fldOffset=0x0)" P-INDEP -;* V193 tmp192 [V193 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V56.value (fldOffset=0x1)" P-INDEP -;* V194 tmp193 [V194 ] ( 0, 0 ) int -> zero-ref single-def "field V57._vToken (fldOffset=0x0)" P-INDEP -;* V195 tmp194 [V195 ] ( 0, 0 ) int -> zero-ref single-def "field V58._vToken (fldOffset=0x0)" P-INDEP -;* V196 tmp195 [V196,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V62.hasValue (fldOffset=0x0)" P-INDEP -;* V197 tmp196 [V197,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V62.value (fldOffset=0x1)" P-INDEP -;* V198 tmp197 [V198 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V63.hasValue (fldOffset=0x0)" P-INDEP -;* V199 tmp198 [V199 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V63.value (fldOffset=0x1)" P-INDEP -;* V200 tmp199 [V200 ] ( 0, 0 ) int -> zero-ref single-def "field V64._vToken (fldOffset=0x0)" P-INDEP -;* V201 tmp200 [V201 ] ( 0, 0 ) int -> zero-ref single-def "field V65._vToken (fldOffset=0x0)" P-INDEP -;* V202 tmp201 [V202,T20] ( 0, 0 ) ubyte -> zero-ref single-def "field V69.hasValue (fldOffset=0x0)" P-INDEP -;* V203 tmp202 [V203,T21] ( 0, 0 ) ubyte -> zero-ref single-def "field V69.value (fldOffset=0x1)" P-INDEP -;* V204 tmp203 [V204 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V70.hasValue (fldOffset=0x0)" P-INDEP -;* V205 tmp204 [V205 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V70.value (fldOffset=0x1)" P-INDEP -;* V206 tmp205 [V206 ] ( 0, 0 ) int -> zero-ref single-def "field V71._vToken (fldOffset=0x0)" P-INDEP -;* V207 tmp206 [V207 ] ( 0, 0 ) int -> zero-ref single-def "field V72._vToken (fldOffset=0x0)" P-INDEP -;* V208 tmp207 [V208,T22] ( 0, 0 ) ubyte -> zero-ref single-def "field V76.hasValue (fldOffset=0x0)" P-INDEP -;* V209 tmp208 [V209,T23] ( 0, 0 ) ubyte -> zero-ref single-def "field V76.value (fldOffset=0x1)" P-INDEP -;* V210 tmp209 [V210 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V77.hasValue (fldOffset=0x0)" P-INDEP -;* V211 tmp210 [V211 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V77.value (fldOffset=0x1)" P-INDEP -;* V212 tmp211 [V212 ] ( 0, 0 ) int -> zero-ref single-def "field V78._vToken (fldOffset=0x0)" P-INDEP -;* V213 tmp212 [V213 ] ( 0, 0 ) int -> zero-ref single-def "field V79._vToken (fldOffset=0x0)" P-INDEP -;* V214 tmp213 [V214,T24] ( 0, 0 ) ubyte -> zero-ref single-def "field V83.hasValue (fldOffset=0x0)" P-INDEP -;* V215 tmp214 [V215,T25] ( 0, 0 ) ubyte -> zero-ref single-def "field V83.value (fldOffset=0x1)" P-INDEP -;* V216 tmp215 [V216 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V84.hasValue (fldOffset=0x0)" P-INDEP -;* V217 tmp216 [V217 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V84.value (fldOffset=0x1)" P-INDEP -;* V218 tmp217 [V218 ] ( 0, 0 ) int -> zero-ref single-def "field V85._vToken (fldOffset=0x0)" P-INDEP -;* V219 tmp218 [V219 ] ( 0, 0 ) int -> zero-ref single-def "field V86._vToken (fldOffset=0x0)" P-INDEP -;* V220 tmp219 [V220,T26] ( 0, 0 ) ubyte -> zero-ref single-def "field V90.hasValue (fldOffset=0x0)" P-INDEP -;* V221 tmp220 [V221,T27] ( 0, 0 ) ubyte -> zero-ref single-def "field V90.value (fldOffset=0x1)" P-INDEP -;* V222 tmp221 [V222 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V91.hasValue (fldOffset=0x0)" P-INDEP -;* V223 tmp222 [V223 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V91.value (fldOffset=0x1)" P-INDEP -;* V224 tmp223 [V224 ] ( 0, 0 ) int -> zero-ref single-def "field V92._vToken (fldOffset=0x0)" P-INDEP -;* V225 tmp224 [V225 ] ( 0, 0 ) int -> zero-ref single-def "field V93._vToken (fldOffset=0x0)" P-INDEP -;* V226 tmp225 [V226,T28] ( 0, 0 ) ubyte -> zero-ref single-def "field V97.hasValue (fldOffset=0x0)" P-INDEP -;* V227 tmp226 [V227,T29] ( 0, 0 ) ubyte -> zero-ref single-def "field V97.value (fldOffset=0x1)" P-INDEP -;* V228 tmp227 [V228 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V98.hasValue (fldOffset=0x0)" P-INDEP -;* V229 tmp228 [V229 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V98.value (fldOffset=0x1)" P-INDEP -;* V230 tmp229 [V230 ] ( 0, 0 ) int -> zero-ref single-def "field V99._vToken (fldOffset=0x0)" P-INDEP -;* V231 tmp230 [V231 ] ( 0, 0 ) int -> zero-ref single-def "field V100._vToken (fldOffset=0x0)" P-INDEP -;* V232 tmp231 [V232,T30] ( 0, 0 ) ubyte -> zero-ref single-def "field V104.hasValue (fldOffset=0x0)" P-INDEP -;* V233 tmp232 [V233,T31] ( 0, 0 ) ubyte -> zero-ref single-def "field V104.value (fldOffset=0x1)" P-INDEP -;* V234 tmp233 [V234 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V105.hasValue (fldOffset=0x0)" P-INDEP -;* V235 tmp234 [V235 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V105.value (fldOffset=0x1)" P-INDEP -;* V236 tmp235 [V236 ] ( 0, 0 ) int -> zero-ref single-def "field V106._vToken (fldOffset=0x0)" P-INDEP -;* V237 tmp236 [V237 ] ( 0, 0 ) int -> zero-ref single-def "field V107._vToken (fldOffset=0x0)" P-INDEP -;* V238 tmp237 [V238,T32] ( 0, 0 ) ubyte -> zero-ref single-def "field V111.hasValue (fldOffset=0x0)" P-INDEP -;* V239 tmp238 [V239,T33] ( 0, 0 ) ubyte -> zero-ref single-def "field V111.value (fldOffset=0x1)" P-INDEP -;* V240 tmp239 [V240 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V112.hasValue (fldOffset=0x0)" P-INDEP -;* V241 tmp240 [V241 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V112.value (fldOffset=0x1)" P-INDEP -;* V242 tmp241 [V242 ] ( 0, 0 ) int -> zero-ref single-def "field V113._vToken (fldOffset=0x0)" P-INDEP -;* V243 tmp242 [V243 ] ( 0, 0 ) int -> zero-ref single-def "field V114._vToken (fldOffset=0x0)" P-INDEP -;* V244 tmp243 [V244,T34] ( 0, 0 ) ubyte -> zero-ref single-def "field V118.hasValue (fldOffset=0x0)" P-INDEP -;* V245 tmp244 [V245,T35] ( 0, 0 ) ubyte -> zero-ref single-def "field V118.value (fldOffset=0x1)" P-INDEP -;* V246 tmp245 [V246 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V119.hasValue (fldOffset=0x0)" P-INDEP -;* V247 tmp246 [V247 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V119.value (fldOffset=0x1)" P-INDEP -;* V248 tmp247 [V248 ] ( 0, 0 ) int -> zero-ref single-def "field V120._vToken (fldOffset=0x0)" P-INDEP -;* V249 tmp248 [V249 ] ( 0, 0 ) int -> zero-ref single-def "field V121._vToken (fldOffset=0x0)" P-INDEP -;* V250 tmp249 [V250,T36] ( 0, 0 ) ubyte -> zero-ref single-def "field V125.hasValue (fldOffset=0x0)" P-INDEP -;* V251 tmp250 [V251,T37] ( 0, 0 ) ubyte -> zero-ref single-def "field V125.value (fldOffset=0x1)" P-INDEP -;* V252 tmp251 [V252 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V126.hasValue (fldOffset=0x0)" P-INDEP -;* V253 tmp252 [V253 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V126.value (fldOffset=0x1)" P-INDEP -;* V254 tmp253 [V254 ] ( 0, 0 ) int -> zero-ref single-def "field V127._vToken (fldOffset=0x0)" P-INDEP -;* V255 tmp254 [V255 ] ( 0, 0 ) int -> zero-ref single-def "field V128._vToken (fldOffset=0x0)" P-INDEP -;* V256 tmp255 [V256,T38] ( 0, 0 ) ubyte -> zero-ref single-def "field V132.hasValue (fldOffset=0x0)" P-INDEP -;* V257 tmp256 [V257,T39] ( 0, 0 ) ubyte -> zero-ref single-def "field V132.value (fldOffset=0x1)" P-INDEP -;* V258 tmp257 [V258 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V133.hasValue (fldOffset=0x0)" P-INDEP -;* V259 tmp258 [V259 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V133.value (fldOffset=0x1)" P-INDEP -;* V260 tmp259 [V260 ] ( 0, 0 ) int -> zero-ref single-def "field V134._vToken (fldOffset=0x0)" P-INDEP -;* V261 tmp260 [V261 ] ( 0, 0 ) int -> zero-ref single-def "field V135._vToken (fldOffset=0x0)" P-INDEP -;* V262 tmp261 [V262,T40] ( 0, 0 ) ubyte -> zero-ref single-def "field V139.hasValue (fldOffset=0x0)" P-INDEP -;* V263 tmp262 [V263,T41] ( 0, 0 ) ubyte -> zero-ref single-def "field V139.value (fldOffset=0x1)" P-INDEP
+;* V140 tmp139 [V140 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> +;* V141 tmp140 [V141 ] ( 0, 0 ) int -> zero-ref single-def "field V01._vToken (fldOffset=0x0)" P-INDEP +;* V142 tmp141 [V142 ] ( 0, 0 ) int -> zero-ref single-def "field V02._vToken (fldOffset=0x0)" P-INDEP +;* V143 tmp142 [V143 ] ( 0, 0 ) int -> zero-ref single-def "field V03._vToken (fldOffset=0x0)" P-INDEP +;* V144 tmp143 [V144 ] ( 0, 0 ) int -> zero-ref single-def "field V04._vToken (fldOffset=0x0)" P-INDEP +;* V145 tmp144 [V145 ] ( 0, 0 ) int -> zero-ref single-def "field V05._vToken (fldOffset=0x0)" P-INDEP +;* V146 tmp145 [V146 ] ( 0, 0 ) int -> zero-ref single-def "field V06._vToken (fldOffset=0x0)" P-INDEP +;* V147 tmp146 [V147 ] ( 0, 0 ) int -> zero-ref single-def "field V07._vToken (fldOffset=0x0)" P-INDEP +;* V148 tmp147 [V148 ] ( 0, 0 ) int -> zero-ref single-def "field V08._vToken (fldOffset=0x0)" P-INDEP +;* V149 tmp148 [V149 ] ( 0, 0 ) int -> zero-ref single-def "field V09._vToken (fldOffset=0x0)" P-INDEP +;* V150 tmp149 [V150 ] ( 0, 0 ) int -> zero-ref single-def "field V10._vToken (fldOffset=0x0)" P-INDEP +;* V151 tmp150 [V151 ] ( 0, 0 ) int -> zero-ref single-def "field V11._vToken (fldOffset=0x0)" P-INDEP +;* V152 tmp151 [V152 ] ( 0, 0 ) int -> zero-ref single-def "field V12._vToken (fldOffset=0x0)" P-INDEP +;* V153 tmp152 [V153 ] ( 0, 0 ) int -> zero-ref single-def "field V13._vToken (fldOffset=0x0)" P-INDEP +;* V154 tmp153 [V154 ] ( 0, 0 ) int -> zero-ref single-def "field V14._vToken (fldOffset=0x0)" P-INDEP +;* V155 tmp154 [V155 ] ( 0, 0 ) int -> zero-ref single-def "field V15._vToken (fldOffset=0x0)" P-INDEP +;* V156 tmp155 [V156 ] ( 0, 0 ) int -> zero-ref single-def "field V16._vToken (fldOffset=0x0)" P-INDEP +;* V157 tmp156 [V157 ] ( 0, 0 ) int -> zero-ref single-def "field V17._vToken (fldOffset=0x0)" P-INDEP +;* V158 tmp157 [V158 ] ( 0, 0 ) int -> zero-ref single-def "field V18._vToken (fldOffset=0x0)" P-INDEP +;* V159 tmp158 [V159 ] ( 0, 0 ) int -> zero-ref single-def "field V19._vToken (fldOffset=0x0)" P-INDEP +;* V160 tmp159 [V160 ] ( 0, 0 ) int -> zero-ref single-def "field V20._vToken (fldOffset=0x0)" P-INDEP +;* V161 tmp160 [V161 ] ( 0, 0 ) int -> zero-ref single-def "field V21._vToken (fldOffset=0x0)" P-INDEP +;* V162 tmp161 [V162 ] ( 0, 0 ) int -> zero-ref single-def "field V22._vToken (fldOffset=0x0)" P-INDEP +;* V163 tmp162 [V163 ] ( 0, 0 ) int -> zero-ref single-def "field V23._vToken (fldOffset=0x0)" P-INDEP +;* V164 tmp163 [V164 ] ( 0, 0 ) int -> zero-ref single-def "field V24._vToken (fldOffset=0x0)" P-INDEP +;* V165 tmp164 [V165 ] ( 0, 0 ) int -> zero-ref single-def "field V25._vToken (fldOffset=0x0)" P-INDEP +;* V166 tmp165 [V166 ] ( 0, 0 ) int -> zero-ref single-def "field V26._vToken (fldOffset=0x0)" P-INDEP +;* V167 tmp166 [V167 ] ( 0, 0 ) int -> zero-ref single-def "field V27._vToken (fldOffset=0x0)" P-INDEP +;* V168 tmp167 [V168 ] ( 0, 0 ) int -> zero-ref single-def "field V28._vToken (fldOffset=0x0)" P-INDEP +;* V169 tmp168 [V169 ] ( 0, 0 ) int -> zero-ref single-def "field V29._vToken (fldOffset=0x0)" P-INDEP +;* V170 tmp169 [V170 ] ( 0, 0 ) int -> zero-ref single-def "field V30._vToken (fldOffset=0x0)" P-INDEP +;* V171 tmp170 [V171 ] ( 0, 0 ) int -> zero-ref single-def "field V31._vToken (fldOffset=0x0)" P-INDEP +;* V172 tmp171 [V172 ] ( 0, 0 ) int -> zero-ref single-def "field V32._vToken (fldOffset=0x0)" P-INDEP +;* V173 tmp172 [V173 ] ( 0, 0 ) int -> zero-ref single-def "field V33._vToken (fldOffset=0x0)" P-INDEP +;* V174 tmp173 [V174 ] ( 0, 0 ) int -> zero-ref single-def "field V34._vToken (fldOffset=0x0)" P-INDEP +;* V175 tmp174 [V175 ] ( 0, 0 ) int -> zero-ref single-def "field V35._vToken (fldOffset=0x0)" P-INDEP +;* V176 tmp175 [V176 ] ( 0, 0 ) int -> zero-ref single-def "field V36._vToken (fldOffset=0x0)" P-INDEP +;* V177 tmp176 [V177 ] ( 0, 0 ) int -> zero-ref single-def "field V37._vToken (fldOffset=0x0)" P-INDEP +;* V178 tmp177 [V178 ] ( 0, 0 ) int -> zero-ref single-def "field V38._vToken (fldOffset=0x0)" P-INDEP +;* V179 tmp178 [V179 ] ( 0, 0 ) int -> zero-ref single-def "field V39._vToken (fldOffset=0x0)" P-INDEP +;* V180 tmp179 [V180 ] ( 0, 0 ) int -> zero-ref single-def "field V40._vToken (fldOffset=0x0)" P-INDEP +;* V181 tmp180 [V181 ] ( 0, 0 ) int -> zero-ref single-def "field V41._vToken (fldOffset=0x0)" P-INDEP +;* V182 tmp181 [V182 ] ( 0, 0 ) int -> zero-ref single-def "field V42._vToken (fldOffset=0x0)" P-INDEP +;* V183 tmp182 [V183 ] ( 0, 0 ) int -> zero-ref single-def "field V43._vToken (fldOffset=0x0)" P-INDEP +;* V184 tmp183 [V184 ] ( 0, 0 ) int -> zero-ref single-def "field V44._vToken (fldOffset=0x0)" P-INDEP +;* V185 tmp184 [V185,T14] ( 0, 0 ) ubyte -> zero-ref single-def "field V48.hasValue (fldOffset=0x0)" P-INDEP +;* V186 tmp185 [V186,T15] ( 0, 0 ) ubyte -> zero-ref single-def "field V48.value (fldOffset=0x1)" P-INDEP +;* V187 tmp186 [V187 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.hasValue (fldOffset=0x0)" P-INDEP +;* V188 tmp187 [V188 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.value (fldOffset=0x1)" P-INDEP +;* V189 tmp188 [V189 ] ( 0, 0 ) int -> zero-ref single-def "field V50._vToken (fldOffset=0x0)" P-INDEP +;* V190 tmp189 [V190 ] ( 0, 0 ) int -> zero-ref single-def "field V51._vToken (fldOffset=0x0)" P-INDEP +;* V191 tmp190 [V191,T16] ( 0, 0 ) ubyte -> zero-ref single-def "field V55.hasValue (fldOffset=0x0)" P-INDEP +;* V192 tmp191 [V192,T17] ( 0, 0 ) ubyte -> zero-ref single-def "field V55.value (fldOffset=0x1)" P-INDEP +;* V193 tmp192 [V193 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V56.hasValue (fldOffset=0x0)" P-INDEP +;* V194 tmp193 [V194 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V56.value (fldOffset=0x1)" P-INDEP +;* V195 tmp194 [V195 ] ( 0, 0 ) int -> zero-ref single-def "field V57._vToken (fldOffset=0x0)" P-INDEP +;* V196 tmp195 [V196 ] ( 0, 0 ) int -> zero-ref single-def "field V58._vToken (fldOffset=0x0)" P-INDEP +;* V197 tmp196 [V197,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V62.hasValue (fldOffset=0x0)" P-INDEP +;* V198 tmp197 [V198,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V62.value (fldOffset=0x1)" P-INDEP +;* V199 tmp198 [V199 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V63.hasValue (fldOffset=0x0)" P-INDEP +;* V200 tmp199 [V200 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V63.value (fldOffset=0x1)" P-INDEP +;* V201 tmp200 [V201 ] ( 0, 0 ) int -> zero-ref single-def "field V64._vToken (fldOffset=0x0)" P-INDEP +;* V202 tmp201 [V202 ] ( 0, 0 ) int -> zero-ref single-def "field V65._vToken (fldOffset=0x0)" P-INDEP +;* V203 tmp202 [V203,T20] ( 0, 0 ) ubyte -> zero-ref single-def "field V69.hasValue (fldOffset=0x0)" P-INDEP +;* V204 tmp203 [V204,T21] ( 0, 0 ) ubyte -> zero-ref single-def "field V69.value (fldOffset=0x1)" P-INDEP +;* V205 tmp204 [V205 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V70.hasValue (fldOffset=0x0)" P-INDEP +;* V206 tmp205 [V206 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V70.value (fldOffset=0x1)" P-INDEP +;* V207 tmp206 [V207 ] ( 0, 0 ) int -> zero-ref single-def "field V71._vToken (fldOffset=0x0)" P-INDEP +;* V208 tmp207 [V208 ] ( 0, 0 ) int -> zero-ref single-def "field V72._vToken (fldOffset=0x0)" P-INDEP +;* V209 tmp208 [V209,T22] ( 0, 0 ) ubyte -> zero-ref single-def "field V76.hasValue (fldOffset=0x0)" P-INDEP +;* V210 tmp209 [V210,T23] ( 0, 0 ) ubyte -> zero-ref single-def "field V76.value (fldOffset=0x1)" P-INDEP +;* V211 tmp210 [V211 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V77.hasValue (fldOffset=0x0)" P-INDEP +;* V212 tmp211 [V212 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V77.value (fldOffset=0x1)" P-INDEP +;* V213 tmp212 [V213 ] ( 0, 0 ) int -> zero-ref single-def "field V78._vToken (fldOffset=0x0)" P-INDEP +;* V214 tmp213 [V214 ] ( 0, 0 ) int -> zero-ref single-def "field V79._vToken (fldOffset=0x0)" P-INDEP +;* V215 tmp214 [V215,T24] ( 0, 0 ) ubyte -> zero-ref single-def "field V83.hasValue (fldOffset=0x0)" P-INDEP +;* V216 tmp215 [V216,T25] ( 0, 0 ) ubyte -> zero-ref single-def "field V83.value (fldOffset=0x1)" P-INDEP +;* V217 tmp216 [V217 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V84.hasValue (fldOffset=0x0)" P-INDEP +;* V218 tmp217 [V218 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V84.value (fldOffset=0x1)" P-INDEP +;* V219 tmp218 [V219 ] ( 0, 0 ) int -> zero-ref single-def "field V85._vToken (fldOffset=0x0)" P-INDEP +;* V220 tmp219 [V220 ] ( 0, 0 ) int -> zero-ref single-def "field V86._vToken (fldOffset=0x0)" P-INDEP +;* V221 tmp220 [V221,T26] ( 0, 0 ) ubyte -> zero-ref single-def "field V90.hasValue (fldOffset=0x0)" P-INDEP +;* V222 tmp221 [V222,T27] ( 0, 0 ) ubyte -> zero-ref single-def "field V90.value (fldOffset=0x1)" P-INDEP +;* V223 tmp222 [V223 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V91.hasValue (fldOffset=0x0)" P-INDEP +;* V224 tmp223 [V224 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V91.value (fldOffset=0x1)" P-INDEP +;* V225 tmp224 [V225 ] ( 0, 0 ) int -> zero-ref single-def "field V92._vToken (fldOffset=0x0)" P-INDEP +;* V226 tmp225 [V226 ] ( 0, 0 ) int -> zero-ref single-def "field V93._vToken (fldOffset=0x0)" P-INDEP +;* V227 tmp226 [V227,T28] ( 0, 0 ) ubyte -> zero-ref single-def "field V97.hasValue (fldOffset=0x0)" P-INDEP +;* V228 tmp227 [V228,T29] ( 0, 0 ) ubyte -> zero-ref single-def "field V97.value (fldOffset=0x1)" P-INDEP +;* V229 tmp228 [V229 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V98.hasValue (fldOffset=0x0)" P-INDEP +;* V230 tmp229 [V230 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V98.value (fldOffset=0x1)" P-INDEP +;* V231 tmp230 [V231 ] ( 0, 0 ) int -> zero-ref single-def "field V99._vToken (fldOffset=0x0)" P-INDEP +;* V232 tmp231 [V232 ] ( 0, 0 ) int -> zero-ref single-def "field V100._vToken (fldOffset=0x0)" P-INDEP +;* V233 tmp232 [V233,T30] ( 0, 0 ) ubyte -> zero-ref single-def "field V104.hasValue (fldOffset=0x0)" P-INDEP +;* V234 tmp233 [V234,T31] ( 0, 0 ) ubyte -> zero-ref single-def "field V104.value (fldOffset=0x1)" P-INDEP +;* V235 tmp234 [V235 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V105.hasValue (fldOffset=0x0)" P-INDEP +;* V236 tmp235 [V236 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V105.value (fldOffset=0x1)" P-INDEP +;* V237 tmp236 [V237 ] ( 0, 0 ) int -> zero-ref single-def "field V106._vToken (fldOffset=0x0)" P-INDEP +;* V238 tmp237 [V238 ] ( 0, 0 ) int -> zero-ref single-def "field V107._vToken (fldOffset=0x0)" P-INDEP +;* V239 tmp238 [V239,T32] ( 0, 0 ) ubyte -> zero-ref single-def "field V111.hasValue (fldOffset=0x0)" P-INDEP +;* V240 tmp239 [V240,T33] ( 0, 0 ) ubyte -> zero-ref single-def "field V111.value (fldOffset=0x1)" P-INDEP +;* V241 tmp240 [V241 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V112.hasValue (fldOffset=0x0)" P-INDEP +;* V242 tmp241 [V242 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V112.value (fldOffset=0x1)" P-INDEP +;* V243 tmp242 [V243 ] ( 0, 0 ) int -> zero-ref single-def "field V113._vToken (fldOffset=0x0)" P-INDEP +;* V244 tmp243 [V244 ] ( 0, 0 ) int -> zero-ref single-def "field V114._vToken (fldOffset=0x0)" P-INDEP +;* V245 tmp244 [V245,T34] ( 0, 0 ) ubyte -> zero-ref single-def "field V118.hasValue (fldOffset=0x0)" P-INDEP +;* V246 tmp245 [V246,T35] ( 0, 0 ) ubyte -> zero-ref single-def "field V118.value (fldOffset=0x1)" P-INDEP +;* V247 tmp246 [V247 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V119.hasValue (fldOffset=0x0)" P-INDEP
...

-28 (-84.85%) : 213775.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareHandles():this (FullOpts)

@@ -2,10 +2,12 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 14 inlinees with PGO data; 96 single block inlinees; 13 inlinees without PGO data
+; 14 inlinees with PGO data; 98 single block inlinees; 14 inlinees without PGO data
; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Reflection.Metadata.Tests.HandleComparerTests> @@ -148,228 +150,231 @@ ;* V137 tmp136 [V137 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V138 tmp137 [V138 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V139 tmp138 [V139 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-;* V140 tmp139 [V140 ] ( 0, 0 ) int -> zero-ref single-def "field V01._value (fldOffset=0x0)" P-INDEP -;* V141 tmp140 [V141 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V01._vType (fldOffset=0x4)" P-INDEP -;* V142 tmp141 [V142 ] ( 0, 0 ) int -> zero-ref single-def "field V02._value (fldOffset=0x0)" P-INDEP -;* V143 tmp142 [V143 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V02._vType (fldOffset=0x4)" P-INDEP -;* V144 tmp143 [V144 ] ( 0, 0 ) int -> zero-ref single-def "field V03._value (fldOffset=0x0)" P-INDEP -;* V145 tmp144 [V145 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._vType (fldOffset=0x4)" P-INDEP -;* V146 tmp145 [V146 ] ( 0, 0 ) int -> zero-ref single-def "field V04._value (fldOffset=0x0)" P-INDEP -;* V147 tmp146 [V147 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V04._vType (fldOffset=0x4)" P-INDEP -;* V148 tmp147 [V148 ] ( 0, 0 ) int -> zero-ref single-def "field V05._value (fldOffset=0x0)" P-INDEP -;* V149 tmp148 [V149 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V05._vType (fldOffset=0x4)" P-INDEP -;* V150 tmp149 [V150 ] ( 0, 0 ) int -> zero-ref single-def "field V06._value (fldOffset=0x0)" P-INDEP -;* V151 tmp150 [V151 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V06._vType (fldOffset=0x4)" P-INDEP -;* V152 tmp151 [V152 ] ( 0, 0 ) int -> zero-ref single-def "field V07._value (fldOffset=0x0)" P-INDEP -;* V153 tmp152 [V153 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V07._vType (fldOffset=0x4)" P-INDEP -;* V154 tmp153 [V154 ] ( 0, 0 ) int -> zero-ref single-def "field V08._value (fldOffset=0x0)" P-INDEP -;* V155 tmp154 [V155 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V08._vType (fldOffset=0x4)" P-INDEP -;* V156 tmp155 [V156 ] ( 0, 0 ) int -> zero-ref single-def "field V09._value (fldOffset=0x0)" P-INDEP -;* V157 tmp156 [V157 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V09._vType (fldOffset=0x4)" P-INDEP -;* V158 tmp157 [V158 ] ( 0, 0 ) int -> zero-ref single-def "field V10._value (fldOffset=0x0)" P-INDEP -;* V159 tmp158 [V159 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V10._vType (fldOffset=0x4)" P-INDEP -;* V160 tmp159 [V160 ] ( 0, 0 ) int -> zero-ref single-def "field V11._value (fldOffset=0x0)" P-INDEP -;* V161 tmp160 [V161 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V11._vType (fldOffset=0x4)" P-INDEP -;* V162 tmp161 [V162 ] ( 0, 0 ) int -> zero-ref single-def "field V12._value (fldOffset=0x0)" P-INDEP -;* V163 tmp162 [V163 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V12._vType (fldOffset=0x4)" P-INDEP -;* V164 tmp163 [V164 ] ( 0, 0 ) int -> zero-ref single-def "field V13._value (fldOffset=0x0)" P-INDEP -;* V165 tmp164 [V165 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V13._vType (fldOffset=0x4)" P-INDEP -;* V166 tmp165 [V166 ] ( 0, 0 ) int -> zero-ref single-def "field V14._value (fldOffset=0x0)" P-INDEP -;* V167 tmp166 [V167 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V14._vType (fldOffset=0x4)" P-INDEP -;* V168 tmp167 [V168 ] ( 0, 0 ) int -> zero-ref single-def "field V15._value (fldOffset=0x0)" P-INDEP -;* V169 tmp168 [V169 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V15._vType (fldOffset=0x4)" P-INDEP -;* V170 tmp169 [V170 ] ( 0, 0 ) int -> zero-ref single-def "field V16._value (fldOffset=0x0)" P-INDEP -;* V171 tmp170 [V171 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V16._vType (fldOffset=0x4)" P-INDEP -;* V172 tmp171 [V172 ] ( 0, 0 ) int -> zero-ref single-def "field V17._value (fldOffset=0x0)" P-INDEP -;* V173 tmp172 [V173 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V17._vType (fldOffset=0x4)" P-INDEP -;* V174 tmp173 [V174 ] ( 0, 0 ) int -> zero-ref single-def "field V18._value (fldOffset=0x0)" P-INDEP -;* V175 tmp174 [V175 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V18._vType (fldOffset=0x4)" P-INDEP -;* V176 tmp175 [V176 ] ( 0, 0 ) int -> zero-ref single-def "field V19._value (fldOffset=0x0)" P-INDEP -;* V177 tmp176 [V177 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V19._vType (fldOffset=0x4)" P-INDEP -;* V178 tmp177 [V178 ] ( 0, 0 ) int -> zero-ref single-def "field V20._value (fldOffset=0x0)" P-INDEP -;* V179 tmp178 [V179 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V20._vType (fldOffset=0x4)" P-INDEP -;* V180 tmp179 [V180 ] ( 0, 0 ) int -> zero-ref single-def "field V21._value (fldOffset=0x0)" P-INDEP -;* V181 tmp180 [V181 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V21._vType (fldOffset=0x4)" P-INDEP -;* V182 tmp181 [V182 ] ( 0, 0 ) int -> zero-ref single-def "field V22._value (fldOffset=0x0)" P-INDEP -;* V183 tmp182 [V183 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V22._vType (fldOffset=0x4)" P-INDEP -;* V184 tmp183 [V184 ] ( 0, 0 ) int -> zero-ref single-def "field V23._value (fldOffset=0x0)" P-INDEP -;* V185 tmp184 [V185 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V23._vType (fldOffset=0x4)" P-INDEP -;* V186 tmp185 [V186 ] ( 0, 0 ) int -> zero-ref single-def "field V24._value (fldOffset=0x0)" P-INDEP -;* V187 tmp186 [V187 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V24._vType (fldOffset=0x4)" P-INDEP -;* V188 tmp187 [V188 ] ( 0, 0 ) int -> zero-ref single-def "field V25._value (fldOffset=0x0)" P-INDEP -;* V189 tmp188 [V189 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V25._vType (fldOffset=0x4)" P-INDEP -;* V190 tmp189 [V190 ] ( 0, 0 ) int -> zero-ref single-def "field V26._value (fldOffset=0x0)" P-INDEP -;* V191 tmp190 [V191 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V26._vType (fldOffset=0x4)" P-INDEP -;* V192 tmp191 [V192 ] ( 0, 0 ) int -> zero-ref single-def "field V27._value (fldOffset=0x0)" P-INDEP -;* V193 tmp192 [V193 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V27._vType (fldOffset=0x4)" P-INDEP -;* V194 tmp193 [V194 ] ( 0, 0 ) int -> zero-ref single-def "field V28._value (fldOffset=0x0)" P-INDEP -;* V195 tmp194 [V195 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V28._vType (fldOffset=0x4)" P-INDEP -;* V196 tmp195 [V196 ] ( 0, 0 ) int -> zero-ref single-def "field V29._value (fldOffset=0x0)" P-INDEP -;* V197 tmp196 [V197 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V29._vType (fldOffset=0x4)" P-INDEP -;* V198 tmp197 [V198 ] ( 0, 0 ) int -> zero-ref single-def "field V30._value (fldOffset=0x0)" P-INDEP -;* V199 tmp198 [V199 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V30._vType (fldOffset=0x4)" P-INDEP -;* V200 tmp199 [V200 ] ( 0, 0 ) int -> zero-ref single-def "field V31._value (fldOffset=0x0)" P-INDEP -;* V201 tmp200 [V201 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V31._vType (fldOffset=0x4)" P-INDEP -;* V202 tmp201 [V202 ] ( 0, 0 ) int -> zero-ref single-def "field V32._value (fldOffset=0x0)" P-INDEP -;* V203 tmp202 [V203 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V32._vType (fldOffset=0x4)" P-INDEP -;* V204 tmp203 [V204 ] ( 0, 0 ) int -> zero-ref single-def "field V33._value (fldOffset=0x0)" P-INDEP -;* V205 tmp204 [V205 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V33._vType (fldOffset=0x4)" P-INDEP -;* V206 tmp205 [V206 ] ( 0, 0 ) int -> zero-ref single-def "field V34._value (fldOffset=0x0)" P-INDEP -;* V207 tmp206 [V207 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V34._vType (fldOffset=0x4)" P-INDEP -;* V208 tmp207 [V208 ] ( 0, 0 ) int -> zero-ref single-def "field V35._value (fldOffset=0x0)" P-INDEP -;* V209 tmp208 [V209 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V35._vType (fldOffset=0x4)" P-INDEP -;* V210 tmp209 [V210 ] ( 0, 0 ) int -> zero-ref single-def "field V36._value (fldOffset=0x0)" P-INDEP -;* V211 tmp210 [V211 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V36._vType (fldOffset=0x4)" P-INDEP -;* V212 tmp211 [V212 ] ( 0, 0 ) int -> zero-ref single-def "field V37._value (fldOffset=0x0)" P-INDEP -;* V213 tmp212 [V213 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V37._vType (fldOffset=0x4)" P-INDEP -;* V214 tmp213 [V214 ] ( 0, 0 ) int -> zero-ref single-def "field V38._value (fldOffset=0x0)" P-INDEP -;* V215 tmp214 [V215 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V38._vType (fldOffset=0x4)" P-INDEP -;* V216 tmp215 [V216 ] ( 0, 0 ) int -> zero-ref single-def "field V39._value (fldOffset=0x0)" P-INDEP -;* V217 tmp216 [V217 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V39._vType (fldOffset=0x4)" P-INDEP -;* V218 tmp217 [V218 ] ( 0, 0 ) int -> zero-ref single-def "field V40._value (fldOffset=0x0)" P-INDEP -;* V219 tmp218 [V219 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V40._vType (fldOffset=0x4)" P-INDEP -;* V220 tmp219 [V220 ] ( 0, 0 ) int -> zero-ref single-def "field V41._value (fldOffset=0x0)" P-INDEP -;* V221 tmp220 [V221 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V41._vType (fldOffset=0x4)" P-INDEP -;* V222 tmp221 [V222 ] ( 0, 0 ) int -> zero-ref single-def "field V42._value (fldOffset=0x0)" P-INDEP -;* V223 tmp222 [V223 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V42._vType (fldOffset=0x4)" P-INDEP -;* V224 tmp223 [V224 ] ( 0, 0 ) int -> zero-ref single-def "field V44._value (fldOffset=0x0)" P-INDEP -;* V225 tmp224 [V225 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V44._vType (fldOffset=0x4)" P-INDEP -;* V226 tmp225 [V226,T14] ( 0, 0 ) ubyte -> zero-ref single-def "field V48.hasValue (fldOffset=0x0)" P-INDEP -;* V227 tmp226 [V227,T15] ( 0, 0 ) ubyte -> zero-ref single-def "field V48.value (fldOffset=0x1)" P-INDEP -;* V228 tmp227 [V228 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.hasValue (fldOffset=0x0)" P-INDEP -;* V229 tmp228 [V229 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.value (fldOffset=0x1)" P-INDEP -;* V230 tmp229 [V230 ] ( 0, 0 ) int -> zero-ref single-def "field V51._value (fldOffset=0x0)" P-INDEP -;* V231 tmp230 [V231 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V51._vType (fldOffset=0x4)" P-INDEP -;* V232 tmp231 [V232,T16] ( 0, 0 ) ubyte -> zero-ref single-def "field V55.hasValue (fldOffset=0x0)" P-INDEP -;* V233 tmp232 [V233,T17] ( 0, 0 ) ubyte -> zero-ref single-def "field V55.value (fldOffset=0x1)" P-INDEP -;* V234 tmp233 [V234 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V56.hasValue (fldOffset=0x0)" P-INDEP -;* V235 tmp234 [V235 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V56.value (fldOffset=0x1)" P-INDEP -;* V236 tmp235 [V236 ] ( 0, 0 ) int -> zero-ref single-def "field V58._value (fldOffset=0x0)" P-INDEP -;* V237 tmp236 [V237 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V58._vType (fldOffset=0x4)" P-INDEP -;* V238 tmp237 [V238,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V62.hasValue (fldOffset=0x0)" P-INDEP -;* V239 tmp238 [V239,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V62.value (fldOffset=0x1)" P-INDEP -;* V240 tmp239 [V240 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V63.hasValue (fldOffset=0x0)" P-INDEP -;* V241 tmp240 [V241 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V63.value (fldOffset=0x1)" P-INDEP -;* V242 tmp241 [V242 ] ( 0, 0 ) int -> zero-ref single-def "field V65._value (fldOffset=0x0)" P-INDEP -;* V243 tmp242 [V243 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V65._vType (fldOffset=0x4)" P-INDEP -;* V244 tmp243 [V244,T20] ( 0, 0 ) ubyte -> zero-ref single-def "field V69.hasValue (fldOffset=0x0)" P-INDEP -;* V245 tmp244 [V245,T21] ( 0, 0 ) ubyte -> zero-ref single-def "field V69.value (fldOffset=0x1)" P-INDEP -;* V246 tmp245 [V246 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V70.hasValue (fldOffset=0x0)" P-INDEP -;* V247 tmp246 [V247 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V70.value (fldOffset=0x1)" P-INDEP -;* V248 tmp247 [V248 ] ( 0, 0 ) int -> zero-ref single-def "field V72._value (fldOffset=0x0)" P-INDEP -;* V249 tmp248 [V249 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V72._vType (fldOffset=0x4)" P-INDEP -;* V250 tmp249 [V250,T22] ( 0, 0 ) ubyte -> zero-ref single-def "field V76.hasValue (fldOffset=0x0)" P-INDEP -;* V251 tmp250 [V251,T23] ( 0, 0 ) ubyte -> zero-ref single-def "field V76.value (fldOffset=0x1)" P-INDEP -;* V252 tmp251 [V252 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V77.hasValue (fldOffset=0x0)" P-INDEP -;* V253 tmp252 [V253 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V77.value (fldOffset=0x1)" P-INDEP -;* V254 tmp253 [V254 ] ( 0, 0 ) int -> zero-ref single-def "field V79._value (fldOffset=0x0)" P-INDEP -;* V255 tmp254 [V255 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V79._vType (fldOffset=0x4)" P-INDEP -;* V256 tmp255 [V256,T24] ( 0, 0 ) ubyte -> zero-ref single-def "field V83.hasValue (fldOffset=0x0)" P-INDEP -;* V257 tmp256 [V257,T25] ( 0, 0 ) ubyte -> zero-ref single-def "field V83.value (fldOffset=0x1)" P-INDEP -;* V258 tmp257 [V258 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V84.hasValue (fldOffset=0x0)" P-INDEP -;* V259 tmp258 [V259 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V84.value (fldOffset=0x1)" P-INDEP -;* V260 tmp259 [V260 ] ( 0, 0 ) int -> zero-ref single-def "field V86._value (fldOffset=0x0)" P-INDEP -;* V261 tmp260 [V261 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V86._vType (fldOffset=0x4)" P-INDEP -;* V262 tmp261 [V262,T26] ( 0, 0 ) ubyte -> zero-ref single-def "field V90.hasValue (fldOffset=0x0)" P-INDEP -;* V263 tmp262 [V263,T27] ( 0, 0 ) ubyte -> zero-ref single-def "field V90.value (fldOffset=0x1)" P-INDEP -;* V264 tmp263 [V264 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V91.hasValue (fldOffset=0x0)" P-INDEP -;* V265 tmp264 [V265 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V91.value (fldOffset=0x1)" P-INDEP -;* V266 tmp265 [V266 ] ( 0, 0 ) int -> zero-ref single-def "field V93._value (fldOffset=0x0)" P-INDEP -;* V267 tmp266 [V267 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V93._vType (fldOffset=0x4)" P-INDEP -;* V268 tmp267 [V268,T28] ( 0, 0 ) ubyte -> zero-ref single-def "field V97.hasValue (fldOffset=0x0)" P-INDEP -;* V269 tmp268 [V269,T29] ( 0, 0 ) ubyte -> zero-ref single-def "field V97.value (fldOffset=0x1)" P-INDEP -;* V270 tmp269 [V270 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V98.hasValue (fldOffset=0x0)" P-INDEP -;* V271 tmp270 [V271 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V98.value (fldOffset=0x1)" P-INDEP -;* V272 tmp271 [V272 ] ( 0, 0 ) int -> zero-ref single-def "field V100._value (fldOffset=0x0)" P-INDEP -;* V273 tmp272 [V273 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V100._vType (fldOffset=0x4)" P-INDEP -;* V274 tmp273 [V274,T30] ( 0, 0 ) ubyte -> zero-ref single-def "field V104.hasValue (fldOffset=0x0)" P-INDEP -;* V275 tmp274 [V275,T31] ( 0, 0 ) ubyte -> zero-ref single-def "field V104.value (fldOffset=0x1)" P-INDEP -;* V276 tmp275 [V276 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V105.hasValue (fldOffset=0x0)" P-INDEP -;* V277 tmp276 [V277 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V105.value (fldOffset=0x1)" P-INDEP -;* V278 tmp277 [V278 ] ( 0, 0 ) int -> zero-ref single-def "field V107._value (fldOffset=0x0)" P-INDEP -;* V279 tmp278 [V279 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V107._vType (fldOffset=0x4)" P-INDEP -;* V280 tmp279 [V280,T32] ( 0, 0 ) ubyte -> zero-ref single-def "field V111.hasValue (fldOffset=0x0)" P-INDEP -;* V281 tmp280 [V281,T33] ( 0, 0 ) ubyte -> zero-ref single-def "field V111.value (fldOffset=0x1)" P-INDEP -;* V282 tmp281 [V282 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V112.hasValue (fldOffset=0x0)" P-INDEP -;* V283 tmp282 [V283 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V112.value (fldOffset=0x1)" P-INDEP -;* V284 tmp283 [V284 ] ( 0, 0 ) int -> zero-ref single-def "field V114._value (fldOffset=0x0)" P-INDEP -;* V285 tmp284 [V285 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V114._vType (fldOffset=0x4)" P-INDEP -;* V286 tmp285 [V286,T34] ( 0, 0 ) ubyte -> zero-ref single-def "field V118.hasValue (fldOffset=0x0)" P-INDEP -;* V287 tmp286 [V287,T35] ( 0, 0 ) ubyte -> zero-ref single-def "field V118.value (fldOffset=0x1)" P-INDEP -;* V288 tmp287 [V288 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V119.hasValue (fldOffset=0x0)" P-INDEP -;* V289 tmp288 [V289 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V119.value (fldOffset=0x1)" P-INDEP -;* V290 tmp289 [V290 ] ( 0, 0 ) int -> zero-ref single-def "field V121._value (fldOffset=0x0)" P-INDEP -;* V291 tmp290 [V291 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V121._vType (fldOffset=0x4)" P-INDEP -;* V292 tmp291 [V292,T36] ( 0, 0 ) ubyte -> zero-ref single-def "field V125.hasValue (fldOffset=0x0)" P-INDEP -;* V293 tmp292 [V293,T37] ( 0, 0 ) ubyte -> zero-ref single-def "field V125.value (fldOffset=0x1)" P-INDEP -;* V294 tmp293 [V294 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V126.hasValue (fldOffset=0x0)" P-INDEP -;* V295 tmp294 [V295 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V126.value (fldOffset=0x1)" P-INDEP -;* V296 tmp295 [V296 ] ( 0, 0 ) int -> zero-ref single-def "field V128._value (fldOffset=0x0)" P-INDEP -;* V297 tmp296 [V297 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V128._vType (fldOffset=0x4)" P-INDEP -;* V298 tmp297 [V298,T38] ( 0, 0 ) ubyte -> zero-ref single-def "field V132.hasValue (fldOffset=0x0)" P-INDEP -;* V299 tmp298 [V299,T39] ( 0, 0 ) ubyte -> zero-ref single-def "field V132.value (fldOffset=0x1)" P-INDEP -;* V300 tmp299 [V300 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V133.hasValue (fldOffset=0x0)" P-INDEP -;* V301 tmp300 [V301 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V133.value (fldOffset=0x1)" P-INDEP -;* V302 tmp301 [V302 ] ( 0, 0 ) int -> zero-ref single-def "field V135._value (fldOffset=0x0)" P-INDEP -;* V303 tmp302 [V303 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V135._vType (fldOffset=0x4)" P-INDEP -;* V304 tmp303 [V304,T40] ( 0, 0 ) ubyte -> zero-ref single-def "field V139.hasValue (fldOffset=0x0)" P-INDEP -;* V305 tmp304 [V305,T41] ( 0, 0 ) ubyte -> zero-ref single-def "field V139.value (fldOffset=0x1)" P-INDEP -;* V306 rat0 [V306 ] ( 0, 0 ) int -> zero-ref "field V43.lo (fldOffset=0x0)" P-INDEP -;* V307 rat1 [V307 ] ( 0, 0 ) int -> zero-ref "field V43.hi (fldOffset=0x4)" P-INDEP -;* V308 rat2 [V308 ] ( 0, 0 ) int -> zero-ref "field V46.lo (fldOffset=0x0)" P-INDEP -;* V309 rat3 [V309 ] ( 0, 0 ) int -> zero-ref "field V46.hi (fldOffset=0x4)" P-INDEP -;* V310 rat4 [V310 ] ( 0, 0 ) int -> zero-ref "field V50.lo (fldOffset=0x0)" P-INDEP -;* V311 rat5 [V311 ] ( 0, 0 ) int -> zero-ref "field V50.hi (fldOffset=0x4)" P-INDEP -;* V312 rat6 [V312 ] ( 0, 0 ) int -> zero-ref "field V53.lo (fldOffset=0x0)" P-INDEP -;* V313 rat7 [V313 ] ( 0, 0 ) int -> zero-ref "field V53.hi (fldOffset=0x4)" P-INDEP -;* V314 rat8 [V314 ] ( 0, 0 ) int -> zero-ref "field V57.lo (fldOffset=0x0)" P-INDEP -;* V315 rat9 [V315 ] ( 0, 0 ) int -> zero-ref "field V57.hi (fldOffset=0x4)" P-INDEP -;* V316 rat10 [V316 ] ( 0, 0 ) int -> zero-ref "field V60.lo (fldOffset=0x0)" P-INDEP -;* V317 rat11 [V317 ] ( 0, 0 ) int -> zero-ref "field V60.hi (fldOffset=0x4)" P-INDEP -;* V318 rat12 [V318 ] ( 0, 0 ) int -> zero-ref "field V64.lo (fldOffset=0x0)" P-INDEP -;* V319 rat13 [V319 ] ( 0, 0 ) int -> zero-ref "field V64.hi (fldOffset=0x4)" P-INDEP -;* V320 rat14 [V320 ] ( 0, 0 ) int -> zero-ref "field V67.lo (fldOffset=0x0)" P-INDEP -;* V321 rat15 [V321 ] ( 0, 0 ) int -> zero-ref "field V67.hi (fldOffset=0x4)" P-INDEP -;* V322 rat16 [V322 ] ( 0, 0 ) int -> zero-ref "field V71.lo (fldOffset=0x0)" P-INDEP -;* V323 rat17 [V323 ] ( 0, 0 ) int -> zero-ref "field V71.hi (fldOffset=0x4)" P-INDEP -;* V324 rat18 [V324 ] ( 0, 0 ) int -> zero-ref "field V74.lo (fldOffset=0x0)" P-INDEP -;* V325 rat19 [V325 ] ( 0, 0 ) int -> zero-ref "field V74.hi (fldOffset=0x4)" P-INDEP -;* V326 rat20 [V326 ] ( 0, 0 ) int -> zero-ref "field V78.lo (fldOffset=0x0)" P-INDEP -;* V327 rat21 [V327 ] ( 0, 0 ) int -> zero-ref "field V78.hi (fldOffset=0x4)" P-INDEP -;* V328 rat22 [V328 ] ( 0, 0 ) int -> zero-ref "field V81.lo (fldOffset=0x0)" P-INDEP -;* V329 rat23 [V329 ] ( 0, 0 ) int -> zero-ref "field V81.hi (fldOffset=0x4)" P-INDEP -;* V330 rat24 [V330 ] ( 0, 0 ) int -> zero-ref "field V85.lo (fldOffset=0x0)" P-INDEP -;* V331 rat25 [V331 ] ( 0, 0 ) int -> zero-ref "field V85.hi (fldOffset=0x4)" P-INDEP -;* V332 rat26 [V332 ] ( 0, 0 ) int -> zero-ref "field V88.lo (fldOffset=0x0)" P-INDEP -;* V333 rat27 [V333 ] ( 0, 0 ) int -> zero-ref "field V88.hi (fldOffset=0x4)" P-INDEP -;* V334 rat28 [V334 ] ( 0, 0 ) int -> zero-ref "field V92.lo (fldOffset=0x0)" P-INDEP -;* V335 rat29 [V335 ] ( 0, 0 ) int -> zero-ref "field V92.hi (fldOffset=0x4)" P-INDEP -;* V336 rat30 [V336 ] ( 0, 0 ) int -> zero-ref "field V95.lo (fldOffset=0x0)" P-INDEP -;* V337 rat31 [V337 ] ( 0, 0 ) int -> zero-ref "field V95.hi (fldOffset=0x4)" P-INDEP -;* V338 rat32 [V338 ] ( 0, 0 ) int -> zero-ref "field V99.lo (fldOffset=0x0)" P-INDEP -;* V339 rat33 [V339 ] ( 0, 0 ) int -> zero-ref "field V99.hi (fldOffset=0x4)" P-INDEP -;* V340 rat34 [V340 ] ( 0, 0 ) int -> zero-ref "field V102.lo (fldOffset=0x0)" P-INDEP -;* V341 rat35 [V341 ] ( 0, 0 ) int -> zero-ref "field V102.hi (fldOffset=0x4)" P-INDEP -;* V342 rat36 [V342 ] ( 0, 0 ) int -> zero-ref "field V106.lo (fldOffset=0x0)" P-INDEP -;* V343 rat37 [V343 ] ( 0, 0 ) int -> zero-ref "field V106.hi (fldOffset=0x4)" P-INDEP -;* V344 rat38 [V344 ] ( 0, 0 ) int -> zero-ref "field V109.lo (fldOffset=0x0)" P-INDEP -;* V345 rat39 [V345 ] ( 0, 0 ) int -> zero-ref "field V109.hi (fldOffset=0x4)" P-INDEP -;* V346 rat40 [V346 ] ( 0, 0 ) int -> zero-ref "field V113.lo (fldOffset=0x0)" P-INDEP -;* V347 rat41 [V347 ] ( 0, 0 ) int -> zero-ref "field V113.hi (fldOffset=0x4)" P-INDEP -;* V348 rat42 [V348 ] ( 0, 0 ) int -> zero-ref "field V116.lo (fldOffset=0x0)" P-INDEP -;* V349 rat43 [V349 ] ( 0, 0 ) int -> zero-ref "field V116.hi (fldOffset=0x4)" P-INDEP -;* V350 rat44 [V350 ] ( 0, 0 ) int -> zero-ref "field V120.lo (fldOffset=0x0)" P-INDEP -;* V351 rat45 [V351 ] ( 0, 0 ) int -> zero-ref "field V120.hi (fldOffset=0x4)" P-INDEP -;* V352 rat46 [V352 ] ( 0, 0 ) int -> zero-ref "field V123.lo (fldOffset=0x0)" P-INDEP -;* V353 rat47 [V353 ] ( 0, 0 ) int -> zero-ref "field V123.hi (fldOffset=0x4)" P-INDEP -;* V354 rat48 [V354 ] ( 0, 0 ) int -> zero-ref "field V127.lo (fldOffset=0x0)" P-INDEP -;* V355 rat49 [V355 ] ( 0, 0 ) int -> zero-ref "field V127.hi (fldOffset=0x4)" P-INDEP -;* V356 rat50 [V356 ] ( 0, 0 ) int -> zero-ref "field V130.lo (fldOffset=0x0)" P-INDEP -;* V357 rat51 [V357 ] ( 0, 0 ) int -> zero-ref "field V130.hi (fldOffset=0x4)" P-INDEP -;* V358 rat52 [V358 ] ( 0, 0 ) int -> zero-ref "field V134.lo (fldOffset=0x0)" P-INDEP -;* V359 rat53 [V359 ] ( 0, 0 ) int -> zero-ref "field V134.hi (fldOffset=0x4)" P-INDEP -;* V360 rat54 [V360 ] ( 0, 0 ) int -> zero-ref "field V137.lo (fldOffset=0x0)" P-INDEP -;* V361 rat55 [V361 ] ( 0, 0 ) int -> zero-ref "field V137.hi (fldOffset=0x4)" P-INDEP
+;* V140 tmp139 [V140 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> +;* V141 tmp140 [V141 ] ( 0, 0 ) int -> zero-ref single-def "field V01._value (fldOffset=0x0)" P-INDEP +;* V142 tmp141 [V142 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V01._vType (fldOffset=0x4)" P-INDEP +;* V143 tmp142 [V143 ] ( 0, 0 ) int -> zero-ref single-def "field V02._value (fldOffset=0x0)" P-INDEP +;* V144 tmp143 [V144 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V02._vType (fldOffset=0x4)" P-INDEP +;* V145 tmp144 [V145 ] ( 0, 0 ) int -> zero-ref single-def "field V03._value (fldOffset=0x0)" P-INDEP +;* V146 tmp145 [V146 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._vType (fldOffset=0x4)" P-INDEP +;* V147 tmp146 [V147 ] ( 0, 0 ) int -> zero-ref single-def "field V04._value (fldOffset=0x0)" P-INDEP +;* V148 tmp147 [V148 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V04._vType (fldOffset=0x4)" P-INDEP +;* V149 tmp148 [V149 ] ( 0, 0 ) int -> zero-ref single-def "field V05._value (fldOffset=0x0)" P-INDEP
...

+19 (+57.58%) : 113402.dasm - System.Data.ExpressionNode:IsSigned(int):ubyte (FullOpts)

@@ -2,12 +2,16 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4.50) int -> ecx single-def
+; V00 arg0 [V00,T00] ( 7, 6.22) int -> ecx single-def +; V01 tmp0 [V01,T01] ( 3, 1.27) ubyte -> eax "Inline return value spill temp"
; ; Lcl frame size = 0 @@ -20,23 +24,37 @@ G_M19192_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ja SHORT G_M19192_IG03 mov eax, 0x55F bt eax, ecx
- jae SHORT G_M19192_IG05
+ jae SHORT G_M19192_IG08
;; size=15 bbWeight=1 PerfScore 3.00
-G_M19192_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - call [System.Data.ExpressionNode:IsFloat(int):ubyte] - ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M19192_IG04: ; bbWeight=0.50, epilog, nogc, extend - pop ebp - ret - ;; size=2 bbWeight=0.50 PerfScore 0.75 -G_M19192_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M19192_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + cmp ecx, 13 + je SHORT G_M19192_IG06 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M19192_IG04: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + cmp ecx, 14 + je SHORT G_M19192_IG06 + ;; size=5 bbWeight=0.80 PerfScore 1.00 +G_M19192_IG05: ; bbWeight=0.42, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + xor eax, eax + cmp ecx, 15 + sete al + jmp SHORT G_M19192_IG07 + ;; size=10 bbWeight=0.42 PerfScore 1.46 +G_M19192_IG06: ; bbWeight=0.58, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M19192_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=5 bbWeight=0.58 PerfScore 0.15 +G_M19192_IG07: ; bbWeight=0.27, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
pop ebp ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=2 bbWeight=0.27 PerfScore 0.40 +G_M19192_IG08: ; bbWeight=0.73, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + mov eax, 1 + ;; size=5 bbWeight=0.73 PerfScore 0.18 +G_M19192_IG09: ; bbWeight=0.73, epilog, nogc, extend + pop ebp + ret + ;; size=2 bbWeight=0.73 PerfScore 1.10
-; Total bytes of code 33, prolog size 3, PerfScore 7.38, instruction count 13, allocated bytes for code 33 (MethodHash=62adb507) for method System.Data.ExpressionNode:IsSigned(int):ubyte (FullOpts)
+; Total bytes of code 52, prolog size 3, PerfScore 9.79, instruction count 21, allocated bytes for code 52 (MethodHash=62adb507) for method System.Data.ExpressionNode:IsSigned(int):ubyte (FullOpts)
; ============================================================

+31 (+58.49%) : 198809.dasm - MS.Internal.Xml.Cache.XPathDocumentNavigator:IsKindMatch(int):ubyte:this (FullOpts)

@@ -2,24 +2,29 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; esp based frame
+; optimized using Synthesized PGO +; ebp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> ecx this class-hnd single-def <MS.Internal.Xml.Cache.XPathDocumentNavigator> -; V01 arg1 [V01,T03] ( 3, 3 ) int -> edx single-def -;* V02 tmp0 [V02 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+; V00 this [V00,T01] ( 4, 4 ) ref -> ecx this class-hnd single-def <MS.Internal.Xml.Cache.XPathDocumentNavigator> +; V01 arg1 [V01,T00] ( 5, 4.18) int -> edx single-def +; V02 tmp0 [V02,T04] ( 2, 4 ) int -> eax "impAppendStmt"
;* V03 tmp1 [V03 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V04 tmp2 [V04,T01] ( 3, 6 ) ref -> eax single-def "arr expr" -; V05 tmp3 [V05,T02] ( 3, 6 ) int -> ecx "index expr"
+; V04 tmp2 [V04,T05] ( 4, 2 ) int -> ecx "Inline return value spill temp" +; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> eax single-def "arr expr" +; V06 tmp4 [V06,T03] ( 3, 6 ) int -> ecx "index expr"
; ; Lcl frame size = 0 G_M6883_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+ push ebp + mov ebp, esp
push esi
- ;; size=1 bbWeight=1 PerfScore 1.00
+ ;; size=4 bbWeight=1 PerfScore 2.25
G_M6883_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx] mov eax, gword ptr [ecx+0x04] @@ -27,28 +32,49 @@ G_M6883_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 mov ecx, dword ptr [ecx+0x10] ; gcrRegs -[ecx] cmp ecx, dword ptr [eax+0x04]
- jae SHORT G_M6883_IG04
+ jae SHORT G_M6883_IG09
lea ecx, [ecx+4*ecx] mov ecx, dword ptr [eax+4*ecx+0x10] and ecx, 15
- mov esi, 1 - shl esi, cl - mov ecx, edx - call [System.Xml.XPath.XPathNavigator:GetKindMask(int):int]
+ mov eax, 1
; gcrRegs -[eax]
- test esi, eax
+ shl eax, cl + cmp edx, 9 + je SHORT G_M6883_IG08 + ;; size=33 bbWeight=1 PerfScore 14.25 +G_M6883_IG03: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + cmp edx, 4 + jne SHORT G_M6883_IG07 + ;; size=5 bbWeight=0.80 PerfScore 1.00 +G_M6883_IG04: ; bbWeight=0.42, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov ecx, 112 + ;; size=5 bbWeight=0.42 PerfScore 0.10 +G_M6883_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + test eax, ecx
setne al movzx eax, al
- ;; size=44 bbWeight=1 PerfScore 17.75 -G_M6883_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M6883_IG06: ; bbWeight=1, epilog, nogc, extend
pop esi
+ pop ebp
ret
- ;; size=2 bbWeight=1 PerfScore 1.50 -G_M6883_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=3 bbWeight=1 PerfScore 2.00 +G_M6883_IG07: ; bbWeight=0.38, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + mov esi, 1 + mov ecx, edx + shl esi, cl + mov ecx, esi + jmp SHORT G_M6883_IG05 + ;; size=13 bbWeight=0.38 PerfScore 1.82 +G_M6883_IG08: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + mov ecx, 0xD1FFAB1E + jmp SHORT G_M6883_IG05 + ;; size=7 bbWeight=0.20 PerfScore 0.45 +G_M6883_IG09: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 53, prolog size 1, PerfScore 20.25, instruction count 19, allocated bytes for code 53 (MethodHash=2424e51c) for method MS.Internal.Xml.Cache.XPathDocumentNavigator:IsKindMatch(int):ubyte:this (FullOpts)
+; Total bytes of code 84, prolog size 4, PerfScore 23.38, instruction count 32, allocated bytes for code 84 (MethodHash=2424e51c) for method MS.Internal.Xml.Cache.XPathDocumentNavigator:IsKindMatch(int):ubyte:this (FullOpts)
; ============================================================

+31 (+59.62%) : 172735.dasm - System.MemoryExtensions:ClampStartint:int (FullOpts)

@@ -2,18 +2,20 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 2, 5 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[int]> -; V01 arg1 [V01,T03] ( 2, 8 ) struct ( 8) [ebp+0x08] do-not-enreg[S] single-def <System.ReadOnlySpan`1[int]> -; V02 loc0 [V02,T00] ( 6, 18 ) int -> edi
+; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[int]> +; V01 arg1 [V01,T07] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[S] single-def <System.ReadOnlySpan`1[int]> +; V02 loc0 [V02,T00] ( 6,166.21) int -> [ebp-0x10]
;* V03 tmp0 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[int]>
-; V05 tmp2 [V05,T01] ( 2, 16 ) int -> edx ld-addr-op "Inlining Arg"
+; V05 tmp2 [V05,T01] ( 2,151.58) int -> [ebp-0x14] ld-addr-op spill-single-def "Inlining Arg"
;* V06 tmp3 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[int]> ;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V08 tmp5 [V08 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -21,56 +23,75 @@ ;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V11 tmp8 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[int]> ;* V12 tmp9 [V12 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp10 [V13,T04] ( 2, 8 ) int -> ecx "field V04._length (fldOffset=0x4)" P-INDEP -; V14 tmp11 [V14,T02] ( 2, 8 ) byref -> eax "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x4)" P-INDEP +;* V14 tmp11 [V14 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x4)" P-INDEP ;* V16 tmp13 [V16 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP ;* V17 tmp14 [V17 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x4)" P-INDEP
-; V18 tmp15 [V18,T05] ( 3, 6 ) int -> esi "V00.[004..008)"
+; V18 tmp15 [V18,T03] ( 2, 38.89) byref -> esi single-def "V00.[000..004)" +; V19 tmp16 [V19,T02] ( 3, 44.11) int -> edi "V00.[004..008)" +; V20 tmp17 [V20,T04] ( 2, 38.89) byref -> ebx single-def "V01.[000..004)" +; V21 tmp18 [V21,T05] ( 2, 38.89) int -> [ebp-0x18] spill-single-def "V01.[004..008)"
;
-; Lcl frame size = 0
+; Lcl frame size = 12
G_M35874_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp mov ebp, esp push edi push esi
- ;; size=5 bbWeight=1 PerfScore 3.25
+ push ebx + sub esp, 12 + ;; size=9 bbWeight=1 PerfScore 4.50
G_M35874_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov esi, dword ptr [ebp+0x14] - xor edi, edi - test esi, esi - jle SHORT G_M35874_IG04 - ;; size=9 bbWeight=1 PerfScore 2.50 -G_M35874_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov ecx, dword ptr [ebp+0x0C] - mov edx, bword ptr [ebp+0x10] - ; byrRegs +[edx] - mov edx, dword ptr [edx+4*edi] - ; byrRegs -[edx] - mov eax, bword ptr [ebp+0x08] - ; byrRegs +[eax] - push ecx - mov ecx, eax
+ mov esi, bword ptr [ebp+0x10] + ; byrRegs +[esi] + mov edi, dword ptr [ebp+0x14] + mov ebx, bword ptr [ebp+0x08] + ; byrRegs +[ebx] + mov eax, dword ptr [ebp+0x0C] + mov dword ptr [ebp-0x18], eax + xor edx, edx + test edi, edi + jle SHORT G_M35874_IG05 + ;; size=21 bbWeight=1 PerfScore 6.50 +G_M35874_IG03: ; bbWeight=37.89, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref, isz + mov dword ptr [ebp-0x10], edx + mov ecx, dword ptr [esi+4*edx] + mov dword ptr [ebp-0x14], ecx + push eax + mov ecx, ebx
; byrRegs +[ecx]
+ mov edx, dword ptr [ebp-0x14]
call [<unknown method>]
- ; byrRegs -[eax ecx]
+ ; byrRegs -[ecx]
test eax, eax
- je SHORT G_M35874_IG04 - inc edi - cmp edi, esi
+ je SHORT G_M35874_IG07 + ;; size=25 bbWeight=37.89 PerfScore 397.89 +G_M35874_IG04: ; bbWeight=42.11, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref, isz + mov edx, dword ptr [ebp-0x10] + inc edx + cmp edx, edi + mov eax, dword ptr [ebp-0x18]
jl SHORT G_M35874_IG03
- ;; size=30 bbWeight=4 PerfScore 48.00 -G_M35874_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - mov eax, edi
+ ;; size=11 bbWeight=42.11 PerfScore 147.37 +G_M35874_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; byrRegs -[ebx esi] + mov eax, edx
;; size=2 bbWeight=1 PerfScore 0.25
-G_M35874_IG05: ; bbWeight=1, epilog, nogc, extend
+G_M35874_IG06: ; bbWeight=1, epilog, nogc, extend + lea esp, [ebp-0x0C] + pop ebx
pop esi pop edi pop ebp ret 16
- ;; size=6 bbWeight=1 PerfScore 3.50
+ ;; size=10 bbWeight=1 PerfScore 4.50 +G_M35874_IG07: ; bbWeight=18.95, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + mov edx, dword ptr [ebp-0x10] + jmp SHORT G_M35874_IG05 + ;; size=5 bbWeight=18.95 PerfScore 56.84
-; Total bytes of code 52, prolog size 5, PerfScore 57.50, instruction count 25, allocated bytes for code 52 (MethodHash=731173dd) for method System.MemoryExtensions:ClampStart[int](System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int]):int (FullOpts)
+; Total bytes of code 83, prolog size 9, PerfScore 617.86, instruction count 37, allocated bytes for code 83 (MethodHash=731173dd) for method System.MemoryExtensions:ClampStart[int](System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int]):int (FullOpts)
; ============================================================

realworld.run.windows.x86.checked.mch

-39 (-18.22%) : 30417.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:Microsoft.Cci.ITypeMemberReference.GetContainingType(Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.ITypeReference:this (FullOpts)

@@ -2,34 +2,35 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 6 ) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> -; V01 arg1 [V01,T09] ( 4, 2 ) struct (24) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <Microsoft.CodeAnalysis.Emit.EmitContext> -; V02 loc0 [V02,T05] ( 3, 2.50) ref -> eax class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedGlobalMethodSymbol> -; V03 loc1 [V03,T15] ( 2, 1 ) ref -> [ebp-0x10] class-hnd spill-single-def <<unknown class>> -; V04 tmp0 [V04,T07] ( 3, 2.25) ref -> edx single-def "CASTCLASS eval op1" -; V05 tmp1 [V05,T13] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable" -; V06 tmp2 [V06,T03] ( 5, 3.75) ref -> [ebp-0x14] class-hnd "spilling QMark2" <<unknown class>>
+; V00 this [V00,T00] ( 9, 7.44) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> +; V01 arg1 [V01,T08] ( 4, 3.28) struct (24) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <Microsoft.CodeAnalysis.Emit.EmitContext> +; V02 loc0 [V02,T09] ( 3, 2.52) ref -> eax class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedGlobalMethodSymbol> +; V03 loc1 [V03,T13] ( 2, 1.48) ref -> edi class-hnd single-def <<unknown class>> +; V04 tmp0 [V04,T03] ( 3, 4.50) ref -> edx single-def "CASTCLASS eval op1" +; V05 tmp1 [V05,T10] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable" +; V06 tmp2 [V06,T01] ( 5, 6.46) ref -> ebx class-hnd "spilling QMark2" <<unknown class>>
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V08 tmp4 [V08,T14] ( 3, 1.25) int -> ebx "fgMakeTemp is creating a new local variable" -; V09 tmp5 [V09,T04] ( 5, 3.75) ref -> ecx class-hnd "spilling QMark2" <<unknown class>> -; V10 tmp6 [V10,T10] ( 2, 2 ) ref -> edx class-hnd single-def "impAppendStmt" <<unknown class>> -; V11 tmp7 [V11,T12] ( 4, 1.62) ref -> edx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> -; V12 tmp8 [V12,T11] ( 2, 2 ) ref -> edx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> -; V13 tmp9 [V13,T08] ( 4, 2 ) ref -> edx -; V14 tmp10 [V14,T01] ( 4, 4 ) ref -> ecx class-hnd single-def "dup spill" <<unknown class>>
+; V08 tmp4 [V08,T14] ( 3, 1.20) int -> ecx "fgMakeTemp is creating a new local variable" +; V09 tmp5 [V09,T06] ( 5, 3.60) ref -> eax class-hnd "spilling QMark2" <<unknown class>> +; V10 tmp6 [V10,T11] ( 2, 1.92) ref -> ecx class-hnd single-def "impAppendStmt" <<unknown class>> +; V11 tmp7 [V11,T12] ( 4, 1.60) ref -> edx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> +; V12 tmp8 [V12,T04] ( 2, 4 ) ref -> edx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> +; V13 tmp9 [V13,T07] ( 4, 3.48) ref -> edx +; V14 tmp10 [V14,T02] ( 4, 5.76) ref -> ecx class-hnd single-def "dup spill" <<unknown class>>
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref single-def ;* V16 tmp12 [V16 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
-;* V17 tmp13 [V17,T16] ( 0, 0 ) ref -> zero-ref single-def "field V16._source (fldOffset=0x0)" P-INDEP -; V18 tmp14 [V18,T02] ( 2, 4 ) ref -> edx single-def "argument with side effect" -; V19 cse0 [V19,T06] ( 3, 2.50) int -> edi "CSE - moderate"
+;* V17 tmp13 [V17,T15] ( 0, 0 ) ref -> zero-ref single-def "field V16._source (fldOffset=0x0)" P-INDEP +; V18 tmp14 [V18,T05] ( 2, 4 ) ref -> edx single-def "argument with side effect"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M15169_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -37,16 +38,15 @@ G_M15169_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 8
mov esi, ecx ; gcrRegs +[esi]
- ;; size=11 bbWeight=1 PerfScore 4.75
+ ;; size=8 bbWeight=1 PerfScore 4.50
G_M15169_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov ecx, esi ; gcrRegs +[ecx] mov eax, dword ptr [esi]
- mov edi, dword ptr [eax+0x70] - call [edi+0x0C]<unknown method>
+ mov eax, dword ptr [eax+0x70] + call [eax+0x0C]<unknown method>
; gcrRegs -[ecx] +[eax] mov edx, eax ; gcrRegs +[edx] @@ -56,19 +56,18 @@ G_M15169_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 test eax, eax je SHORT G_M15169_IG05 ;; size=26 bbWeight=1 PerfScore 10.00
-G_M15169_IG03: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+G_M15169_IG03: ; bbWeight=0.52, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi] mov eax, gword ptr [eax+0x10]
- ;; size=3 bbWeight=0.50 PerfScore 1.00 -G_M15169_IG04: ; bbWeight=0.50, epilog, nogc, extend - lea esp, [ebp-0x0C]
+ ;; size=3 bbWeight=0.52 PerfScore 1.04 +G_M15169_IG04: ; bbWeight=0.52, epilog, nogc, extend
pop ebx pop esi pop edi pop ebp ret 24
- ;; size=10 bbWeight=0.50 PerfScore 2.25 -G_M15169_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=7 bbWeight=0.52 PerfScore 2.08 +G_M15169_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi] mov ecx, esi ; gcrRegs +[ecx] @@ -76,128 +75,106 @@ G_M15169_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {e mov eax, dword ptr [eax+0x34] call [eax+0x08]<unknown method> ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x10], eax - ; GC ptr vars +{V03}
+ mov edi, eax + ; gcrRegs +[edi]
mov edx, gword ptr [ebp+0x08] ; gcrRegs +[edx]
- mov eax, edx - test eax, eax - mov ebx, gword ptr [ebp-0x10]
+ mov ebx, edx
; gcrRegs +[ebx]
+ test ebx, ebx
je SHORT G_M15169_IG08
- ;; size=25 bbWeight=0.50 PerfScore 5.88 -G_M15169_IG06: ; bbWeight=0.25, gcVars=00008000 {V03}, gcrefRegs=0000004D {eax edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - mov ecx, 0xD1FFAB1E ; <unknown class> - cmp dword ptr [eax], ecx - je SHORT G_M15169_IG08 - ;; size=9 bbWeight=0.25 PerfScore 1.06 -G_M15169_IG07: ; bbWeight=0.12, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, byref
+ ;; size=21 bbWeight=1 PerfScore 10.00 +G_M15169_IG06: ; bbWeight=0.50, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
+ mov ecx, 0xD1FFAB1E ; <unknown class> + cmp dword ptr [ebx], ecx + je SHORT G_M15169_IG08 + ;; size=9 bbWeight=0.50 PerfScore 2.12 +G_M15169_IG07: ; bbWeight=0.25, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ebx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[edx] +[eax]
- mov gword ptr [ebp-0x14], eax - ; GC ptr vars +{V06} - mov eax, gword ptr [ebp-0x14] - ;; size=11 bbWeight=0.12 PerfScore 0.38 -G_M15169_IG08: ; bbWeight=0.50, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz - ; GC ptr vars -{V03 V06}
+ mov ebx, eax + ; gcrRegs +[ebx] + ;; size=7 bbWeight=0.25 PerfScore 0.31 +G_M15169_IG08: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax]
mov edx, gword ptr [ebp+0x0C] ; gcrRegs +[edx] test edx, edx
- jne SHORT G_M15169_IG10
+ jne SHORT G_M15169_IG11 + ;; size=7 bbWeight=1 PerfScore 2.25 +G_M15169_IG09: ; bbWeight=0.80, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[edx]
mov ecx, gword ptr [ebp+0x10] ; gcrRegs +[ecx] test ecx, ecx
- jne SHORT G_M15169_IG09 - xor edx, edx - jmp SHORT G_M15169_IG10 - ;; size=18 bbWeight=0.50 PerfScore 3.38 -G_M15169_IG09: ; bbWeight=0.50, gcrefRegs=0000004B {eax ecx ebx esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[edx] - mov gword ptr [ebp-0x14], eax - ; GC ptr vars +{V06}
+ je SHORT G_M15169_IG16 + ;; size=7 bbWeight=0.80 PerfScore 1.80 +G_M15169_IG10: ; bbWeight=0.64, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
push 0
- mov edx, dword ptr [ecx] - mov edx, dword ptr [edx+0x2C] - ; GC ptr vars +{V03} - call [edx+0x18]<unknown method> - ; gcrRegs -[ecx]
+ mov eax, dword ptr [ecx] + mov eax, dword ptr [eax+0x2C] + call [eax+0x18]<unknown method> + ; gcrRegs -[ecx] +[eax]
mov edx, eax ; gcrRegs +[edx]
- mov eax, gword ptr [ebp-0x14] - ;; size=18 bbWeight=0.50 PerfScore 5.12 -G_M15169_IG10: ; bbWeight=0.50, gcVars=00008000 {V03}, gcrefRegs=0000004D {eax edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V03 V06} - mov ecx, edx - ; gcrRegs +[ecx] - test ecx, ecx - je SHORT G_M15169_IG16 - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M15169_IG11: ; bbWeight=0.25, gcrefRegs=0000004F {eax ecx edx ebx esi}, byrefRegs=00000000 {}, byref, isz - mov ebx, 0xD1FFAB1E ; <unknown class> - ; gcrRegs -[ebx] - cmp dword ptr [ecx], ebx - mov gword ptr [ebp-0x14], eax - ; GC ptr vars +{V06} - je SHORT G_M15169_IG15 - ;; size=12 bbWeight=0.25 PerfScore 1.31 -G_M15169_IG12: ; bbWeight=0.12, gcVars=00008008 {V03 V06}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax ecx] - ; GC ptr vars +{V03} - mov ecx, ebx
+ ;; size=12 bbWeight=0.64 PerfScore 5.28 +G_M15169_IG11: ; bbWeight=0.48, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax] + mov eax, edx + ; gcrRegs +[eax] + test eax, eax + je SHORT G_M15169_IG14 + ;; size=6 bbWeight=0.48 PerfScore 0.72 +G_M15169_IG12: ; bbWeight=0.24, gcrefRegs=000000CD {eax edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz + mov ecx, 0xD1FFAB1E ; <unknown class> + cmp dword ptr [eax], ecx + je SHORT G_M15169_IG14 + ;; size=9 bbWeight=0.24 PerfScore 1.02 +G_M15169_IG13: ; bbWeight=0.12, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[edx] +[eax]
- mov ecx, eax
+ ;; size=5 bbWeight=0.12 PerfScore 0.12 +G_M15169_IG14: ; bbWeight=0.48, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref + mov ecx, gword ptr [ebp+0x18]
; gcrRegs +[ecx]
- mov ebx, gword ptr [ebp-0x10] - ; gcrRegs +[ebx] - ;; size=12 bbWeight=0.12 PerfScore 0.31 -G_M15169_IG13: ; bbWeight=0.50, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax] - mov edx, gword ptr [ebp+0x18] - ; gcrRegs +[edx]
+ push eax
push ecx
- push edx
push 0 mov ecx, esi
- call [edi+0x0C]<unknown method> - ; gcrRegs -[ecx edx] +[eax]
+ mov eax, dword ptr [esi] + ; gcrRegs -[eax] + mov eax, dword ptr [eax+0x70] + call [eax+0x0C]<unknown method> + ; gcrRegs -[ecx] +[eax]
xor edx, edx cmp eax, esi sete dl push edx
- mov edx, ebx
+ mov edx, edi
; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x14]
+ mov ecx, ebx
...

-46 (-17.69%) : 34316.dasm - System.Management.Automation.MshLog:CreateLogProvider(System.String):System.Collections.ObjectModel.Collection`1System.Management.Automation.LogProvider

@@ -2,28 +2,29 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 0 inlinees with PGO data; 12 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 11 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String>
-; V01 loc0 [V01,T03] ( 8, 3 ) ref -> [ebp-0x20] class-hnd exact EH-live spill-single-def <System.Collections.ObjectModel.Collection`1[System.Management.Automation.LogProvider]>
+; V01 loc0 [V01,T03] ( 6, 3 ) ref -> [ebp-0x20] class-hnd exact EH-live spill-single-def <System.Collections.ObjectModel.Collection`1[System.Management.Automation.LogProvider]>
; V02 loc1 [V02,T04] ( 2, 2 ) ref -> edi class-hnd exact single-def <System.Management.Automation.Tracing.PSEtwLogProvider> ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Collections.ObjectModel.Collection`1[System.Management.Automation.LogProvider]> ; V04 tmp0 [V04,T00] ( 4, 8 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.Collection`1[System.Management.Automation.LogProvider]> ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Management.Automation.Tracing.PSEtwLogProvider> ;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V07 tmp3 [V07,T06] ( 2, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <System.Management.Automation.DummyLogProvider>
+;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Management.Automation.DummyLogProvider>
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> ;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> ; V10 tmp6 [V10,T01] ( 3, 6 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V11 tmp7 [V11,T05] ( 2, 2 ) int -> edx single-def "Inline stloc first use temp"
-; V12 tmp8 [V12,T08] ( 2, 0 ) int -> edx single-def "Inline stloc first use temp" -; V13 tmp9 [V13,T02] ( 2, 4 ) ref -> ecx single-def "argument with side effect" -; V14 tmp10 [V14,T07] ( 2, 0 ) ref -> ecx single-def "argument with side effect" -; V15 EHSlots [V15 ] ( 1, 1 ) struct (16) [ebp-0x1C] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
+; V12 tmp8 [V12,T02] ( 2, 4 ) ref -> ecx single-def "argument with side effect" +; V13 tmp9 [V13,T06] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V14 EHSlots [V14 ] ( 1, 1 ) struct (16) [ebp-0x1C] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
; ; Lcl frame size = 24 @@ -95,7 +96,7 @@ G_M21958_IG03: ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {e push edi call [<unknown method>] ; gcrRegs -[eax ecx edi]
- jmp SHORT G_M21958_IG11
+ jmp SHORT G_M21958_IG10
;; size=57 bbWeight=1 PerfScore 24.00 G_M21958_IG04: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[esi] @@ -114,59 +115,33 @@ G_M21958_IG06: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} G_M21958_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref call CORINFO_HELP_ENDCATCH ;; size=5 bbWeight=0 PerfScore 0.00
-G_M21958_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M21958_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; System.Management.Automation.DummyLogProvider call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax]
- mov esi, eax - ; gcrRegs +[esi] - mov eax, gword ptr [ebp-0x20] - mov ecx, gword ptr [eax+0x04] - ; gcrRegs +[ecx] - call [<unknown method>] - ; gcrRegs -[eax ecx] - test eax, eax - je SHORT G_M21958_IG09 - mov ecx, 8 - ; GC ptr vars -{V01} - call [System.ThrowHelper:ThrowNotSupportedException(int)] - ; gcrRegs -[esi] - int3 - ;; size=40 bbWeight=0 PerfScore 0.00 -G_M21958_IG09: ; bbWeight=0, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs +[esi] - ; GC ptr vars +{V01} - mov eax, gword ptr [ebp-0x20] - ; gcrRegs +[eax] - mov ecx, gword ptr [eax+0x04] - ; gcrRegs +[ecx] - call [<unknown method>] - ; gcrRegs -[eax ecx]
mov edx, eax
- mov eax, gword ptr [ebp-0x20] - ; gcrRegs +[eax] - mov ecx, gword ptr [eax+0x04]
+ ; gcrRegs +[edx] + mov ecx, gword ptr [ebp-0x20]
; gcrRegs +[ecx]
- push esi - call [<unknown method>] - ; gcrRegs -[eax ecx esi]
+ call [System.Collections.ObjectModel.Collection`1[System.__Canon]:Add(System.__Canon):this] + ; gcrRegs -[eax ecx edx]
mov eax, gword ptr [ebp-0x20] ; gcrRegs +[eax]
- ;; size=30 bbWeight=0 PerfScore 0.00 -G_M21958_IG10: ; bbWeight=0, epilog, nogc, extend
+ ;; size=24 bbWeight=0 PerfScore 0.00 +G_M21958_IG09: ; bbWeight=0, epilog, nogc, extend
lea esp, [ebp-0x08] pop esi pop edi pop ebp ret ;; size=7 bbWeight=0 PerfScore 0.00
-G_M21958_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M21958_IG10: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] +[esi] ; GC ptr vars -{V01} mov eax, esi ; gcrRegs +[eax] ;; size=2 bbWeight=1 PerfScore 0.25
-G_M21958_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M21958_IG11: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x08] pop esi pop edi @@ -174,7 +149,7 @@ G_M21958_IG12: ; bbWeight=1, epilog, nogc, extend ret ;; size=7 bbWeight=1 PerfScore 3.00
-; Total bytes of code 260, prolog size 22, PerfScore 45.50, instruction count 81, allocated bytes for code 260 (MethodHash=8854aa39) for method System.Management.Automation.MshLog:CreateLogProvider(System.String):System.Collections.ObjectModel.Collection`1[System.Management.Automation.LogProvider] (FullOpts)
+; Total bytes of code 214, prolog size 22, PerfScore 45.50, instruction count 67, allocated bytes for code 214 (MethodHash=8854aa39) for method System.Management.Automation.MshLog:CreateLogProvider(System.String):System.Collections.ObjectModel.Collection`1[System.Management.Automation.LogProvider] (FullOpts)
; ============================================================ *************** EH table for System.Management.Automation.MshLog:CreateLogProvider(System.String):System.Collections.ObjectModel.Collection`1[System.Management.Automation.LogProvider]

-11 (-16.92%) : 22457.dasm - System.Text.RegularExpressions.RegexNode:g_CanJoinLengthCheck|600(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)

@@ -2,15 +2,17 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> ecx class-hnd single-def <System.Text.RegularExpressions.RegexNode> -; V01 loc0 [V01,T03] ( 3, 2 ) ubyte -> eax -; V02 loc1 [V02,T02] ( 3, 2.50) ubyte -> eax
+; V00 arg0 [V00,T00] ( 5, 4.18) ref -> ecx class-hnd single-def <System.Text.RegularExpressions.RegexNode> +; V01 loc0 [V01,T03] ( 3, 1.60) ubyte -> eax +; V02 loc1 [V02,T02] ( 3, 2.09) ubyte -> eax
;* V03 tmp0 [V03 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V04 rat0 [V04,T01] ( 3, 6 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ; @@ -19,58 +21,45 @@ G_M17774_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp mov ebp, esp
- push esi - ;; size=4 bbWeight=1 PerfScore 2.25
+ ;; size=3 bbWeight=1 PerfScore 1.25
G_M17774_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx] movzx eax, byte ptr [ecx+0x1E] lea edx, [eax-0x03] cmp edx, 9
- ja SHORT G_M17774_IG03 - lea eax, [@RWD00] - mov eax, dword ptr [eax+4*edx] - lea esi, G_M17774_IG02 - add eax, esi - jmp eax - ;; size=31 bbWeight=1 PerfScore 9.50 -G_M17774_IG03: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - add eax, -43 - cmp eax, 2 - jbe SHORT G_M17774_IG05 - jmp SHORT G_M17774_IG06 - ;; size=10 bbWeight=0.50 PerfScore 1.75 -G_M17774_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - mov eax, 1 - jmp SHORT G_M17774_IG07 - ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M17774_IG05: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ecx]
+ ja SHORT G_M17774_IG07 + mov eax, 63 + bt eax, edx + jae SHORT G_M17774_IG06 + ;; size=22 bbWeight=1 PerfScore 5.50 +G_M17774_IG03: ; bbWeight=0.59, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ecx+0x10] cmp eax, dword ptr [ecx+0x14]
- je SHORT G_M17774_IG04 - ;; size=8 bbWeight=0.50 PerfScore 3.00 -G_M17774_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ je SHORT G_M17774_IG06 + ;; size=8 bbWeight=0.59 PerfScore 3.53 +G_M17774_IG04: ; bbWeight=0.33, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M17774_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc - pop esi
+ ;; size=2 bbWeight=0.33 PerfScore 0.08 +G_M17774_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
pop ebp ret
- ;; size=3 bbWeight=1 PerfScore 2.00 -RWD00 dd G_M17774_IG05 - G_M17774_IG02 - dd G_M17774_IG05 - G_M17774_IG02 - dd G_M17774_IG05 - G_M17774_IG02 - dd G_M17774_IG05 - G_M17774_IG02 - dd G_M17774_IG05 - G_M17774_IG02 - dd G_M17774_IG05 - G_M17774_IG02 - dd G_M17774_IG04 - G_M17774_IG02 - dd G_M17774_IG04 - G_M17774_IG02 - dd G_M17774_IG04 - G_M17774_IG02 - dd G_M17774_IG04 - G_M17774_IG02
+ ;; size=2 bbWeight=1 PerfScore 1.50 +G_M17774_IG06: ; bbWeight=0.27, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + mov eax, 1 + jmp SHORT G_M17774_IG05 + ;; size=7 bbWeight=0.27 PerfScore 0.61 +G_M17774_IG07: ; bbWeight=0.09, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[ecx] + add eax, -43 + cmp eax, 2 + jbe SHORT G_M17774_IG03 + ;; size=8 bbWeight=0.09 PerfScore 0.14 +G_M17774_IG08: ; bbWeight=0.05, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx] + jmp SHORT G_M17774_IG04 + ;; size=2 bbWeight=0.05 PerfScore 0.09
- -; Total bytes of code 65, prolog size 4, PerfScore 19.75, instruction count 25, allocated bytes for code 65 (MethodHash=3c48ba91) for method System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
+; Total bytes of code 54, prolog size 3, PerfScore 12.71, instruction count 21, allocated bytes for code 54 (MethodHash=3c48ba91) for method System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
; ============================================================

+24 (+27.91%) : 35466.dasm - System.Management.Automation.Language.InvokeMemberExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)

@@ -2,17 +2,21 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments ;
-; V00 this [V00,T01] ( 6, 4.50) ref -> edi this class-hnd single-def <System.Management.Automation.Language.InvokeMemberExpressionAst> -; V01 arg1 [V01,T00] ( 7, 5.50) ref -> esi class-hnd single-def <System.Management.Automation.Language.AstVisitor> -; V02 loc0 [V02,T02] ( 5, 3.50) int -> eax -; V03 tmp0 [V03,T03] ( 3, 3 ) ref -> eax class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
+; V00 this [V00,T01] ( 6, 4.60) ref -> edi this class-hnd single-def <System.Management.Automation.Language.InvokeMemberExpressionAst> +; V01 arg1 [V01,T00] ( 7, 6.64) ref -> esi class-hnd single-def <System.Management.Automation.Language.AstVisitor> +; V02 loc0 [V02,T04] ( 5, 4.44) int -> ebx +; V03 tmp0 [V03,T02] ( 3, 4.96) ref -> eax class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
+; V05 tmp2 [V05,T03] ( 3, 4.96) ref -> eax class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor> +;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
; ; Lcl frame size = 0 @@ -21,11 +25,12 @@ G_M63420_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov ebp, esp push edi push esi
+ push ebx
mov edi, ecx ; gcrRegs +[edi] mov esi, edx ; gcrRegs +[esi]
- ;; size=9 bbWeight=1 PerfScore 3.75
+ ;; size=10 bbWeight=1 PerfScore 4.75
G_M63420_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov ecx, esi ; gcrRegs +[ecx] @@ -35,10 +40,9 @@ G_M63420_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 mov eax, dword ptr [eax+0x44] call [eax]<unknown method> ; gcrRegs -[ecx edx]
- cmp eax, 1
+ mov ebx, eax + cmp ebx, 1
jne SHORT G_M63420_IG06
- ;; size=16 bbWeight=1 PerfScore 8.75 -G_M63420_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, esi ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; <unknown class> @@ -46,49 +50,67 @@ G_M63420_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[edx esi] +[eax] test eax, eax je SHORT G_M63420_IG04
+ ;; size=34 bbWeight=1 PerfScore 11.75 +G_M63420_IG03: ; bbWeight=0.48, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
mov ecx, eax ; gcrRegs +[ecx] mov edx, edi ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[eax ecx edx edi]
- ;; size=26 bbWeight=0.50 PerfScore 3.12 -G_M63420_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=10 bbWeight=0.48 PerfScore 1.68 +G_M63420_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M63420_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M63420_IG05: ; bbWeight=1, epilog, nogc, extend + pop ebx
pop esi pop edi pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25 -G_M63420_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=5 bbWeight=1 PerfScore 3.00 +G_M63420_IG06: ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi edi]
- test eax, eax - jne SHORT G_M63420_IG07
+ test ebx, ebx + jne SHORT G_M63420_IG08 + ;; size=4 bbWeight=0.80 PerfScore 1.00 +G_M63420_IG07: ; bbWeight=0.64, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, edi ; gcrRegs +[ecx] mov edx, esi ; gcrRegs +[edx] call [System.Management.Automation.Language.InvokeMemberExpressionAst:InternalVisitChildren(System.Management.Automation.Language.AstVisitor):int:this] ; gcrRegs -[ecx edx]
- ;; size=14 bbWeight=0.50 PerfScore 2.38 -G_M63420_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - push eax - mov ecx, esi
+ mov ebx, eax + ;; size=12 bbWeight=0.64 PerfScore 2.40 +G_M63420_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + mov edx, esi + ; gcrRegs +[edx] + mov ecx, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_ISINSTANCEOFINTERFACE + ; gcrRegs -[edx esi] +[eax] + test eax, eax + je SHORT G_M63420_IG10 + ;; size=16 bbWeight=1 PerfScore 2.75 +G_M63420_IG09: ; bbWeight=0.48, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref + mov ecx, eax
; gcrRegs +[ecx] mov edx, edi ; gcrRegs +[edx]
- call [System.Management.Automation.Language.AstVisitor:CheckForPostAction(System.Management.Automation.Language.Ast,int):int:this] - ; gcrRegs -[ecx edx esi edi] - ;; size=11 bbWeight=0.50 PerfScore 2.25 -G_M63420_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ call [<unknown method>] + ; gcrRegs -[eax ecx edx edi] + ;; size=10 bbWeight=0.48 PerfScore 1.68 +G_M63420_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, ebx + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M63420_IG11: ; bbWeight=1, epilog, nogc, extend + pop ebx
pop esi pop edi pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=5 bbWeight=1 PerfScore 3.00
-; Total bytes of code 86, prolog size 5, PerfScore 22.88, instruction count 39, allocated bytes for code 86 (MethodHash=bd710843) for method System.Management.Automation.Language.InvokeMemberExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
+; Total bytes of code 110, prolog size 6, PerfScore 32.51, instruction count 49, allocated bytes for code 110 (MethodHash=bd710843) for method System.Management.Automation.Language.InvokeMemberExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
; ============================================================

+21 (+40.38%) : 22443.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)

@@ -2,29 +2,33 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; esp based frame
+; optimized using Synthesized PGO +; ebp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 5.50) ref -> ecx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V00 this [V00,T00] ( 8, 7.20) 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, 3.50) int -> eax -; V03 loc1 [V03,T03] ( 4, 3 ) ref -> esi class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T03] ( 5, 4.40) int -> eax +; V03 loc1 [V03,T04] ( 4, 3.60) 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] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V07 rat0 [V07,T05] ( 2, 3.20) int -> edx "Spilling to split statement for tree"
;* V08 rat1 [V08,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V09 rat2 [V09,T04] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V09 rat2 [V09,T02] ( 2, 3.20) int -> edx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 G_M49890_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+ push ebp + mov ebp, esp
push edi push esi
- ;; size=2 bbWeight=1 PerfScore 2.00
+ ;; size=5 bbWeight=1 PerfScore 3.25
G_M49890_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 {edx}, byref, isz ; gcrRegs +[ecx] ; byrRegs +[edx] @@ -34,24 +38,9 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 ; gcrRegs +[esi] mov edi, dword ptr [esi+0x04] cmp edi, eax
- ja SHORT G_M49890_IG05
+ jbe SHORT G_M49890_IG05
;; size=14 bbWeight=1 PerfScore 7.50
-G_M49890_IG03: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 {edx}, byref - ; gcrRegs -[esi] - xor eax, eax - ; gcrRegs +[eax] - mov gword ptr [edx], eax - ;; size=4 bbWeight=0.50 PerfScore 0.62 -G_M49890_IG04: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, epilog, nogc - ; gcrRegs -[eax] - ; byrRegs -[edx] - pop esi - pop edi - ret - ;; size=3 bbWeight=0.50 PerfScore 1.00 -G_M49890_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000004 {edx}, gcvars, byref - ; gcrRegs +[esi] - ; byrRegs +[edx]
+G_M49890_IG03: ; bbWeight=0.80, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000004 {edx}, byref, isz
inc dword ptr [ecx+0x0C] mov dword ptr [ecx+0x08], eax mov edi, gword ptr [esi+4*eax+0x08] @@ -59,17 +48,45 @@ G_M49890_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {e 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+0x08] + test edx, edx + jne SHORT G_M49890_IG07 + ;; size=29 bbWeight=0.80 PerfScore 13.00 +G_M49890_IG04: ; bbWeight=0.16, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M49890_IG07 + ;; size=2 bbWeight=0.16 PerfScore 0.32 +G_M49890_IG05: ; bbWeight=0.20, 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.20 PerfScore 0.25 +G_M49890_IG06: ; bbWeight=0.20, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, epilog, nogc + ; gcrRegs -[eax] + ; byrRegs -[edx] + pop esi + pop edi + pop ebp + ret + ;; size=4 bbWeight=0.20 PerfScore 0.50 +G_M49890_IG07: ; bbWeight=0.80, 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=26 bbWeight=0.50 PerfScore 4.25 -G_M49890_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=11 bbWeight=0.80 PerfScore 1.20 +G_M49890_IG08: ; bbWeight=0.80, epilog, nogc, extend
pop esi pop edi
+ pop ebp
ret
- ;; size=3 bbWeight=0.50 PerfScore 1.00
+ ;; size=4 bbWeight=0.80 PerfScore 2.00
-; Total bytes of code 52, prolog size 2, PerfScore 16.38, instruction count 23, allocated bytes for code 52 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
+; Total bytes of code 73, prolog size 5, PerfScore 28.02, instruction count 34, allocated bytes for code 73 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
; ============================================================

+28 (+48.28%) : 16334.dasm - System.Linq.Enumerable+SelectArrayIterator2[System.__Canon,System.ValueTuple2[System.Canon,System.Canon]]:Fill(System.ReadOnlySpan1[System.__Canon],System.Span1[System.ValueTuple2[System.__Canon,System.__Canon]],System.Func2[System.Canon,System.ValueTuple`2[System.Canon,System.__Canon]]) (FullOpts)

@@ -2,21 +2,26 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
+; optimized using Synthesized PGO
; ebp based frame ; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 2, 8 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.__Canon]> -; V01 arg1 [V01,T05] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]]> -; V02 arg2 [V02,T02] ( 4, 10 ) ref -> esi class-hnd single-def <System.Func`2[System.__Canon,System.ValueTuple`2[System.__Canon,System.__Canon]]>
+; V00 arg0 [V00,T07] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.__Canon]> +; V01 arg1 [V01,T08] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]]> +; V02 arg2 [V02,T02] ( 4,146.00) ref -> esi class-hnd single-def <System.Func`2[System.__Canon,System.ValueTuple`2[System.__Canon,System.__Canon]]>
;* V03 TypeCtx [V03 ] ( 0, 0 ) int -> zero-ref single-def
-; V04 loc0 [V04,T00] ( 7, 25 ) int -> ebx
+; V04 loc0 [V04,T00] ( 7,433.00) int -> [ebp-0x10]
;* V05 loc1 [V05 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
-; V06 tmp1 [V06,T04] ( 3, 6 ) int -> edi "V01.[004..008)" -; V07 tmp2 [V07,T01] ( 2, 16 ) byref -> edx "argument with side effect"
+; V06 tmp1 [V06,T04] ( 2, 73.00) byref -> edi single-def "V00.[000..004)" +; V07 tmp2 [V07,T06] ( 2, 73.00) int -> ebx "V00.[004..008)" +; V08 tmp3 [V08,T05] ( 2, 73.00) byref -> [ebp-0x18] spill-single-def "V01.[000..004)" +; V09 tmp4 [V09,T03] ( 3, 74.00) int -> [ebp-0x14] spill-single-def "V01.[004..008)" +; V10 tmp5 [V10,T01] ( 2,288.00) byref -> eax "argument with side effect"
;
-; Lcl frame size = 0
+; Lcl frame size = 12
G_M21906_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -24,47 +29,61 @@ G_M21906_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
+ sub esp, 12
mov esi, ecx ; gcrRegs +[esi]
- ;; size=8 bbWeight=1 PerfScore 4.50
+ ;; size=11 bbWeight=1 PerfScore 4.75
G_M21906_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, dword ptr [ebp+0x0C] - xor ebx, ebx - test edi, edi
+ mov edi, bword ptr [ebp+0x10] + ; byrRegs +[edi] + mov ebx, dword ptr [ebp+0x14] + mov eax, bword ptr [ebp+0x08] + ; byrRegs +[eax] + mov bword ptr [ebp-0x18], eax + ; GC ptr vars +{V08} + mov ecx, dword ptr [ebp+0x0C] + mov dword ptr [ebp-0x14], ecx + xor edx, edx + test ecx, ecx
jle SHORT G_M21906_IG04
- ;; size=9 bbWeight=1 PerfScore 2.50 -G_M21906_IG03: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov edx, bword ptr [ebp+0x08] - ; byrRegs +[edx] - lea edx, bword ptr [edx+8*ebx] - cmp ebx, dword ptr [ebp+0x14]
+ ;; size=24 bbWeight=1 PerfScore 7.50 +G_M21906_IG03: ; bbWeight=72.00, gcVars=00000020 {V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000081 {eax edi}, gcvars, byref, isz + lea eax, bword ptr [eax+8*edx] + cmp edx, ebx
jae SHORT G_M21906_IG05
- mov ecx, bword ptr [ebp+0x10] - ; byrRegs +[ecx] - push gword ptr [ecx+4*ebx]
+ mov dword ptr [ebp-0x10], edx + push gword ptr [edi+4*edx] + mov edx, eax + ; byrRegs +[edx]
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx]
- ; byrRegs -[ecx]
call [esi+0x0C]<unknown method> ; gcrRegs -[ecx]
- ; byrRegs -[edx] - inc ebx - cmp ebx, edi
+ ; byrRegs -[eax edx] + mov edx, dword ptr [ebp-0x10] + inc edx + mov ecx, dword ptr [ebp-0x14] + cmp edx, ecx + mov eax, bword ptr [ebp-0x18] + ; byrRegs +[eax]
jl SHORT G_M21906_IG03
- ;; size=28 bbWeight=4 PerfScore 56.00 -G_M21906_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=35 bbWeight=72.00 PerfScore 1044.00 +G_M21906_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[esi]
+ ; byrRegs -[eax edi] + ; GC ptr vars -{V08} + lea esp, [ebp-0x0C]
pop ebx pop esi pop edi pop ebp ret 16
- ;; size=7 bbWeight=1 PerfScore 4.00
+ ;; size=10 bbWeight=1 PerfScore 4.50
G_M21906_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 58, prolog size 6, PerfScore 67.00, instruction count 28, allocated bytes for code 58 (MethodHash=e1f1aa6d) for method System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.ValueTuple`2[System.__Canon,System.__Canon]]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]],System.Func`2[System.__Canon,System.ValueTuple`2[System.__Canon,System.__Canon]]) (FullOpts)
+; Total bytes of code 86, prolog size 9, PerfScore 1060.75, instruction count 38, allocated bytes for code 86 (MethodHash=e1f1aa6d) for method System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.ValueTuple`2[System.__Canon,System.__Canon]]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]],System.Func`2[System.__Canon,System.ValueTuple`2[System.__Canon,System.__Canon]]) (FullOpts)
; ============================================================

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x86.checked.mch 14,556 2,481 7,651 4,424 -22,115 +214,832
benchmarks.run_pgo.windows.x86.checked.mch 17,478 2,279 13,344 1,855 -40,543 +275,229
benchmarks.run_tiered.windows.x86.checked.mch 10,834 1,820 5,753 3,261 -15,825 +156,798
coreclr_tests.run.windows.x86.checked.mch 62,031 23,109 22,570 16,352 -268,960 +495,216
libraries.crossgen2.windows.x86.checked.mch 49,432 8,496 20,216 20,720 -62,821 +322,663
libraries.pmi.windows.x86.checked.mch 68,058 13,242 29,123 25,693 -125,524 +627,954
libraries_tests.run.windows.x86.Release.mch 8,511 1,654 5,830 1,027 -29,747 +203,993
librariestestsnotieredcompilation.run.windows.x86.Release.mch 78,614 19,762 38,775 20,077 -282,117 +1,015,711
realworld.run.windows.x86.checked.mch 11,933 2,071 6,260 3,602 -23,616 +199,217
321,447 74,914 149,522 97,011 -871,268 +3,511,613

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 35,012 6 35,006 33 (0.08%) 3,881 (9.98%)
benchmarks.run_pgo.windows.x86.checked.mch 78,073 41,585 36,488 11 (0.01%) 7,358 (8.61%)
benchmarks.run_tiered.windows.x86.checked.mch 71,264 45,417 25,847 24 (0.03%) 2,364 (3.21%)
coreclr_tests.run.windows.x86.checked.mch 402,009 186,921 215,088 74 (0.02%) 4,610 (1.13%)
libraries.crossgen2.windows.x86.checked.mch 254,817 15 254,802 32 (0.01%) 18,188 (6.66%)
libraries.pmi.windows.x86.checked.mch 300,936 6 300,930 72 (0.02%) 19,622 (6.12%)
libraries_tests.run.windows.x86.Release.mch 47,871 31,248 16,623 350 (0.71%) 1,753 (3.53%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 305,454 22,425 283,029 192 (0.06%) 38,587 (11.21%)
realworld.run.windows.x86.checked.mch 33,917 3 33,914 11 (0.03%) 3,941 (10.41%)
1,529,353 327,626 1,201,727 799 (0.05%) 100,304 (6.15%)

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: 8042044 (overridden on cmd)
Total bytes of diff: 8234761 (overridden on cmd)
Total bytes of delta: 192717 (2.40 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        3452 : 21639.dasm (16.52 % of base)
        3452 : 6632.dasm (16.52 % of base)
        1705 : 25909.dasm (26.64 % of base)
        1699 : 26562.dasm (26.52 % of base)
        1160 : 36162.dasm (8.37 % of base)
        1055 : 36952.dasm (33.53 % of base)
         961 : 25871.dasm (28.43 % of base)
         775 : 32488.dasm (24.74 % of base)
         775 : 28035.dasm (24.74 % of base)
         763 : 25686.dasm (9.47 % of base)
         666 : 29324.dasm (15.91 % of base)
         657 : 31046.dasm (16.87 % of base)
         657 : 4482.dasm (16.87 % of base)
         565 : 9021.dasm (10.88 % of base)
         532 : 34348.dasm (17.84 % of base)
         532 : 34769.dasm (17.84 % of base)
         503 : 35870.dasm (13.90 % of base)
         498 : 16372.dasm (30.82 % of base)
         498 : 847.dasm (30.82 % of base)
         485 : 35172.dasm (12.08 % of base)

Top file improvements (bytes):
        -348 : 18486.dasm (-7.77 % of base)
        -312 : 33237.dasm (-3.52 % of base)
        -254 : 6018.dasm (-15.68 % of base)
        -198 : 25857.dasm (-10.58 % of base)
        -198 : 22021.dasm (-10.58 % of base)
        -185 : 36279.dasm (-1.74 % of base)
        -160 : 18135.dasm (-1.70 % of base)
        -160 : 4644.dasm (-1.70 % of base)
        -159 : 35783.dasm (-12.48 % of base)
        -129 : 31329.dasm (-1.54 % of base)
        -123 : 8237.dasm (-9.75 % of base)
        -100 : 29006.dasm (-8.31 % of base)
        -100 : 33290.dasm (-8.31 % of base)
         -97 : 21593.dasm (-2.83 % of base)
         -97 : 2793.dasm (-2.83 % of base)
         -97 : 14458.dasm (-6.46 % of base)
         -83 : 22297.dasm (-27.48 % of base)
         -83 : 23306.dasm (-27.48 % of base)
         -82 : 17185.dasm (-9.60 % of base)
         -81 : 11219.dasm (-23.34 % of base)

83 total files with Code Size differences (41 improved, 42 regressed), 20 unchanged.

Top method regressions (bytes):
        3452 (16.52 % of base) : 21639.dasm - Jil.JSON:GetWriterAction[System.__Canon](Jil.Options):System.Action`3[System.__Canon,System.__Canon,int] (FullOpts)
        3452 (16.52 % of base) : 6632.dasm - Jil.JSON:GetWriterAction[System.__Canon](Jil.Options):System.Action`3[System.__Canon,System.__Canon,int] (FullOpts)
        1705 (26.64 % of base) : 25909.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
        1699 (26.52 % of base) : 26562.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
        1160 (8.37 % of base) : 36162.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        1055 (33.53 % of base) : 36952.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
         961 (28.43 % of base) : 25871.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
         775 (24.74 % of base) : 32488.dasm - Microsoft.CodeAnalysis.PEModule:GetTargetAttributeSignatureIndex(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.CustomAttributeHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):int (FullOpts)
         775 (24.74 % of base) : 28035.dasm - Microsoft.CodeAnalysis.PEModule:GetTargetAttributeSignatureIndex(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.CustomAttributeHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):int (FullOpts)
         763 (9.47 % of base) : 25686.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
         666 (15.91 % of base) : 29324.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindReturn(Microsoft.CodeAnalysis.CSharp.Syntax.ReturnStatementSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
         657 (16.87 % of base) : 31046.dasm - System.DateTimeParse:Lex(int,byref,byref,byref,byref,byref,int):ubyte (FullOpts)
         657 (16.87 % of base) : 4482.dasm - System.DateTimeParse:Lex(int,byref,byref,byref,byref,byref,int):ubyte (FullOpts)
         565 (10.88 % of base) : 9021.dasm - MessagePack.Formatters.MicroBenchmarks_Serializers_LocationFormatter1:Serialize(byref,int,MicroBenchmarks.Serializers.Location,MessagePack.IFormatterResolver):int:this (FullOpts)
         532 (17.84 % of base) : 34348.dasm - System.Security.Cryptography.CryptoConfig:get_DefaultNameHT():System.Collections.Generic.Dictionary`2[System.String,System.Object] (FullOpts)
         532 (17.84 % of base) : 34769.dasm - System.Security.Cryptography.CryptoConfig:get_DefaultNameHT():System.Collections.Generic.Dictionary`2[System.String,System.Object] (FullOpts)
         503 (13.90 % of base) : 35870.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
         498 (30.82 % of base) : 16372.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (FullOpts)
         498 (30.82 % of base) : 847.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (FullOpts)
         485 (12.08 % of base) : 35172.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method improvements (bytes):
        -348 (-7.77 % of base) : 18486.dasm - System.Text.Json.JsonDocument:TryParseValue(byref,byref,ubyte,ubyte):ubyte (FullOpts)
        -312 (-3.52 % of base) : 33237.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
        -254 (-15.68 % of base) : 6018.dasm - System.Text.Ascii:EqualsIgnoreCase[ubyte,ushort,System.Text.Ascii+WideningLoader](byref,byref,uint):ubyte (FullOpts)
        -198 (-10.58 % of base) : 25857.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.LoginViewModel,int) (FullOpts)
        -198 (-10.58 % of base) : 22021.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.LoginViewModel,int) (FullOpts)
        -185 (-1.74 % of base) : 36279.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        -160 (-1.70 % of base) : 18135.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
        -160 (-1.70 % of base) : 4644.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
        -159 (-12.48 % of base) : 35783.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (FullOpts)
        -129 (-1.54 % of base) : 31329.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
        -123 (-9.75 % of base) : 8237.dasm - System.Diagnostics.Tracing.EventSource:WriteEventVarargs(int,uint,System.Object[]):this (FullOpts)
        -100 (-8.31 % of base) : 29006.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:IsAsRestrictive(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol,byref):ubyte (FullOpts)
        -100 (-8.31 % of base) : 33290.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:IsAsRestrictive(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol,byref):ubyte (FullOpts)
         -97 (-2.83 % of base) : 21593.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:.cctor() (FullOpts)
         -97 (-2.83 % of base) : 2793.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:.cctor() (FullOpts)
         -97 (-6.46 % of base) : 14458.dasm - System.Text.Ascii:NarrowUtf16ToAscii(uint,uint,uint):uint (FullOpts)
         -83 (-27.48 % of base) : 22297.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (FullOpts)
         -83 (-27.48 % of base) : 23306.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (FullOpts)
         -82 (-9.60 % of base) : 17185.dasm - System.Text.Json.Reflection.ReflectionExtensions:IsImmutableEnumerableType(System.Type):ubyte (FullOpts)
         -81 (-23.34 % of base) : 11219.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanBE():System.Span`1[ubyte] (FullOpts)

Top method regressions (percentages):
          44 (72.13 % of base) : 1819.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.Memory`1[ubyte]]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.Memory`1[ubyte]],System.Func`2[System.__Canon,System.Memory`1[ubyte]]) (FullOpts)
          20 (44.44 % of base) : 36753.dasm - System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
         388 (43.60 % of base) : 30398.dasm - Microsoft.Cci.MetadataWriter:PopulateManifestResourceTableRows(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.BlobBuilder):this (FullOpts)
         125 (43.55 % of base) : 15047.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
         125 (43.55 % of base) : 636.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
          21 (40.38 % of base) : 3840.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
          21 (40.38 % of base) : 16454.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
         146 (38.83 % of base) : 540.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
         146 (38.83 % of base) : 14951.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
         156 (37.50 % of base) : 18558.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
         156 (37.50 % of base) : 4908.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
          20 (37.04 % of base) : 11146.dasm - System.Memory.Constructors`1[System.__Canon]:ReadOnlyMemoryFromArrayStartLength():System.ReadOnlyMemory`1[System.__Canon]:this (FullOpts)
         249 (36.94 % of base) : 30203.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (FullOpts)
        1055 (33.53 % of base) : 36952.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
         476 (32.92 % of base) : 26078.dasm - System.Memory.Slice`1[ubyte]:MemoryStart():System.Memory`1[ubyte]:this (FullOpts)
         476 (32.92 % of base) : 33742.dasm - System.Memory.Slice`1[ubyte]:ReadOnlyMemoryStart():System.ReadOnlyMemory`1[ubyte]:this (FullOpts)
         498 (30.82 % of base) : 16372.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (FullOpts)
         498 (30.82 % of base) : 847.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (FullOpts)
          89 (30.58 % of base) : 31830.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanMultiLineComment(byref):ubyte:this (FullOpts)
          33 (30.56 % of base) : 30554.dasm - System.Reflection.PortableExecutable.ManagedPEBuilder:CreateDefaultDebugDirectoryBuilder():System.Reflection.PortableExecutable.DebugDirectoryBuilder:this (FullOpts)

Top method improvements (percentages):
         -79 (-33.05 % of base) : 25898.dasm - System.Numerics.Tests.Perf_BigInteger:Parse(System.Numerics.Tests.Perf_BigInteger+BigIntegerData):System.Numerics.BigInteger:this (FullOpts)
         -79 (-33.05 % of base) : 26421.dasm - System.Numerics.Tests.Perf_BigInteger:Parse(System.Numerics.Tests.Perf_BigInteger+BigIntegerData):System.Numerics.BigInteger:this (FullOpts)
         -83 (-27.48 % of base) : 22297.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (FullOpts)
         -83 (-27.48 % of base) : 23306.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (FullOpts)
         -56 (-27.45 % of base) : 5382.dasm - System.TimeZoneInfo:GetLocalTimeZoneFromWin32Data(byref,ubyte):System.TimeZoneInfo (FullOpts)
         -56 (-27.45 % of base) : 17454.dasm - System.TimeZoneInfo:GetLocalTimeZoneFromWin32Data(byref,ubyte):System.TimeZoneInfo (FullOpts)
         -68 (-25.37 % of base) : 11217.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanLE():System.Span`1[ubyte] (FullOpts)
         -68 (-25.37 % of base) : 19628.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanLE():System.Span`1[ubyte] (FullOpts)
         -81 (-23.34 % of base) : 11219.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanBE():System.Span`1[ubyte] (FullOpts)
         -81 (-23.34 % of base) : 19630.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanBE():System.Span`1[ubyte] (FullOpts)
          -7 (-22.58 % of base) : 6963.dasm - Jil.Common.Utils+<>c__DisplayClass9_0:<IdealMemberOrderForWriting>b__6(System.Reflection.FieldInfo):int:this (FullOpts)
          -7 (-22.58 % of base) : 21957.dasm - Jil.Common.Utils+<>c__DisplayClass9_0:<IdealMemberOrderForWriting>b__6(System.Reflection.FieldInfo):int:this (FullOpts)
          -7 (-20.59 % of base) : 32979.dasm - Microsoft.CodeAnalysis.SpecialTypes:GetTypeFromMetadataName(System.String):byte (FullOpts)
         -39 (-18.22 % of base) : 29856.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:Microsoft.Cci.ITypeMemberReference.GetContainingType(Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.ITypeReference:this (FullOpts)
         -72 (-17.73 % of base) : 20572.dasm - System.Number:TryInt64ToHexStr[ushort](long,ushort,int,System.Span`1[ushort],byref):ubyte (FullOpts)
         -72 (-17.73 % of base) : 5808.dasm - System.Number:TryInt64ToHexStr[ushort](long,ushort,int,System.Span`1[ushort],byref):ubyte (FullOpts)
         -11 (-16.92 % of base) : 16486.dasm - System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
         -11 (-16.92 % of base) : 3865.dasm - System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
         -35 (-16.75 % of base) : 766.dasm - System.Reflection.Emit.DynamicILGenerator:GetCallableMethod(System.Reflection.RuntimeModule,System.Reflection.Emit.DynamicMethod):this (FullOpts)
         -35 (-16.75 % of base) : 15177.dasm - System.Reflection.Emit.DynamicILGenerator:GetCallableMethod(System.Reflection.RuntimeModule,System.Reflection.Emit.DynamicMethod):this (FullOpts)


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: 28754577 (overridden on cmd)
Total bytes of diff: 28989263 (overridden on cmd)
Total bytes of delta: 234686 (0.82 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
        1699 : 50515.dasm (26.52 % of base)
         780 : 57975.dasm (24.90 % of base)
         699 : 57737.dasm (36.75 % of base)
         475 : 52687.dasm (22.67 % of base)
         475 : 17242.dasm (22.67 % of base)
         443 : 38767.dasm (27.41 % of base)
         443 : 7692.dasm (27.41 % of base)
         437 : 77184.dasm (18.75 % of base)
         423 : 20201.dasm (7.60 % of base)
         389 : 83032.dasm (8.80 % of base)
         385 : 56923.dasm (8.52 % of base)
         372 : 21047.dasm (25.22 % of base)
         368 : 76125.dasm (4.44 % of base)
         349 : 37879.dasm (6.52 % of base)
         324 : 59525.dasm (13.31 % of base)
         308 : 11471.dasm (4.01 % of base)
         285 : 48900.dasm (13.39 % of base)
         285 : 9835.dasm (13.39 % of base)
         268 : 74384.dasm (3.83 % of base)
         268 : 22422.dasm (3.83 % of base)

Top file improvements (bytes):
        -555 : 22799.dasm (-28.98 % of base)
        -413 : 59368.dasm (-35.27 % of base)
        -413 : 5923.dasm (-35.27 % of base)
        -413 : 83857.dasm (-35.27 % of base)
        -413 : 40296.dasm (-35.27 % of base)
        -401 : 41265.dasm (-34.24 % of base)
        -401 : 41389.dasm (-34.24 % of base)
        -401 : 59301.dasm (-34.24 % of base)
        -401 : 54253.dasm (-34.24 % of base)
        -401 : 6445.dasm (-34.24 % of base)
        -401 : 46981.dasm (-34.24 % of base)
        -401 : 53349.dasm (-34.24 % of base)
        -401 : 67525.dasm (-34.24 % of base)
        -401 : 67725.dasm (-34.24 % of base)
        -401 : 7541.dasm (-34.24 % of base)
        -401 : 15681.dasm (-34.24 % of base)
        -401 : 19121.dasm (-34.24 % of base)
        -401 : 55189.dasm (-34.24 % of base)
        -401 : 69805.dasm (-34.24 % of base)
        -401 : 71633.dasm (-34.24 % of base)

87 total files with Code Size differences (38 improved, 49 regressed), 20 unchanged.

Top method regressions (bytes):
        1699 (26.52 % of base) : 50515.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
         780 (24.90 % of base) : 57975.dasm - Microsoft.CodeAnalysis.PEModule:GetTargetAttributeSignatureIndex(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.CustomAttributeHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):int (Tier0-FullOpts)
         699 (36.75 % of base) : 57737.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (Tier0-FullOpts)
         475 (22.67 % of base) : 52687.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (Tier0-FullOpts)
         475 (22.67 % of base) : 17242.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (Tier0-FullOpts)
         443 (27.41 % of base) : 38767.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (Tier0-FullOpts)
         443 (27.41 % of base) : 7692.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (Tier0-FullOpts)
         437 (18.75 % of base) : 77184.dasm - System.Attribute:GetCustomAttributes(System.Reflection.MemberInfo,System.Type,ubyte):System.Attribute[] (Tier1)
         423 (7.60 % of base) : 20201.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier0-FullOpts)
         389 (8.80 % of base) : 83032.dasm - MessagePack.Formatters.DateTimeArrayFormatter:Serialize(byref,int,System.DateTime[],MessagePack.IFormatterResolver):int:this (Tier0-FullOpts)
         385 (8.52 % of base) : 56923.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier0-FullOpts)
         372 (25.22 % of base) : 21047.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:GetProperty(System.ReadOnlySpan`1[ubyte],byref,byref):System.Text.Json.Serialization.Metadata.JsonPropertyInfo:this (Tier0-FullOpts)
         368 (4.44 % of base) : 76125.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (Tier0-FullOpts)
         349 (6.52 % of base) : 37879.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier0-FullOpts)
         324 (13.31 % of base) : 59525.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier0-FullOpts)
         308 (4.01 % of base) : 11471.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (Tier0-FullOpts)
         285 (13.39 % of base) : 48900.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
         285 (13.39 % of base) : 9835.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
         268 (3.83 % of base) : 74384.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier0-FullOpts)
         268 (3.83 % of base) : 22422.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier0-FullOpts)

Top method improvements (bytes):
        -555 (-28.98 % of base) : 22799.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindMatch(int,System.ReadOnlySpan`1[ushort],int,System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+PerThreadData[ulong]):System.Text.RegularExpressions.Symbolic.SymbolicMatch:this (Tier1)
        -413 (-35.27 % of base) : 59368.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -413 (-35.27 % of base) : 5923.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -413 (-35.27 % of base) : 83857.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -413 (-35.27 % of base) : 40296.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 41265.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 41389.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 59301.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 54253.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 6445.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 46981.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 53349.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 67525.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 67725.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 7541.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 15681.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 19121.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 55189.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 69805.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 71633.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)

Top method regressions (percentages):
          34 (44.74 % of base) : 2668.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier0-FullOpts)
         156 (37.50 % of base) : 49404.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (Tier0-FullOpts)
         156 (37.50 % of base) : 16232.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (Tier0-FullOpts)
         699 (36.75 % of base) : 57737.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (Tier0-FullOpts)
          89 (30.58 % of base) : 59985.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanMultiLineComment(byref):ubyte:this (Tier0-FullOpts)
          33 (28.21 % of base) : 27254.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier0-FullOpts)
          33 (28.21 % of base) : 47957.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier0-FullOpts)
          32 (27.83 % of base) : 60495.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed(byref,int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
          16 (27.59 % of base) : 57246.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this (Tier1)
         161 (27.57 % of base) : 81668.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         443 (27.41 % of base) : 38767.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (Tier0-FullOpts)
         443 (27.41 % of base) : 7692.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (Tier0-FullOpts)
         156 (27.23 % of base) : 12088.dasm - System.Buffers.Tests.ReadOnlySequenceTests`1[ushort]:IterateGetPosition(System.Buffers.ReadOnlySequence`1[ushort]):int:this (Tier0-FullOpts)
          24 (26.97 % of base) : 37411.dasm - System.Linq.Enumerable+SelectArrayIterator`2[double,System.__Canon]:Fill(System.ReadOnlySpan`1[double],System.Span`1[System.__Canon],System.Func`2[double,System.__Canon]) (Tier0-FullOpts)
         154 (26.88 % of base) : 79477.dasm - System.Buffers.Tests.ReadOnlySequenceTests`1[ushort]:IterateGetPosition(System.Buffers.ReadOnlySequence`1[ushort]):int:this (Tier0-FullOpts)
        1699 (26.52 % of base) : 50515.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
         174 (26.40 % of base) : 81024.dasm - PerfLabTests.DelegatePerf:MulticastDelegateCombineInvoke():PerfLabTests.MultiDelegate:this (Tier0-FullOpts)
          58 (25.78 % of base) : 12954.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:FindBraceIndex(System.String,ushort,int,int):int (Tier0-FullOpts)
          86 (25.29 % of base) : 75105.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(ushort[],int,int,byref):int (Tier0-FullOpts)
          86 (25.29 % of base) : 27839.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(ushort[],int,int,byref):int (Tier0-FullOpts)

Top method improvements (percentages):
        -190 (-60.90 % of base) : 23597.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
        -190 (-60.90 % of base) : 79957.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
        -159 (-42.40 % of base) : 34247.dasm - System.Version:TryParseComponent(System.ReadOnlySpan`1[ushort],System.String,ubyte,byref):ubyte (Tier1)
        -159 (-42.40 % of base) : 38599.dasm - System.Version:TryParseComponent(System.ReadOnlySpan`1[ushort],System.String,ubyte,byref):ubyte (Tier1)
        -159 (-42.40 % of base) : 38860.dasm - System.Version:TryParseComponent(System.ReadOnlySpan`1[ushort],System.String,ubyte,byref):ubyte (Tier1)
        -159 (-42.40 % of base) : 32093.dasm - System.Version:TryParseComponent(System.ReadOnlySpan`1[ushort],System.String,ubyte,byref):ubyte (Tier1)
        -159 (-42.40 % of base) : 4534.dasm - System.Version:TryParseComponent(System.ReadOnlySpan`1[ushort],System.String,ubyte,byref):ubyte (Tier1)
        -159 (-42.40 % of base) : 5777.dasm - System.Version:TryParseComponent(System.ReadOnlySpan`1[ushort],System.String,ubyte,byref):ubyte (Tier1)
        -151 (-40.27 % of base) : 31426.dasm - System.Version:TryParseComponent(System.ReadOnlySpan`1[ushort],System.String,ubyte,byref):ubyte (Tier1)
        -151 (-40.27 % of base) : 7702.dasm - System.Version:TryParseComponent(System.ReadOnlySpan`1[ushort],System.String,ubyte,byref):ubyte (Tier1)
        -376 (-36.43 % of base) : 45176.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -413 (-35.27 % of base) : 59368.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -413 (-35.27 % of base) : 5923.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -413 (-35.27 % of base) : 83857.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -413 (-35.27 % of base) : 40296.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 41265.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 41389.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 59301.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 54253.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
        -401 (-34.24 % of base) : 6445.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (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: 12099955 (overridden on cmd)
Total bytes of diff: 12240928 (overridden on cmd)
Total bytes of delta: 140973 (1.17 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        1705 : 53268.dasm (26.64 % of base)
        1699 : 48227.dasm (26.52 % of base)
        1160 : 70615.dasm (8.37 % of base)
        1053 : 71387.dasm (33.47 % of base)
         959 : 48186.dasm (28.37 % of base)
         955 : 20953.dasm (24.56 % of base)
         955 : 5852.dasm (24.56 % of base)
         775 : 57496.dasm (24.74 % of base)
         763 : 47737.dasm (9.46 % of base)
         666 : 63998.dasm (15.91 % of base)
         622 : 4871.dasm (23.83 % of base)
         503 : 70090.dasm (13.90 % of base)
         498 : 21178.dasm (30.82 % of base)
         498 : 4218.dasm (30.82 % of base)
         485 : 21985.dasm (12.08 % of base)
         485 : 68694.dasm (12.08 % of base)
         470 : 71204.dasm (10.62 % of base)
         459 : 5543.dasm (8.39 % of base)
         453 : 68937.dasm (11.68 % of base)
         453 : 70824.dasm (11.68 % of base)

Top file improvements (bytes):
        -348 : 53205.dasm (-7.77 % of base)
        -312 : 65626.dasm (-3.52 % of base)
        -287 : 10351.dasm (-18.84 % of base)
        -264 : 31366.dasm (-27.47 % of base)
        -198 : 44450.dasm (-10.58 % of base)
        -185 : 70595.dasm (-1.74 % of base)
        -160 : 34100.dasm (-1.70 % of base)
        -160 : 9050.dasm (-1.70 % of base)
        -159 : 69688.dasm (-12.48 % of base)
        -129 : 54993.dasm (-1.54 % of base)
        -100 : 59685.dasm (-8.31 % of base)
         -97 : 17460.dasm (-6.46 % of base)
         -83 : 54796.dasm (-27.48 % of base)
         -83 : 45664.dasm (-27.48 % of base)
         -80 : 15013.dasm (-10.80 % of base)
         -79 : 45665.dasm (-33.91 % of base)
         -79 : 51714.dasm (-33.91 % of base)
         -78 : 32146.dasm (-8.61 % of base)
         -78 : 14626.dasm (-8.61 % of base)
         -71 : 101.dasm (-3.24 % of base)

81 total files with Code Size differences (38 improved, 43 regressed), 20 unchanged.

Top method regressions (bytes):
        1705 (26.64 % of base) : 53268.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
        1699 (26.52 % of base) : 48227.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
        1160 (8.37 % of base) : 70615.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        1053 (33.47 % of base) : 71387.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
         959 (28.37 % of base) : 48186.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
         955 (24.56 % of base) : 20953.dasm - System.DateTimeParse:Lex(int,byref,byref,byref,byref,byref,int):ubyte (Tier1)
         955 (24.56 % of base) : 5852.dasm - System.DateTimeParse:Lex(int,byref,byref,byref,byref,byref,int):ubyte (Tier1)
         775 (24.74 % of base) : 57496.dasm - Microsoft.CodeAnalysis.PEModule:GetTargetAttributeSignatureIndex(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.CustomAttributeHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):int (Tier0-FullOpts)
         763 (9.46 % of base) : 47737.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
         666 (15.91 % of base) : 63998.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindReturn(Microsoft.CodeAnalysis.CSharp.Syntax.ReturnStatementSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier1)
         622 (23.83 % of base) : 4871.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier0-FullOpts)
         503 (13.90 % of base) : 70090.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
         498 (30.82 % of base) : 21178.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (Tier0-FullOpts)
         498 (30.82 % of base) : 4218.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (Tier0-FullOpts)
         485 (12.08 % of base) : 21985.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         485 (12.08 % of base) : 68694.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         470 (10.62 % of base) : 71204.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
         459 (8.39 % of base) : 5543.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier0-FullOpts)
         453 (11.68 % of base) : 68937.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         453 (11.68 % of base) : 70824.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method improvements (bytes):
        -348 (-7.77 % of base) : 53205.dasm - System.Text.Json.JsonDocument:TryParseValue(byref,byref,ubyte,ubyte):ubyte (Tier1)
        -312 (-3.52 % of base) : 65626.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (Tier0-FullOpts)
        -287 (-18.84 % of base) : 10351.dasm - System.Text.Ascii:EqualsIgnoreCase[ubyte,ubyte,System.Text.Ascii+PlainLoader`1[ubyte]](byref,byref,uint):ubyte (Tier0-FullOpts)
        -264 (-27.47 % of base) : 31366.dasm - System.Text.Ascii:EqualsIgnoreCase[ushort,ushort,System.Text.Ascii+PlainLoader`1[ushort]](byref,byref,uint):ubyte (Tier0-FullOpts)
        -198 (-10.58 % of base) : 44450.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.LoginViewModel,int) (FullOpts)
        -185 (-1.74 % of base) : 70595.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier0-FullOpts)
        -160 (-1.70 % of base) : 34100.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
        -160 (-1.70 % of base) : 9050.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
        -159 (-12.48 % of base) : 69688.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (Tier0-FullOpts)
        -129 (-1.54 % of base) : 54993.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier0-FullOpts)
        -100 (-8.31 % of base) : 59685.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:IsAsRestrictive(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol,byref):ubyte (Tier0-FullOpts)
         -97 (-6.46 % of base) : 17460.dasm - System.Text.Ascii:NarrowUtf16ToAscii(uint,uint,uint):uint (Tier0-FullOpts)
         -83 (-27.48 % of base) : 54796.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (Tier1)
         -83 (-27.48 % of base) : 45664.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (Tier1)
         -80 (-10.80 % of base) : 15013.dasm - System.Text.Ascii:Equals[ubyte,ushort,System.Text.Ascii+WideningLoader](byref,byref,uint):ubyte (Tier0-FullOpts)
         -79 (-33.91 % of base) : 45665.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (Tier1)
         -79 (-33.91 % of base) : 51714.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (Tier1)
         -78 (-8.61 % of base) : 32146.dasm - System.IPv4AddressHelper:ParseCanonicalName(System.String,int,int,byref):System.String (Tier0-FullOpts)
         -78 (-8.61 % of base) : 14626.dasm - System.IPv4AddressHelper:ParseCanonicalName(System.String,int,int,byref):System.String (Tier0-FullOpts)
         -71 (-3.24 % of base) : 101.dasm - System.Text.Ascii:NarrowUtf16ToAscii(uint,uint,uint):uint (Tier0-FullOpts)

Top method regressions (percentages):
          34 (44.74 % of base) : 20491.dasm - System.Linq.Enumerable+SelectArrayIterator`2[int,System.__Canon]:Fill(System.ReadOnlySpan`1[int],System.Span`1[System.__Canon],System.Func`2[int,System.__Canon]) (Tier0-FullOpts)
          34 (44.74 % of base) : 2599.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier0-FullOpts)
         125 (43.55 % of base) : 19220.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
         125 (43.55 % of base) : 2038.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
         384 (43.15 % of base) : 62652.dasm - Microsoft.Cci.MetadataWriter:PopulateManifestResourceTableRows(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.BlobBuilder):this (Tier0-FullOpts)
          21 (40.38 % of base) : 21809.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
          21 (40.38 % of base) : 4624.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
         146 (38.83 % of base) : 11984.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
         146 (38.83 % of base) : 30070.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
         156 (37.50 % of base) : 29413.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (Tier0-FullOpts)
         156 (37.50 % of base) : 9339.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (Tier0-FullOpts)
         249 (36.94 % of base) : 63731.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (Tier1)
        1053 (33.47 % of base) : 71387.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
          24 (32.43 % of base) : 20984.dasm - System.Buffers.ProbabilisticMap:IndexOfAnySimpleLoop[System.Buffers.IndexOfAnyAsciiSearcher+Negate](byref,int,System.ReadOnlySpan`1[ushort]):int (Tier0-FullOpts)
         498 (30.82 % of base) : 21178.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (Tier0-FullOpts)
         498 (30.82 % of base) : 4218.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (Tier0-FullOpts)
          89 (30.58 % of base) : 65118.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanMultiLineComment(byref):ubyte:this (Tier0-FullOpts)
          58 (29.15 % of base) : 1680.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
          58 (29.15 % of base) : 19444.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
         186 (28.93 % of base) : 8136.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.Object[]):System.String (Tier0-FullOpts)

Top method improvements (percentages):
         -79 (-33.91 % of base) : 45665.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (Tier1)
         -79 (-33.91 % of base) : 51714.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (Tier1)
         -83 (-27.48 % of base) : 54796.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (Tier1)
         -83 (-27.48 % of base) : 45664.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (Tier1)
        -264 (-27.47 % of base) : 31366.dasm - System.Text.Ascii:EqualsIgnoreCase[ushort,ushort,System.Text.Ascii+PlainLoader`1[ushort]](byref,byref,uint):ubyte (Tier0-FullOpts)
          -7 (-22.58 % of base) : 70601.dasm - Jil.Common.Utils+<>c__DisplayClass9_0:<IdealMemberOrderForWriting>b__6(System.Reflection.FieldInfo):int:this (Tier1)
          -7 (-21.21 % of base) : 44361.dasm - MessagePack.Internal.BuiltinResolverGetFormatterHelper:GetFormatter(System.Type):System.Object (Tier1)
          -7 (-21.21 % of base) : 5632.dasm - Utf8Json.Resolvers.BuiltinResolver+BuiltinResolverGetFormatterHelper:GetFormatter(System.Type):System.Object (Tier1)
          -7 (-21.21 % of base) : 69824.dasm - Utf8Json.Resolvers.BuiltinResolver+BuiltinResolverGetFormatterHelper:GetFormatter(System.Type):System.Object (Tier1)
          -7 (-20.59 % of base) : 58853.dasm - Microsoft.CodeAnalysis.SpecialTypes:GetTypeFromMetadataName(System.String):byte (Tier1)
        -287 (-18.84 % of base) : 10351.dasm - System.Text.Ascii:EqualsIgnoreCase[ubyte,ubyte,System.Text.Ascii+PlainLoader`1[ubyte]](byref,byref,uint):ubyte (Tier0-FullOpts)
         -39 (-18.22 % of base) : 62541.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:Microsoft.Cci.ITypeMemberReference.GetContainingType(Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.ITypeReference:this (Tier1)
         -11 (-16.92 % of base) : 21817.dasm - System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (Tier1)
         -11 (-16.92 % of base) : 4617.dasm - System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (Tier1)
         -35 (-16.75 % of base) : 4858.dasm - System.Reflection.Emit.DynamicILGenerator:GetCallableMethod(System.Reflection.RuntimeModule,System.Reflection.Emit.DynamicMethod):this (Tier1)
         -35 (-16.75 % of base) : 22778.dasm - System.Reflection.Emit.DynamicILGenerator:GetCallableMethod(System.Reflection.RuntimeModule,System.Reflection.Emit.DynamicMethod):this (Tier1)
         -16 (-15.24 % of base) : 47011.dasm - System.Text.Tests.Perf_StringBuilder:Append_Char_Capacity(int):System.Text.StringBuilder:this (Tier0-FullOpts)
         -21 (-14.69 % of base) : 56340.dasm - Roslyn.Utilities.StringTable:AddSharedEntry(int,System.String):this (Tier0-FullOpts)
         -50 (-13.97 % of base) : 36066.dasm - ProtoBuf.Internal.DynamicStub:<SlowGet>g__ResolveProxies|9_1(System.Type):System.Type (Tier0-FullOpts)
         -24 (-13.95 % of base) : 47573.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:Initialize():this (Tier0-FullOpts)


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: 210972421 (overridden on cmd)
Total bytes of diff: 211198677 (overridden on cmd)
Total bytes of delta: 226256 (0.11 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
        4381 : 236290.dasm (3.72 % of base)
        4381 : 229771.dasm (3.72 % of base)
        4381 : 230424.dasm (3.72 % of base)
        4381 : 236930.dasm (3.72 % of base)
        4341 : 229764.dasm (3.90 % of base)
        4341 : 236283.dasm (3.90 % of base)
        4341 : 230419.dasm (3.90 % of base)
        4341 : 236925.dasm (3.90 % of base)
        2424 : 303520.dasm (15.37 % of base)
        2424 : 400518.dasm (15.37 % of base)
        1647 : 20930.dasm (29.39 % of base)
        1619 : 306959.dasm (32.75 % of base)
        1169 : 244776.dasm (14.13 % of base)
        1062 : 164247.dasm (31.70 % of base)
        1061 : 308843.dasm (12.61 % of base)
        1008 : 5162.dasm (34.12 % of base)
         984 : 307482.dasm (11.70 % of base)
         942 : 229556.dasm (0.63 % of base)
         942 : 236082.dasm (0.63 % of base)
         942 : 236087.dasm (0.63 % of base)

Top file improvements (bytes):
       -2256 : 236825.dasm (-29.54 % of base)
       -2256 : 230318.dasm (-29.54 % of base)
       -2017 : 230414.dasm (-1.85 % of base)
       -2017 : 236920.dasm (-1.85 % of base)
       -1615 : 230409.dasm (-1.59 % of base)
       -1615 : 236915.dasm (-1.59 % of base)
       -1443 : 230829.dasm (-7.43 % of base)
       -1331 : 290560.dasm (-23.24 % of base)
        -978 : 236276.dasm (-0.96 % of base)
        -978 : 229757.dasm (-0.96 % of base)
        -942 : 165955.dasm (-6.18 % of base)
        -700 : 229750.dasm (-0.76 % of base)
        -700 : 236269.dasm (-0.76 % of base)
        -624 : 229216.dasm (-0.89 % of base)
        -575 : 115307.dasm (-8.11 % of base)
        -567 : 115311.dasm (-8.01 % of base)
        -567 : 233445.dasm (-0.81 % of base)
        -480 : 287864.dasm (-5.32 % of base)
        -444 : 229139.dasm (-14.28 % of base)
        -423 : 236821.dasm (-12.74 % of base)

88 total files with Code Size differences (45 improved, 43 regressed), 20 unchanged.

Top method regressions (bytes):
        4381 (3.72 % of base) : 236290.dasm - i8rem:TestEntryPoint():int (FullOpts)
        4381 (3.72 % of base) : 229771.dasm - i8rem:TestEntryPoint():int (FullOpts)
        4381 (3.72 % of base) : 230424.dasm - u8rem:TestEntryPoint():int (FullOpts)
        4381 (3.72 % of base) : 236930.dasm - u8rem:TestEntryPoint():int (FullOpts)
        4341 (3.90 % of base) : 229764.dasm - i8div:TestEntryPoint():int (FullOpts)
        4341 (3.90 % of base) : 236283.dasm - i8div:TestEntryPoint():int (FullOpts)
        4341 (3.90 % of base) : 230419.dasm - u8div:TestEntryPoint():int (FullOpts)
        4341 (3.90 % of base) : 236925.dasm - u8div:TestEntryPoint():int (FullOpts)
        2424 (15.37 % of base) : 303520.dasm - CseTest.Test_Main:TestEntryPoint():int (FullOpts)
        2424 (15.37 % of base) : 400518.dasm - CseTest.Test_Main:TestEntryPoint():int (Tier0-FullOpts)
        1647 (29.39 % of base) : 20930.dasm - Program:Main():int (FullOpts)
        1619 (32.75 % of base) : 306959.dasm - Program:Main():int (FullOpts)
        1169 (14.13 % of base) : 244776.dasm - _rem:main():int (FullOpts)
        1062 (31.70 % of base) : 164247.dasm - add_r4._add:main():int (FullOpts)
        1061 (12.61 % of base) : 308843.dasm - Internal.JitInterface.InstructionSetParser:LookupPlatformIntrinsicInstructionSet(int,Internal.TypeSystem.TypeDesc):int (FullOpts)
        1008 (34.12 % of base) : 5162.dasm - testout1:Sub_Funclet_0():int (FullOpts)
         984 (11.70 % of base) : 307482.dasm - R2RTest.R2RTestRootCommand:.ctor():this (FullOpts)
         942 (0.63 % of base) : 229556.dasm - decimaldiv:TestEntryPoint():int (FullOpts)
         942 (0.63 % of base) : 236082.dasm - decimaldiv:TestEntryPoint():int (FullOpts)
         942 (0.63 % of base) : 236087.dasm - decimalrem:TestEntryPoint():int (FullOpts)

Top method improvements (bytes):
       -2256 (-29.54 % of base) : 236825.dasm - Test_throwinfinally_50_cs.Class1:foo(int) (FullOpts)
       -2256 (-29.54 % of base) : 230318.dasm - Test_throwinfinally_50_cs.Class1:foo(int) (FullOpts)
       -2017 (-1.85 % of base) : 230414.dasm - u4rem:TestEntryPoint():int (FullOpts)
       -2017 (-1.85 % of base) : 236920.dasm - u4rem:TestEntryPoint():int (FullOpts)
       -1615 (-1.59 % of base) : 230409.dasm - u4div:TestEntryPoint():int (FullOpts)
       -1615 (-1.59 % of base) : 236915.dasm - u4div:TestEntryPoint():int (FullOpts)
       -1443 (-7.43 % of base) : 230829.dasm - LongMulOn32BitTest:Main():int (FullOpts)
       -1331 (-23.24 % of base) : 290560.dasm - HFATest.TestCase:TestEntryPoint():int (FullOpts)
        -978 (-0.96 % of base) : 236276.dasm - i4rem:TestEntryPoint():int (FullOpts)
        -978 (-0.96 % of base) : 229757.dasm - i4rem:TestEntryPoint():int (FullOpts)
        -942 (-6.18 % of base) : 165955.dasm - ldloca_s_r8:test_float64():int (FullOpts)
        -700 (-0.76 % of base) : 229750.dasm - i4div:TestEntryPoint():int (FullOpts)
        -700 (-0.76 % of base) : 236269.dasm - i4div:TestEntryPoint():int (FullOpts)
        -624 (-0.89 % of base) : 229216.dasm - Test_1000w1d.testout1:Func_0():int (FullOpts)
        -575 (-8.11 % of base) : 115307.dasm - IntelHardwareIntrinsicTest._Avx512F.Program:UnpackHigh() (FullOpts)
        -567 (-8.01 % of base) : 115311.dasm - IntelHardwareIntrinsicTest._Avx512F.Program:UnpackLow() (FullOpts)
        -567 (-0.81 % of base) : 233445.dasm - Test_1000w1d.testout1:Func_0():int (FullOpts)
        -480 (-5.32 % of base) : 287864.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
        -444 (-14.28 % of base) : 229139.dasm - Test_10w5d.testout1:Func_0_1_3_6_1():float (FullOpts)
        -423 (-12.74 % of base) : 236821.dasm - Test_throwinfinallyrecursive_20_cs.Class1:foo(int) (FullOpts)

Top method regressions (percentages):
         155 (84.24 % of base) : 309057.dasm - Internal.IL.Stubs.ILCodeStream:EmitLdc(int):this (FullOpts)
          45 (54.88 % of base) : 164348.dasm - ble_u4.ble_un:main():int (FullOpts)
          45 (54.88 % of base) : 341182.dasm - ble_u4.ble_un:main():int (Tier0-FullOpts)
          75 (52.45 % of base) : 185339.dasm - MainApp:TestEntryPoint():int (FullOpts)
         130 (47.10 % of base) : 289253.dasm - NormalException:TestEntryPoint():int (FullOpts)
          78 (46.71 % of base) : 164428.dasm - ceq_i4._ceq:main():int (FullOpts)
          34 (44.74 % of base) : 189703.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (FullOpts)
          34 (44.74 % of base) : 171003.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (FullOpts)
          34 (44.74 % of base) : 344267.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier0-FullOpts)
          40 (44.44 % of base) : 309018.dasm - Internal.IL.Stubs.ILCodeStream:Emit(int):this (FullOpts)
         391 (43.83 % of base) : 190940.dasm - Microsoft.Cci.MetadataWriter:PopulateManifestResourceTableRows(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.BlobBuilder):this (FullOpts)
          85 (42.71 % of base) : 164465.dasm - clt_i4._clt:main():int (FullOpts)
          45 (41.28 % of base) : 399675.dasm - System.Globalization.CompareInfo:IsPrefix(System.String,System.String,int):ubyte:this (Instrumented Tier1)
         792 (41.14 % of base) : 243680.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
         111 (41.11 % of base) : 193717.dasm - System.Xml.XmlConverter:ToChars(double,ubyte[],int):int (FullOpts)
          21 (40.38 % of base) : 169939.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
          21 (40.38 % of base) : 188843.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
           8 (40.00 % of base) : 320604.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):ubyte:this (Tier0-FullOpts)
           8 (40.00 % of base) : 62964.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetByte:HasAllBitsSet(ubyte):ubyte:this (FullOpts)
           8 (40.00 % of base) : 62988.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):ubyte:this (FullOpts)

Top method improvements (percentages):
        -241 (-68.86 % of base) : 319020.dasm - System.Number:Int32ToDecStr(int):System.String (Instrumented Tier1)
         -55 (-62.50 % of base) : 229352.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_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
         -55 (-62.50 % of base) : 233566.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_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
         -43 (-60.56 % of base) : 233556.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) : 229267.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)
         -18 (-52.94 % of base) : 247456.dasm - ILGEN_0x6a2f58fb:Main():int (FullOpts)
         -29 (-50.88 % of base) : 233496.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)
          -6 (-42.86 % of base) : 241023.dasm - Runtime_40607.Program:SignExtendsWrittenValue(byte):int (FullOpts)
          -6 (-42.86 % of base) : 371521.dasm - Runtime_40607.Program:SignExtendsWrittenValue(byte):int (Tier0-FullOpts)
          -6 (-42.86 % of base) : 241027.dasm - Runtime_40607.Program:SignExtendsWrittenValue(short):int (FullOpts)
          -6 (-42.86 % of base) : 371525.dasm - Runtime_40607.Program:SignExtendsWrittenValue(short):int (Tier0-FullOpts)
          -6 (-42.86 % of base) : 241026.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(ubyte):int (FullOpts)
          -6 (-42.86 % of base) : 371524.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(ubyte):int (Tier0-FullOpts)
          -6 (-42.86 % of base) : 241030.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(ushort):int (FullOpts)
          -6 (-42.86 % of base) : 371528.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(ushort):int (Tier0-FullOpts)
        -357 (-41.27 % of base) : 344390.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
        -342 (-40.24 % of base) : 405674.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
        -342 (-40.24 % of base) : 405896.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
          -6 (-40.00 % of base) : 241029.dasm - Runtime_40607.Program:SignExtendsWrittenValue(ushort):int (FullOpts)
          -6 (-40.00 % of base) : 371527.dasm - Runtime_40607.Program:SignExtendsWrittenValue(ushort):int (Tier0-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: 29314718 (overridden on cmd)
Total bytes of diff: 29574560 (overridden on cmd)
Total bytes of delta: 259842 (0.89 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        2786 : 117734.dasm (4.13 % of base)
        2593 : 214859.dasm (64.20 % of base)
        2308 : 25157.dasm (3.87 % of base)
        1181 : 213428.dasm (127.40 % of base)
        1112 : 119920.dasm (4.03 % of base)
         873 : 72172.dasm (37.04 % of base)
         812 : 118003.dasm (4.32 % of base)
         595 : 72173.dasm (38.97 % of base)
         585 : 224410.dasm (116.53 % of base)
         582 : 191303.dasm (22.74 % of base)
         561 : 20507.dasm (154.55 % of base)
         495 : 49183.dasm (14.01 % of base)
         495 : 88851.dasm (14.07 % of base)
         469 : 116804.dasm (2.57 % of base)
         460 : 221549.dasm (24.17 % of base)
         456 : 64921.dasm (7.61 % of base)
         453 : 214502.dasm (6.63 % of base)
         445 : 264278.dasm (23.80 % of base)
         439 : 72186.dasm (15.70 % of base)
         428 : 235674.dasm (7.94 % of base)

Top file improvements (bytes):
        -405 : 71291.dasm (-11.84 % of base)
        -334 : 32843.dasm (-7.89 % of base)
        -308 : 208760.dasm (-6.56 % of base)
        -265 : 70709.dasm (-9.67 % of base)
        -265 : 251713.dasm (-9.67 % of base)
        -253 : 206369.dasm (-9.18 % of base)
        -251 : 192849.dasm (-15.59 % of base)
        -222 : 71059.dasm (-6.36 % of base)
        -222 : 112949.dasm (-7.89 % of base)
        -222 : 71101.dasm (-6.36 % of base)
        -220 : 72103.dasm (-23.13 % of base)
        -198 : 15484.dasm (-14.15 % of base)
        -185 : 296.dasm (-41.29 % of base)
        -180 : 149320.dasm (-5.54 % of base)
        -175 : 71298.dasm (-9.14 % of base)
        -150 : 224518.dasm (-11.78 % of base)
        -142 : 256070.dasm (-7.05 % of base)
        -141 : 247214.dasm (-8.14 % of base)
        -139 : 113723.dasm (-8.47 % of base)
        -132 : 250951.dasm (-12.18 % of base)

79 total files with Code Size differences (38 improved, 41 regressed), 20 unchanged.

Top method regressions (bytes):
        2786 (4.13 % of base) : 117734.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServerTraceEventParser:EnumerateTemplates(System.Func`3[System.String,System.String,int],System.Action`1[Microsoft.Diagnostics.Tracing.TraceEvent]):this (FullOpts)
        2593 (64.20 % of base) : 214859.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
        2308 (3.87 % of base) : 25157.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
        1181 (127.40 % of base) : 213428.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
        1112 (4.03 % of base) : 119920.dasm - Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser:EnumerateTemplates(System.Func`3[System.String,System.String,int],System.Action`1[Microsoft.Diagnostics.Tracing.TraceEvent]):this (FullOpts)
         873 (37.04 % of base) : 72172.dasm - Microsoft.VisualBasic.CompilerServices.VB6File:PutArrayData(System.Array,System.Type,int,int,int):this (FullOpts)
         812 (4.32 % of base) : 118003.dasm - Microsoft.Diagnostics.Tracing.Parsers.ClrPrivateTraceEventParser:EnumerateTemplates(System.Func`3[System.String,System.String,int],System.Action`1[Microsoft.Diagnostics.Tracing.TraceEvent]):this (FullOpts)
         595 (38.97 % of base) : 72173.dasm - Microsoft.VisualBasic.CompilerServices.VB6File:GetArrayData(System.Array,System.Type,int,int,int):this (FullOpts)
         585 (116.53 % of base) : 224410.dasm - System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int (FullOpts)
         582 (22.74 % of base) : 191303.dasm - System.Uri:ParseRemaining():this (FullOpts)
         561 (154.55 % of base) : 20507.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
         495 (14.01 % of base) : 49183.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
         495 (14.07 % of base) : 88851.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
         469 (2.57 % of base) : 116804.dasm - Microsoft.Diagnostics.Tracing.Parsers.MicrosoftAntimalwareEngineTraceEventParser:EnumerateTemplates(System.Func`3[System.String,System.String,int],System.Action`1[Microsoft.Diagnostics.Tracing.TraceEvent]):this (FullOpts)
         460 (24.17 % of base) : 221549.dasm - System.Net.HttpKnownHeaderNames:TryGetHeaderName[System.__Canon](System.__Canon,int,int,System.Func`3[System.__Canon,int,ushort],System.Func`5[System.String,System.__Canon,int,int,ubyte],byref):ubyte (FullOpts)
         456 (7.61 % of base) : 64921.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor`2[System.__Canon,System.__Canon]:VisitInternal(Microsoft.CodeAnalysis.CSharp.BoundNode,System.__Canon):System.__Canon:this (FullOpts)
         453 (6.63 % of base) : 214502.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         445 (23.80 % of base) : 264278.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
         439 (15.70 % of base) : 72186.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMostSpecific(System.Reflection.MethodBase,System.Reflection.MethodBase,int[],System.Object[],ubyte,int,int,System.Object[]):int:this (FullOpts)
         428 (7.94 % of base) : 235674.dasm - System.Net.HttpListener:HandleAuthentication(System.Net.HttpListenerSession,System.Net.RequestContextBase,byref):System.Net.HttpListenerContext:this (FullOpts)

Top method improvements (bytes):
        -405 (-11.84 % of base) : 71291.dasm - Microsoft.VisualBasic.CompilerServices.ObjectType:ObjTst(System.Object,System.Object,ubyte):int (FullOpts)
        -334 (-7.89 % of base) : 32843.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:CheckValEscape(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,uint,uint,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
        -308 (-6.56 % of base) : 208760.dasm - System.DirectoryServices.DirectorySearcher:SetSearchPreferences(System.DirectoryServices.UnsafeNativeMethods+IDirectorySearch,ubyte):this (FullOpts)
        -265 (-9.67 % of base) : 70709.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
        -265 (-9.67 % of base) : 251713.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
        -253 (-9.18 % of base) : 206369.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
        -251 (-15.59 % of base) : 192849.dasm - System.IO.Hashing.XxHash3:HashLength17To128(uint,uint,ulong):ulong (FullOpts)
        -222 (-6.36 % of base) : 71101.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
        -222 (-6.36 % of base) : 71059.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
        -222 (-7.89 % of base) : 112949.dasm - System.Xml.Serialization.XmlSerializationWriterCodeGen:WriteArrayItems(System.Xml.Serialization.ElementAccessor[],System.Xml.Serialization.TextAccessor,System.Xml.Serialization.ChoiceIdentifierAccessor,System.Xml.Serialization.TypeDesc,System.String,System.String):this (FullOpts)
        -220 (-23.13 % of base) : 72103.dasm - Microsoft.VisualBasic.CompilerServices.StringType:AsteriskSkip(System.String,System.String,int,int,System.Globalization.CompareInfo):int (FullOpts)
        -198 (-14.15 % of base) : 15484.dasm - System.Decimal+DecCalc:GetHashCode(byref):int (FullOpts)
        -185 (-41.29 % of base) : 296.dasm - System.Decimal:Clamp(System.Decimal,System.Decimal,System.Decimal):System.Decimal (FullOpts)
        -180 (-5.54 % of base) : 149320.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindArrayBounds(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Binder+DimensionSize[],ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression]:this (FullOpts)
        -175 (-9.14 % of base) : 71298.dasm - Microsoft.VisualBasic.CompilerServices.ObjectType:AddObj(System.Object,System.Object):System.Object (FullOpts)
        -150 (-11.78 % of base) : 224518.dasm - System.Security.Cryptography.CapiHelper:ToDSAParameters(ubyte[],ubyte,ubyte[]):System.Security.Cryptography.DSAParameters (FullOpts)
        -142 (-7.05 % of base) : 256070.dasm - Internal.Pgo.PgoProcessor:<Merge>g__MergeInSchemaElem|9_0[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[Internal.Pgo.PgoSchemaElem,Internal.Pgo.PgoSchemaElem],Internal.Pgo.PgoSchemaElem) (FullOpts)
        -141 (-8.14 % of base) : 247214.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:SetParameterAttributes(Microsoft.CSharp.RuntimeBinder.Semantics.MethodOrPropertySymbol,System.Reflection.ParameterInfo[],int) (FullOpts)
        -139 (-8.47 % of base) : 113723.dasm - System.Xml.Xsl.Xslt.QilGenerator:CompileInstructions(System.Collections.Generic.IList`1[System.Xml.Xsl.Xslt.XslNode],int,System.Xml.Xsl.Qil.QilList):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
        -132 (-12.18 % of base) : 250951.dasm - System.Runtime.InteropServices.Marshalling.ComVariantMarshaller:ConvertToUnmanaged(System.Object):System.Runtime.InteropServices.Marshalling.ComVariant (FullOpts)

Top method regressions (percentages):
          21 (210.00 % of base) : 168102.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementKeyword(ushort):ubyte (FullOpts)
          21 (210.00 % of base) : 168103.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDelegateStatementKeyword(ushort):ubyte (FullOpts)
          21 (210.00 % of base) : 168104.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
          21 (210.00 % of base) : 168105.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsMethodStatementKeyword(ushort):ubyte (FullOpts)
         561 (154.55 % of base) : 20507.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
        1181 (127.40 % of base) : 213428.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
         585 (116.53 % of base) : 224410.dasm - System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int (FullOpts)
          26 (108.33 % of base) : 162509.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
          26 (108.33 % of base) : 162515.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
         344 (66.54 % of base) : 88828.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
         344 (66.54 % of base) : 49156.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
        2593 (64.20 % of base) : 214859.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
          22 (62.86 % of base) : 254267.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.ReadOnlySpan`1[uint],uint):uint (FullOpts)
         244 (59.51 % of base) : 22053.dasm - System.Array+SorterObjectArray:PickPivotAndPartition(int,int):int:this (FullOpts)
         121 (58.45 % of base) : 154853.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess:Update(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.ConstantFieldsInProgress,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess:this (FullOpts)
          19 (57.58 % of base) : 70840.dasm - System.Data.ExpressionNode:IsSigned(int):ubyte (FullOpts)
          56 (47.86 % of base) : 155624.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundMidResult:Update(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundMidResult:this (FullOpts)
          56 (47.86 % of base) : 155154.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundTernaryConditionalExpression:Update(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundTernaryConditionalExpression:this (FullOpts)
          56 (47.86 % of base) : 155544.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundUserDefinedShortCircuitingOperator:Update(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundRValuePlaceholder,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundUserDefinedBinaryOperator,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundUserDefinedShortCircuitingOperator:this (FullOpts)
          56 (47.86 % of base) : 157548.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundXmlDeclaration:Update(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundXmlDeclaration:this (FullOpts)

Top method improvements (percentages):
        -185 (-41.29 % of base) : 296.dasm - System.Decimal:Clamp(System.Decimal,System.Decimal,System.Decimal):System.Decimal (FullOpts)
         -21 (-27.27 % of base) : 71595.dasm - Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,int[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
         -18 (-25.00 % of base) : 71594.dasm - Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,System.String[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
         -16 (-25.00 % of base) : 257208.dasm - System.Linq.Expressions.CatchBlock:Update(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression):System.Linq.Expressions.CatchBlock:this (FullOpts)
         -56 (-24.89 % of base) : 22197.dasm - System.TimeZoneInfo:GetLocalTimeZoneFromWin32Data(byref,ubyte):System.TimeZoneInfo (FullOpts)
         -21 (-24.71 % of base) : 202739.dasm - System.Speech.Internal.SrgsCompiler.Rule:System.IComparable<System.Speech.Internal.SrgsCompiler.Rule>.CompareTo(System.Speech.Internal.SrgsCompiler.Rule):int:this (FullOpts)
         -20 (-24.69 % of base) : 199450.dasm - System.Text.Json.Serialization.Converters.SingleConverter:WriteNumberWithCustomHandling(System.Text.Json.Utf8JsonWriter,float,int):this (FullOpts)
         -22 (-23.16 % of base) : 235889.dasm - System.Net.WebSockets.WebSocketBuffer:UnwrapWebSocketBuffer(Interop+WebSocket+Buffer,uint,byref,byref) (FullOpts)
        -220 (-23.13 % of base) : 72103.dasm - Microsoft.VisualBasic.CompilerServices.StringType:AsteriskSkip(System.String,System.String,int,int,System.Globalization.CompareInfo):int (FullOpts)
         -95 (-21.64 % of base) : 22079.dasm - System.DateTimeParse:ProcessTerminalState(int,byref,byref,byref,System.Globalization.DateTimeFormatInfo):ubyte (FullOpts)
          -8 (-21.62 % of base) : 205046.dasm - System.Linq.ImmutableArrayExtensions:ElementAtOrDefault[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):System.__Canon (FullOpts)
         -12 (-20.69 % of base) : 257367.dasm - System.Linq.Expressions.LoopExpression:Update(System.Linq.Expressions.LabelTarget,System.Linq.Expressions.LabelTarget,System.Linq.Expressions.Expression):System.Linq.Expressions.LoopExpression:this (FullOpts)
         -24 (-19.51 % of base) : 230215.dasm - System.Xml.Linq.XObject:NotifyChanged(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (FullOpts)
         -24 (-19.51 % of base) : 230216.dasm - System.Xml.Linq.XObject:NotifyChanging(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (FullOpts)
          -6 (-18.75 % of base) : 262374.dasm - System.Management.MarshalWbemObject:MarshalManagedToNative(System.Object):int:this (FullOpts)
         -65 (-18.21 % of base) : 217513.dasm - System.Net.Http.FailedProxyCache:CleanupHelper():this (FullOpts)
          -8 (-18.18 % of base) : 249181.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedList`1[System.__Canon]:GetRange(int,int):Microsoft.CodeAnalysis.Collections.ImmutableSegmentedList`1[System.__Canon]:this (FullOpts)
          -8 (-18.18 % of base) : 145442.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedList`1[System.__Canon]:GetRange(int,int):Microsoft.CodeAnalysis.Collections.ImmutableSegmentedList`1[System.__Canon]:this (FullOpts)
          -8 (-18.18 % of base) : 186851.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedList`1[System.__Canon]:GetRange(int,int):Microsoft.CodeAnalysis.Collections.ImmutableSegmentedList`1[System.__Canon]:this (FullOpts)
         -14 (-18.18 % of base) : 210565.dasm - System.ComponentModel.DoubleConverter:ToString(System.Object,System.Globalization.NumberFormatInfo):System.String:this (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: 39429027 (overridden on cmd)
Total bytes of diff: 39931457 (overridden on cmd)
Total bytes of delta: 502430 (1.27 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        3006 : 81684.dasm (89.78 % of base)
        1474 : 91287.dasm (45.69 % of base)
        1446 : 185310.dasm (56.97 % of base)
        1287 : 117843.dasm (37.04 % of base)
        1196 : 274710.dasm (65.53 % of base)
        1092 : 81158.dasm (16.15 % of base)
        1072 : 99497.dasm (24.88 % of base)
        1062 : 185161.dasm (36.41 % of base)
         997 : 301797.dasm (75.82 % of base)
         984 : 208130.dasm (11.70 % of base)
         900 : 224044.dasm (10.74 % of base)
         862 : 16701.dasm (8.90 % of base)
         849 : 179222.dasm (8.58 % of base)
         823 : 201279.dasm (50.06 % of base)
         792 : 171982.dasm (41.14 % of base)
         788 : 64931.dasm (24.08 % of base)
         766 : 177386.dasm (21.85 % of base)
         753 : 239984.dasm (35.29 % of base)
         743 : 149395.dasm (23.46 % of base)
         743 : 110908.dasm (23.46 % of base)

Top file improvements (bytes):
       -1382 : 33687.dasm (-11.84 % of base)
       -1382 : 33691.dasm (-12.32 % of base)
       -1382 : 33703.dasm (-11.61 % of base)
       -1382 : 33678.dasm (-12.32 % of base)
       -1382 : 33683.dasm (-11.84 % of base)
        -784 : 76785.dasm (-21.19 % of base)
        -699 : 83907.dasm (-8.22 % of base)
        -598 : 229577.dasm (-18.65 % of base)
        -575 : 177707.dasm (-17.35 % of base)
        -536 : 228178.dasm (-16.86 % of base)
        -536 : 75298.dasm (-16.86 % of base)
        -531 : 83887.dasm (-6.51 % of base)
        -531 : 83891.dasm (-6.51 % of base)
        -511 : 225871.dasm (-13.27 % of base)
        -453 : 209614.dasm (-11.72 % of base)
        -453 : 180875.dasm (-4.86 % of base)
        -440 : 84354.dasm (-7.67 % of base)
        -405 : 283624.dasm (-8.92 % of base)
        -402 : 241993.dasm (-10.02 % of base)
        -352 : 83882.dasm (-4.62 % of base)

83 total files with Code Size differences (41 improved, 42 regressed), 20 unchanged.

Top method regressions (bytes):
        3006 (89.78 % of base) : 81684.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertySymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyBlockSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertySymbol (FullOpts)
        1474 (45.69 % of base) : 91287.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.DeclarationContext:ProcessSyntax(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext:this (FullOpts)
        1446 (56.97 % of base) : 185310.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:ToString():System.String:this (FullOpts)
        1287 (37.04 % of base) : 117843.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:PopulateEncMapTableRows(System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Generic.List`1[int],System.Collections.Generic.List`1[int]):this (FullOpts)
        1196 (65.53 % of base) : 274710.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (FullOpts)
        1092 (16.15 % of base) : 81158.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GenerateVarianceDiagnosticsForTypeRecursively(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,short,int,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+VarianceDiagnosticsTargetTypeParameter,int,byref):this (FullOpts)
        1072 (24.88 % of base) : 99497.dasm - Microsoft.CodeAnalysis.VisualBasic.IteratorRewriter:EnsureAllSymbolsAndSignature():ubyte:this (FullOpts)
        1062 (36.41 % of base) : 185161.dasm - ILCompiler.Reflection.ReadyToRun.x86.InfoHdrSmall:ToString():System.String:this (FullOpts)
         997 (75.82 % of base) : 301797.dasm - System.Diagnostics.FileVersionInfo:ToString():System.String:this (FullOpts)
         984 (11.70 % of base) : 208130.dasm - R2RTest.R2RTestRootCommand:.ctor():this (FullOpts)
         900 (10.74 % of base) : 224044.dasm - System.ComponentModel.CultureInfoConverter+CultureInfoMapper:CreateMap():System.Collections.Generic.Dictionary`2[System.String,System.String] (FullOpts)
         862 (8.90 % of base) : 16701.dasm - Microsoft.FSharp.Linq.QueryModule:TransInner(int,ubyte,Microsoft.FSharp.Quotations.FSharpExpr):System.Tuple`2[Microsoft.FSharp.Linq.QueryModule+TransInnerResult,Microsoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription] (FullOpts)
         849 (8.58 % of base) : 179222.dasm - Internal.JitInterface.InstructionSetParser:LookupPlatformIntrinsicInstructionSet(int,Internal.TypeSystem.TypeDesc):int (FullOpts)
         823 (50.06 % of base) : 201279.dasm - Microsoft.Build.Logging.BuildEventArgsReader:ReadBuildEventArgsFields(ubyte):Microsoft.Build.Logging.BuildEventArgsFields:this (FullOpts)
         792 (41.14 % of base) : 171982.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
         788 (24.08 % of base) : 64931.dasm - Microsoft.CodeAnalysis.CSharp.AsyncRewriter+AsyncIteratorRewriter:VerifyPresenceOfRequiredAPIs(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         766 (21.85 % of base) : 177386.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteMemberElementsIf(System.Xml.Serialization.XmlSerializationReaderCodeGen+Member[],System.Xml.Serialization.XmlSerializationReaderCodeGen+Member,System.String,System.String):this (FullOpts)
         753 (35.29 % of base) : 239984.dasm - System.Linq.Expressions.Expression:Switch(System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.SwitchCase]):System.Linq.Expressions.SwitchExpression (FullOpts)
         743 (23.46 % of base) : 149395.dasm - Microsoft.CodeAnalysis.PEModule:GetTargetAttributeSignatureIndex(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.CustomAttributeHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):int (FullOpts)
         743 (23.46 % of base) : 110908.dasm - Microsoft.CodeAnalysis.PEModule:GetTargetAttributeSignatureIndex(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.CustomAttributeHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):int (FullOpts)

Top method improvements (bytes):
       -1382 (-12.32 % of base) : 33691.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor`2[int,System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.CSharp.BoundNode,int):System.Nullable`1[int]:this (FullOpts)
       -1382 (-11.61 % of base) : 33703.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor`2[long,System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.CSharp.BoundNode,long):System.Nullable`1[int]:this (FullOpts)
       -1382 (-11.84 % of base) : 33687.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor`2[short,System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.CSharp.BoundNode,short):System.Nullable`1[int]:this (FullOpts)
       -1382 (-12.32 % of base) : 33678.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor`2[System.__Canon,System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.CSharp.BoundNode,System.__Canon):System.Nullable`1[int]:this (FullOpts)
       -1382 (-11.84 % of base) : 33683.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor`2[ubyte,System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.CSharp.BoundNode,ubyte):System.Nullable`1[int]:this (FullOpts)
        -784 (-21.19 % of base) : 76785.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindTypeParameterConstraint(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstraintSyntax,byref,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
        -699 (-8.22 % of base) : 83907.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundTreeVisitor`2[long,System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.VisualBasic.BoundNode,long):System.Nullable`1[int]:this (FullOpts)
        -598 (-18.65 % of base) : 229577.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
        -575 (-17.35 % of base) : 177707.dasm - System.Xml.Serialization.XmlSerializationWriterCodeGen:WriteArrayItems(System.Xml.Serialization.ElementAccessor[],System.Xml.Serialization.TextAccessor,System.Xml.Serialization.ChoiceIdentifierAccessor,System.Xml.Serialization.TypeDesc,System.String,System.String):this (FullOpts)
        -536 (-16.86 % of base) : 228178.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
        -536 (-16.86 % of base) : 75298.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
        -531 (-6.51 % of base) : 83891.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundTreeVisitor`2[short,System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.VisualBasic.BoundNode,short):System.Nullable`1[int]:this (FullOpts)
        -531 (-6.51 % of base) : 83887.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundTreeVisitor`2[ubyte,System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.VisualBasic.BoundNode,ubyte):System.Nullable`1[int]:this (FullOpts)
        -511 (-13.27 % of base) : 225871.dasm - System.Configuration.MgmtConfigurationRecord:GetUpdatedSectionDeclarationXml(System.Configuration.FactoryRecord,System.Configuration.ConfigurationSection,int):System.String:this (FullOpts)
        -453 (-4.86 % of base) : 180875.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
        -453 (-11.72 % of base) : 209614.dasm - System.Configuration.MgmtConfigurationRecord:GetUpdatedSectionDeclarationXml(System.Configuration.FactoryRecord,System.Configuration.ConfigurationSection,int):System.String:this (FullOpts)
        -440 (-7.67 % of base) : 84354.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitCallExpression(Microsoft.CodeAnalysis.VisualBasic.BoundCall,int):this (FullOpts)
        -405 (-8.92 % of base) : 283624.dasm - System.Text.Json.JsonDocument:TryParseValue(byref,byref,ubyte,ubyte):ubyte (FullOpts)
        -402 (-10.02 % of base) : 241993.dasm - System.Linq.Expressions.Interpreter.LightLambda+DebugViewPrinter:ToString():System.String:this (FullOpts)
        -352 (-4.62 % of base) : 83882.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundTreeVisitor`2[System.__Canon,System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.VisualBasic.BoundNode,System.__Canon):System.Nullable`1[int]:this (FullOpts)

Top method regressions (percentages):
          30 (272.73 % of base) : 91589.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
          30 (272.73 % of base) : 91595.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
          44 (220.00 % of base) : 63271.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
          42 (210.00 % of base) : 79382.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
          21 (210.00 % of base) : 99040.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementKeyword(ushort):ubyte (FullOpts)
          21 (210.00 % of base) : 99041.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDelegateStatementKeyword(ushort):ubyte (FullOpts)
          21 (210.00 % of base) : 99042.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
          21 (210.00 % of base) : 99043.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsMethodStatementKeyword(ushort):ubyte (FullOpts)
          23 (209.09 % of base) : 31765.dasm - Microsoft.CodeAnalysis.CSharp.Conversion:get_IsPointer():ubyte:this (FullOpts)
         178 (131.85 % of base) : 91906.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:StartsXmlDoc(int):ubyte:this (FullOpts)
        3006 (89.78 % of base) : 81684.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertySymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyBlockSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertySymbol (FullOpts)
         155 (84.24 % of base) : 194172.dasm - Internal.IL.Stubs.ILCodeStream:EmitLdc(int):this (FullOpts)
         997 (75.82 % of base) : 301797.dasm - System.Diagnostics.FileVersionInfo:ToString():System.String:this (FullOpts)
         113 (74.34 % of base) : 165041.dasm - System.Xml.XmlUtf8RawTextWriter:EncodeChar(byref,uint,byref):this (FullOpts)
         564 (71.57 % of base) : 2338.dasm - System.Number:UInt128ToNumber(System.UInt128,byref) (FullOpts)
         564 (71.57 % of base) : 310354.dasm - System.Number:UInt128ToNumber(System.UInt128,byref) (FullOpts)
         594 (67.35 % of base) : 2328.dasm - System.Number:Int128ToNumber(System.Int128,byref) (FullOpts)
         594 (67.35 % of base) : 310344.dasm - System.Number:Int128ToNumber(System.Int128,byref) (FullOpts)
         728 (67.16 % of base) : 199168.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`1[ubyte]:IntroSort(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],int,System.Comparison`1[ubyte]) (FullOpts)
        1196 (65.53 % of base) : 274710.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (FullOpts)

Top method improvements (percentages):
          -9 (-52.94 % of base) : 237366.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
        -214 (-48.42 % of base) : 123977.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
        -214 (-48.42 % of base) : 161787.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
         -45 (-44.12 % of base) : 271446.dasm - System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],System.IFormatProvider,byref):ubyte (FullOpts)
         -30 (-41.10 % of base) : 262131.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type):this (FullOpts)
         -45 (-40.91 % of base) : 271241.dasm - System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
         -30 (-39.47 % of base) : 262134.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type,System.Collections.Generic.IEnumerable`1[System.Type]):this (FullOpts)
         -91 (-37.14 % of base) : 271234.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (FullOpts)
         -97 (-36.19 % of base) : 271236.dasm - System.Numerics.BigInteger:Parse(System.String,System.IFormatProvider):System.Numerics.BigInteger (FullOpts)
         -97 (-34.64 % of base) : 190499.dasm - Newtonsoft.Json.JsonTextReader:BigIntegerParse(System.String,System.Globalization.CultureInfo):System.Object (FullOpts)
         -97 (-34.15 % of base) : 74807.dasm - System.Data.Common.BigIntegerStorage:ConvertXmlToObject(System.String):System.Object:this (FullOpts)
         -50 (-33.11 % of base) : 271238.dasm - System.Numerics.BigInteger:TryParse(System.String,byref):ubyte (FullOpts)
         -45 (-32.61 % of base) : 271443.dasm - System.Numerics.BigInteger:TryParse(System.String,System.IFormatProvider,byref):ubyte (FullOpts)
          -7 (-31.82 % of base) : 13186.dasm - System.Numerics.Tensors.TensorPrimitives+MaxMagnitudeOperator`1[ubyte]:Invoke(ubyte,ubyte):ubyte (FullOpts)
          -7 (-31.82 % of base) : 13178.dasm - System.Numerics.Tensors.TensorPrimitives+MaxPropagateNaNOperator`1[ubyte]:Invoke(ubyte,ubyte):ubyte (FullOpts)
          -7 (-31.82 % of base) : 13239.dasm - System.Numerics.Tensors.TensorPrimitives+MinPropagateNaNOperator`1[short]:Invoke(short,short):short (FullOpts)
        -239 (-30.14 % of base) : 27110.dasm - Microsoft.FSharp.Core.Operators+OperatorIntrinsics:loop@5914-14(System.Decimal,System.Decimal,int):System.Decimal (FullOpts)
         -31 (-29.81 % of base) : 21111.dasm - Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
         -91 (-27.91 % of base) : 111256.dasm - Microsoft.CodeAnalysis.RealParser:AccumulateDecimalDigitsIntoBigInteger(Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString,uint,uint):System.Numerics.BigInteger (FullOpts)
         -91 (-27.91 % of base) : 149725.dasm - Microsoft.CodeAnalysis.RealParser:AccumulateDecimalDigitsIntoBigInteger(Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString,uint,uint):System.Numerics.BigInteger (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: 13052418 (overridden on cmd)
Total bytes of diff: 13226664 (overridden on cmd)
Total bytes of delta: 174246 (1.33 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         747 : 32246.dasm (15.39 % of base)
         679 : 32292.dasm (17.13 % of base)
         592 : 2810.dasm (9.27 % of base)
         516 : 15819.dasm (27.13 % of base)
         516 : 10107.dasm (27.13 % of base)
         483 : 33472.dasm (21.81 % of base)
         443 : 6629.dasm (21.57 % of base)
         415 : 31574.dasm (14.47 % of base)
         413 : 43944.dasm (10.71 % of base)
         409 : 32342.dasm (14.88 % of base)
         395 : 33837.dasm (17.10 % of base)
         395 : 472.dasm (24.41 % of base)
         395 : 3966.dasm (24.41 % of base)
         390 : 32259.dasm (20.72 % of base)
         387 : 33902.dasm (16.91 % of base)
         387 : 33910.dasm (16.83 % of base)
         387 : 33648.dasm (16.91 % of base)
         387 : 33792.dasm (17.00 % of base)
         387 : 33512.dasm (16.95 % of base)
         387 : 33984.dasm (17.49 % of base)

Top file improvements (bytes):
        -378 : 27192.dasm (-42.66 % of base)
        -378 : 29959.dasm (-42.66 % of base)
        -378 : 42845.dasm (-42.66 % of base)
        -378 : 37569.dasm (-42.66 % of base)
        -378 : 28259.dasm (-42.66 % of base)
        -378 : 39546.dasm (-42.66 % of base)
        -378 : 49301.dasm (-42.66 % of base)
        -346 : 19199.dasm (-40.52 % of base)
        -292 : 3807.dasm (-46.87 % of base)
        -292 : 392.dasm (-46.87 % of base)
        -289 : 47696.dasm (-39.00 % of base)
        -284 : 30094.dasm (-24.34 % of base)
        -284 : 42397.dasm (-24.34 % of base)
        -284 : 13481.dasm (-24.34 % of base)
        -284 : 12474.dasm (-24.34 % of base)
        -284 : 30263.dasm (-24.34 % of base)
        -276 : 3806.dasm (-27.71 % of base)
        -276 : 389.dasm (-27.71 % of base)
        -274 : 18227.dasm (-36.98 % of base)
        -262 : 5587.dasm (-9.85 % of base)

72 total files with Code Size differences (27 improved, 45 regressed), 20 unchanged.

Top method regressions (bytes):
         747 (15.39 % of base) : 32246.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTableMod():this (Tier0-FullOpts)
         679 (17.13 % of base) : 32292.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTable():this (Tier0-FullOpts)
         592 (9.27 % of base) : 2810.dasm - Microsoft.DotNet.RemoteExecutor.RemoteInvokeHandle:Dispose(ubyte):this (Tier0-FullOpts)
         516 (27.13 % of base) : 15819.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (Tier0-FullOpts)
         516 (27.13 % of base) : 10107.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (Tier0-FullOpts)
         483 (21.81 % of base) : 33472.dasm - System.Reflection.Metadata.Tests.LargeTablesAndHeapsTests:ManifestResource():this (Tier0-FullOpts)
         443 (21.57 % of base) : 6629.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (Tier0-FullOpts)
         415 (14.47 % of base) : 31574.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeRefTable():this (Tier0-FullOpts)
         413 (10.71 % of base) : 43944.dasm - System.Xml.XmlTextReaderImpl:ParseAttributeValueSlow(int,ushort,System.Xml.XmlTextReaderImpl+NodeData):this (Tier0-FullOpts)
         409 (14.88 % of base) : 32342.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeRefTableMod():this (Tier0-FullOpts)
         395 (17.10 % of base) : 33837.dasm - System.Reflection.Metadata.Tests.LargeTablesAndHeapsTests:Document():this (Tier0-FullOpts)
         395 (24.41 % of base) : 472.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (Tier0-FullOpts)
         395 (24.41 % of base) : 3966.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (Tier0-FullOpts)
         390 (20.72 % of base) : 32259.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateEvent(System.Reflection.Metadata.MetadataReader,uint,uint,uint,ubyte):this (Tier0-FullOpts)
         387 (17.49 % of base) : 33984.dasm - System.Reflection.Metadata.Tests.LargeTablesAndHeapsTests:Event():this (Tier0-FullOpts)
         387 (16.91 % of base) : 33902.dasm - System.Reflection.Metadata.Tests.LargeTablesAndHeapsTests:Field():this (Tier0-FullOpts)
         387 (16.95 % of base) : 33512.dasm - System.Reflection.Metadata.Tests.LargeTablesAndHeapsTests:LocalConstant():this (Tier0-FullOpts)
         387 (16.83 % of base) : 33910.dasm - System.Reflection.Metadata.Tests.LargeTablesAndHeapsTests:Param():this (Tier0-FullOpts)
         387 (16.91 % of base) : 33648.dasm - System.Reflection.Metadata.Tests.LargeTablesAndHeapsTests:Property():this (Tier0-FullOpts)
         387 (17.00 % of base) : 33792.dasm - System.Reflection.Metadata.Tests.LargeTablesAndHeapsTests:StandaloneSignatures():this (Tier0-FullOpts)

Top method improvements (bytes):
        -378 (-42.66 % of base) : 27192.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
        -378 (-42.66 % of base) : 29959.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
        -378 (-42.66 % of base) : 42845.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
        -378 (-42.66 % of base) : 37569.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
        -378 (-42.66 % of base) : 28259.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
        -378 (-42.66 % of base) : 39546.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
        -378 (-42.66 % of base) : 49301.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
        -346 (-40.52 % of base) : 19199.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
        -292 (-46.87 % of base) : 3807.dasm - System.IO.RandomAccess:ReadAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Span`1[ubyte],long):int (Instrumented Tier1)
        -292 (-46.87 % of base) : 392.dasm - System.IO.RandomAccess:ReadAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Span`1[ubyte],long):int (Instrumented Tier1)
        -289 (-39.00 % of base) : 47696.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
        -284 (-24.34 % of base) : 30094.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
        -284 (-24.34 % of base) : 42397.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
        -284 (-24.34 % of base) : 13481.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
        -284 (-24.34 % of base) : 12474.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
        -284 (-24.34 % of base) : 30263.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
        -276 (-27.71 % of base) : 3806.dasm - System.IO.Strategies.OSFileStreamStrategy:Read(System.Span`1[ubyte]):int:this (Instrumented Tier1)
        -276 (-27.71 % of base) : 389.dasm - System.IO.Strategies.OSFileStreamStrategy:Read(System.Span`1[ubyte]):int:this (Instrumented Tier1)
        -274 (-36.98 % of base) : 18227.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
        -262 (-9.85 % of base) : 5587.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)

Top method regressions (percentages):
         316 (61.00 % of base) : 47540.dasm - System.Text.Json.WriteStack:PropertyPath():System.String:this (Tier0-FullOpts)
          34 (44.74 % of base) : 13981.dasm - System.Linq.Enumerable+SelectListIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier0-FullOpts)
          34 (44.74 % of base) : 1956.dasm - System.Linq.Enumerable+SelectListIterator`2[System.__Canon,System.__Canon]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (Tier0-FullOpts)
          26 (37.14 % of base) : 40838.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:AddPlusOne(System.Span`1[ubyte],System.Span`1[ubyte]) (Tier0-FullOpts)
          26 (37.14 % of base) : 41248.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:AddPlusOne(System.Span`1[ubyte],System.Span`1[ubyte]) (Tier0-FullOpts)
          52 (31.33 % of base) : 15386.dasm - System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Instrumented Tier1)
          52 (31.33 % of base) : 2828.dasm - System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Instrumented Tier1)
          33 (28.21 % of base) : 37606.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier0-FullOpts)
         516 (27.13 % of base) : 15819.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (Tier0-FullOpts)
         516 (27.13 % of base) : 10107.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (Tier0-FullOpts)
          42 (25.77 % of base) : 10230.dasm - System.Reflection.Internal.MemoryBlock:IsOrderedByReferenceAscending(int,int,ubyte):ubyte:this (Tier0-FullOpts)
          42 (25.77 % of base) : 15853.dasm - System.Reflection.Internal.MemoryBlock:IsOrderedByReferenceAscending(int,int,ubyte):ubyte:this (Tier0-FullOpts)
          15 (25.42 % of base) : 32693.dasm - System.Reflection.PortableExecutable.PEBuilder:SumRawDataSizes(System.Collections.Immutable.ImmutableArray`1[System.Reflection.PortableExecutable.PEBuilder+SerializedSection],uint):int (Tier0-FullOpts)
          20 (25.00 % of base) : 37607.dasm - System.Numerics.BigIntegerCalculator:AddDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint]):uint (Tier0-FullOpts)
         395 (24.41 % of base) : 472.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (Tier0-FullOpts)
         395 (24.41 % of base) : 3966.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (Tier0-FullOpts)
          40 (23.95 % of base) : 32039.dasm - System.Reflection.Internal.MemoryBlock:LinearSearchReference(int,int,uint,ubyte):int:this (Tier0-FullOpts)
          17 (23.61 % of base) : 24855.dasm - System.Linq.Enumerable+SelectArrayIterator`2[ushort,ubyte]:Fill(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],System.Func`2[ushort,ubyte]) (Tier0-FullOpts)
          37 (23.13 % of base) : 19421.dasm - System.RuntimeType:GetEnumUnderlyingType():System.Type:this (Instrumented Tier1)
          24 (22.02 % of base) : 37280.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier0-FullOpts)

Top method improvements (percentages):
        -292 (-46.87 % of base) : 3807.dasm - System.IO.RandomAccess:ReadAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Span`1[ubyte],long):int (Instrumented Tier1)
        -292 (-46.87 % of base) : 392.dasm - System.IO.RandomAccess:ReadAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Span`1[ubyte],long):int (Instrumented Tier1)
        -378 (-42.66 % of base) : 27192.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
        -378 (-42.66 % of base) : 29959.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
        -378 (-42.66 % of base) : 42845.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
        -378 (-42.66 % of base) : 37569.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
        -378 (-42.66 % of base) : 28259.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
        -378 (-42.66 % of base) : 39546.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
        -378 (-42.66 % of base) : 49301.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
        -346 (-40.52 % of base) : 19199.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
        -289 (-39.00 % of base) : 47696.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
        -274 (-36.98 % of base) : 18227.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
        -153 (-33.33 % of base) : 19565.dasm - System.Reflection.Emit.SignatureHelper:GetMethodSigHelper(System.Reflection.Module,int,int,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]):System.Reflection.Emit.SignatureHelper (Instrumented Tier1)
        -276 (-27.71 % of base) : 3806.dasm - System.IO.Strategies.OSFileStreamStrategy:Read(System.Span`1[ubyte]):int:this (Instrumented Tier1)
        -276 (-27.71 % of base) : 389.dasm - System.IO.Strategies.OSFileStreamStrategy:Read(System.Span`1[ubyte]):int:this (Instrumented Tier1)
        -284 (-24.34 % of base) : 30094.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
        -284 (-24.34 % of base) : 42397.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
        -284 (-24.34 % of base) : 13481.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
        -284 (-24.34 % of base) : 12474.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
        -284 (-24.34 % of base) : 30263.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int: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: 83805955 (overridden on cmd)
Total bytes of diff: 84539549 (overridden on cmd)
Total bytes of delta: 733594 (0.88 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        2985 : 297456.dasm (91.96 % of base)
        2678 : 247001.dasm (36.74 % of base)
        2543 : 276253.dasm (23.63 % of base)
        2468 : 271713.dasm (23.62 % of base)
        1828 : 287181.dasm (23.56 % of base)
        1828 : 281540.dasm (23.56 % of base)
        1694 : 214798.dasm (34.99 % of base)
        1463 : 281235.dasm (23.49 % of base)
        1395 : 235059.dasm (9.66 % of base)
        1373 : 32938.dasm (67.11 % of base)
        1369 : 15156.dasm (66.78 % of base)
        1293 : 280207.dasm (23.45 % of base)
        1293 : 280279.dasm (23.45 % of base)
        1271 : 22692.dasm (14.89 % of base)
        1253 : 288157.dasm (23.44 % of base)
        1253 : 285421.dasm (23.44 % of base)
        1251 : 234644.dasm (8.77 % of base)
        1238 : 287436.dasm (81.55 % of base)
        1158 : 279994.dasm (23.41 % of base)
        1158 : 275891.dasm (23.41 % of base)

Top file improvements (bytes):
        -835 : 144676.dasm (-25.95 % of base)
        -616 : 227382.dasm (-87.38 % of base)
        -597 : 116943.dasm (-6.71 % of base)
        -575 : 80482.dasm (-17.43 % of base)
        -545 : 117112.dasm (-4.08 % of base)
        -543 : 237902.dasm (-8.37 % of base)
        -536 : 119806.dasm (-16.86 % of base)
        -536 : 117025.dasm (-16.86 % of base)
        -527 : 120931.dasm (-16.98 % of base)
        -511 : 111712.dasm (-13.27 % of base)
        -477 : 179060.dasm (-7.57 % of base)
        -472 : 238951.dasm (-24.17 % of base)
        -469 : 238473.dasm (-19.16 % of base)
        -451 : 146233.dasm (-13.52 % of base)
        -451 : 147491.dasm (-13.52 % of base)
        -423 : 237353.dasm (-26.16 % of base)
        -418 : 227385.dasm (-51.23 % of base)
        -415 : 243524.dasm (-21.72 % of base)
        -406 : 227317.dasm (-51.26 % of base)
        -399 : 244513.dasm (-16.87 % of base)

76 total files with Code Size differences (37 improved, 39 regressed), 20 unchanged.

Top method regressions (bytes):
        2985 (91.96 % of base) : 297456.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests:CreatingNestedJsonArray() (FullOpts)
        2678 (36.74 % of base) : 247001.dasm - System.Tests.DecimalTests_GenericMath:IsEvenIntegerTest() (FullOpts)
        2543 (23.63 % of base) : 276253.dasm - System.Text.Json.SourceGeneration.Tests.CollectionTests_Metadata+CollectionTestsContext_Metadata:global::System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver.GetTypeInfo(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
        2468 (23.62 % of base) : 271713.dasm - System.Text.Json.SourceGeneration.Tests.CollectionTests_Default+CollectionTestsContext_Default:global::System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver.GetTypeInfo(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
        1828 (23.56 % of base) : 287181.dasm - System.Text.Json.SourceGeneration.Tests.NumberHandlingTests_Default+NumberHandlingTestsContext_Default:global::System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver.GetTypeInfo(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
        1828 (23.56 % of base) : 281540.dasm - System.Text.Json.SourceGeneration.Tests.NumberHandlingTests_Metadata+NumberHandlingTestsContext_Metadata:global::System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver.GetTypeInfo(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
        1694 (34.99 % of base) : 214798.dasm - System.Reflection.Metadata.Tests.BlobUtilitiesTests:GetUTF8ByteCount():this (FullOpts)
        1463 (23.49 % of base) : 281235.dasm - System.Text.Json.SourceGeneration.Tests.CreationHandlingTestContext:global::System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver.GetTypeInfo(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
        1395 (9.66 % of base) : 235059.dasm - (dynamicClass):ReadAllTypes2FromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        1373 (67.11 % of base) : 32938.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.AnchorIndentationFormattingRule:AddAnchorIndentationOperations(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.AnchorIndentationOperation],Microsoft.CodeAnalysis.SyntaxNode,byref):this (FullOpts)
        1369 (66.78 % of base) : 15156.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.AnchorIndentationFormattingRule:AddAnchorIndentationOperations(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.AnchorIndentationOperation],Microsoft.CodeAnalysis.SyntaxNode,byref):this (FullOpts)
        1293 (23.45 % of base) : 280207.dasm - System.Text.Json.SourceGeneration.Tests.ReferenceHandlerTests_Default+ReferenceHandlerTestsContext_Default:global::System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver.GetTypeInfo(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
        1293 (23.45 % of base) : 280279.dasm - System.Text.Json.SourceGeneration.Tests.ReferenceHandlerTests_Metadata+ReferenceHandlerTestsContext_Metadata:global::System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver.GetTypeInfo(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
        1271 (14.89 % of base) : 22692.dasm - Microsoft.Interop.JavaScript.JSGeneratorResolver:Create(Microsoft.Interop.TypePositionInfo,ubyte,int,int[],int,int[],System.Func`2[System.String,Microsoft.Interop.ResolvedGenerator]):Microsoft.Interop.ResolvedGenerator (FullOpts)
        1253 (23.44 % of base) : 288157.dasm - System.Text.Json.SourceGeneration.Tests.PropertyVisibilityTests_Default+PropertyVisibilityTestsContext_Default:global::System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver.GetTypeInfo(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
        1253 (23.44 % of base) : 285421.dasm - System.Text.Json.SourceGeneration.Tests.PropertyVisibilityTests_Metadata+PropertyVisibilityTestsContext_Metadata:global::System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver.GetTypeInfo(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
        1251 (8.77 % of base) : 234644.dasm - (dynamicClass):ReadAllTypesFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        1238 (81.55 % of base) : 287436.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:ClassWithPropertyNamePermutationsSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.PropertyNameTests+ClassWithPropertyNamePermutations):this (FullOpts)
        1158 (23.41 % of base) : 275891.dasm - System.Text.Json.SourceGeneration.Tests.ConstructorTests_Default+ConstructorTestsContext_Default:global::System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver.GetTypeInfo(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
        1158 (23.41 % of base) : 279994.dasm - System.Text.Json.SourceGeneration.Tests.ConstructorTests_Metadata+ConstructorTestsContext_Metadata:global::System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver.GetTypeInfo(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)

Top method improvements (bytes):
        -835 (-25.95 % of base) : 144676.dasm - System.Globalization.Tests.TaiwanCalendarToDateTime+<ToDateTime_TestData>d__0:MoveNext():ubyte:this (FullOpts)
        -616 (-87.38 % of base) : 227382.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsCanonicalTest() (FullOpts)
        -597 (-6.71 % of base) : 116943.dasm - System.Data.Tests.Common.DbConnectionStringBuilderTest:AppendKeyValuePair2_UseOdbcRules_False():this (FullOpts)
        -575 (-17.43 % of base) : 80482.dasm - System.Xml.Serialization.XmlSerializationWriterCodeGen:WriteArrayItems(System.Xml.Serialization.ElementAccessor[],System.Xml.Serialization.TextAccessor,System.Xml.Serialization.ChoiceIdentifierAccessor,System.Xml.Serialization.TypeDesc,System.String,System.String):this (FullOpts)
        -545 (-4.08 % of base) : 117112.dasm - System.Data.Tests.Common.DbConnectionStringBuilderTest:AppendKeyValuePair2_UseOdbcRules_True():this (FullOpts)
        -543 (-8.37 % of base) : 237902.dasm - System.Tests.EnumTests:ToString_TryFormat(ubyte,ubyte) (FullOpts)
        -536 (-16.86 % of base) : 119806.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
        -536 (-16.86 % of base) : 117025.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
        -527 (-16.98 % of base) : 120931.dasm - System.Diagnostics.Tests.DiagnosticSourceEventSourceBridgeTests:AssertActivityMatchesEvent(System.Diagnostics.Activity,System.Diagnostics.Tests.DiagnosticSourceEvent,ubyte):this (FullOpts)
        -511 (-13.27 % of base) : 111712.dasm - System.Configuration.MgmtConfigurationRecord:GetUpdatedSectionDeclarationXml(System.Configuration.FactoryRecord,System.Configuration.ConfigurationSection,int):System.String:this (FullOpts)
        -477 (-7.57 % of base) : 179060.dasm - System.Net.Http.Functional.Tests.HttpClientHandlerTest+<>c__DisplayClass18_0+<<PostAsync_ManyDifferentRequestHeaders_SentCorrectly>b__1>d:MoveNext():this (FullOpts)
        -472 (-24.17 % of base) : 238951.dasm - System.Tests.ByteTests:ToStringTest(ubyte,System.String,System.IFormatProvider,System.String) (FullOpts)
        -469 (-19.16 % of base) : 238473.dasm - System.Tests.DateTimeTests:ParseExact_String_String_FormatProvider_DateTimeStyles_R(System.DateTime,System.String) (FullOpts)
        -451 (-13.52 % of base) : 146233.dasm - System.Globalization.Tests.CultureInfoAll:ValidateNFI(System.Globalization.CultureInfo):this (FullOpts)
        -451 (-13.52 % of base) : 147491.dasm - System.Globalization.Tests.CultureInfoAll:ValidateNFI(System.Globalization.CultureInfo):this (FullOpts)
        -423 (-26.16 % of base) : 237353.dasm - System.Tests.EnumTests:ToString_Format(System.Enum,System.String,System.String) (FullOpts)
        -418 (-51.23 % of base) : 227385.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsComplexNumberTest() (FullOpts)
        -415 (-21.72 % of base) : 243524.dasm - System.Tests.SingleTests:ToStringTest(float,System.String,System.IFormatProvider,System.String) (FullOpts)
        -406 (-51.26 % of base) : 227317.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsZeroTest() (FullOpts)
        -399 (-16.87 % of base) : 244513.dasm - System.Tests.Int16Tests:ToStringTest(short,System.String,System.IFormatProvider,System.String) (FullOpts)

Top method regressions (percentages):
        2985 (91.96 % of base) : 297456.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests:CreatingNestedJsonArray() (FullOpts)
         693 (86.52 % of base) : 214346.dasm - System.Reflection.Metadata.Ecma335.Tests.MetadataBuilderTests:ValidateLocalScopeTable():this (FullOpts)
        1238 (81.55 % of base) : 287436.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:ClassWithPropertyNamePermutationsSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.PropertyNameTests+ClassWithPropertyNamePermutations):this (FullOpts)
         997 (75.82 % of base) : 121824.dasm - System.Diagnostics.FileVersionInfo:ToString():System.String:this (FullOpts)
         564 (71.57 % of base) : 246232.dasm - System.Number:UInt128ToNumber(System.UInt128,byref) (FullOpts)
         532 (70.84 % of base) : 302694.dasm - System.Text.Json.Tests.JsonEncodedTextTests:EqualsTest() (FullOpts)
         759 (69.57 % of base) : 212260.dasm - System.Reflection.Emit.Tests.MethodBuilderDefineParameter:DefineParameter_AllAttributes():this (FullOpts)
         594 (67.35 % of base) : 245215.dasm - System.Number:Int128ToNumber(System.Int128,byref) (FullOpts)
        1373 (67.11 % of base) : 32938.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.AnchorIndentationFormattingRule:AddAnchorIndentationOperations(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.AnchorIndentationOperation],Microsoft.CodeAnalysis.SyntaxNode,byref):this (FullOpts)
         411 (67.05 % of base) : 61800.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:NameUsedForPositional(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap):System.Nullable`1[int] (FullOpts)
        1369 (66.78 % of base) : 15156.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.AnchorIndentationFormattingRule:AddAnchorIndentationOperations(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.AnchorIndentationOperation],Microsoft.CodeAnalysis.SyntaxNode,byref):this (FullOpts)
         316 (61.00 % of base) : 271667.dasm - System.Text.Json.WriteStack:PropertyPath():System.String:this (FullOpts)
         217 (59.94 % of base) : 182979.dasm - System.Net.NameResolution.Tests.GetHostAddressesTest:get_IPAndIncorrectFamily_Data():Xunit.TheoryData`3[ubyte,System.Net.IPAddress,int] (FullOpts)
          31 (59.62 % of base) : 172735.dasm - System.MemoryExtensions:ClampStart[int](System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int]):int (FullOpts)
         276 (58.85 % of base) : 273096.dasm - System.Text.Json.WriteStack:PropertyPath():System.String:this (FullOpts)
          31 (58.49 % of base) : 198809.dasm - MS.Internal.Xml.Cache.XPathDocumentNavigator:IsKindMatch(int):ubyte:this (FullOpts)
        1012 (57.96 % of base) : 263292.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (FullOpts)
          19 (57.58 % of base) : 113402.dasm - System.Data.ExpressionNode:IsSigned(int):ubyte (FullOpts)
          12 (57.14 % of base) : 50991.dasm - LamarCodeGeneration.Util.ImHashMap`2+Leaf2[System.__Canon,System.__Canon]:GetEntryOrNull(int):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon]:this (FullOpts)
         900 (57.11 % of base) : 291509.dasm - System.Text.Json.SourceGeneration.Tests.ConstructorTests_Default+ConstructorTestsContext_Default:Parameterless_ClassWithPrimitivesSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.Parameterless_ClassWithPrimitives):this (FullOpts)

Top method improvements (percentages):
        -300 (-98.36 % of base) : 242890.dasm - System.Tests.SingleTests_GenericMath:IsPow2Test() (FullOpts)
         -37 (-97.37 % of base) : 219408.dasm - System.IO.Tests.PathTests:GetDirectoryName_NullReturnsNull():this (FullOpts)
        -616 (-87.38 % of base) : 227382.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsCanonicalTest() (FullOpts)
         -28 (-84.85 % of base) : 213774.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareEntityHandles():this (FullOpts)
         -28 (-84.85 % of base) : 213775.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareHandles():this (FullOpts)
        -248 (-60.05 % of base) : 252738.dasm - System.Security.Cryptography.Cose.Tests.CoseHeaderLabelTests:CoseHeaderLabel_op_Equality():this (FullOpts)
        -271 (-59.69 % of base) : 252737.dasm - System.Security.Cryptography.Cose.Tests.CoseHeaderLabelTests:CoseHeaderLabel_op_Inequality():this (FullOpts)
        -406 (-51.26 % of base) : 227317.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsZeroTest() (FullOpts)
        -418 (-51.23 % of base) : 227385.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsComplexNumberTest() (FullOpts)
         -69 (-41.07 % of base) : 227982.dasm - System.Numerics.Tests.parseTest+<>c:<Parse_Hex32Bits>b__7_0():this (FullOpts)
        -140 (-40.82 % of base) : 336446.dasm - System.Threading.Tasks.Tests.ValueTaskTests:Generic_OperatorNotEquals():this (FullOpts)
        -200 (-40.24 % of base) : 154450.dasm - System.IO.Packaging.PartBasedPackageProperties:WriteXmlStartTagsForPackageProperties():this (FullOpts)
         -10 (-38.46 % of base) : 190250.dasm - System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]:Max(ubyte,ubyte):ubyte:this (FullOpts)
         -10 (-38.46 % of base) : 190261.dasm - System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]:MaxMagnitude(ubyte,ubyte):ubyte:this (FullOpts)
        -337 (-37.28 % of base) : 227327.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsRealNumberTest() (FullOpts)
        -340 (-37.12 % of base) : 227421.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsImaginaryNumberTest() (FullOpts)
        -121 (-37.12 % of base) : 129202.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.dlgate.lambda07a.lambda07a.Foo,System.Object,System.Object,System.Object):System.Object (FullOpts)
        -125 (-36.98 % of base) : 135336.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,System.Object,System.Object,System.Object):System.Object (FullOpts)
        -325 (-36.93 % of base) : 227409.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsNegativeInfinityTest() (FullOpts)
        -325 (-36.93 % of base) : 227395.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsPositiveInfinityTest() (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: 8444744 (overridden on cmd)
Total bytes of diff: 8620345 (overridden on cmd)
Total bytes of delta: 175601 (2.08 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        3005 : 1129.dasm (22.30 % of base)
        2104 : 15380.dasm (43.61 % of base)
        1777 : 14483.dasm (6.94 % of base)
        1716 : 1202.dasm (46.99 % of base)
        1380 : 14235.dasm (49.64 % of base)
        1209 : 15551.dasm (32.03 % of base)
        1126 : 15378.dasm (18.96 % of base)
        1055 : 5256.dasm (12.18 % of base)
        1054 : 5146.dasm (20.25 % of base)
        1005 : 1239.dasm (20.89 % of base)
         942 : 33578.dasm (6.60 % of base)
         941 : 5864.dasm (15.01 % of base)
         882 : 10100.dasm (4.80 % of base)
         881 : 15379.dasm (32.50 % of base)
         864 : 11319.dasm (26.35 % of base)
         775 : 22037.dasm (24.74 % of base)
         772 : 17327.dasm (11.10 % of base)
         749 : 3355.dasm (8.31 % of base)
         747 : 6940.dasm (15.25 % of base)
         705 : 15638.dasm (3.87 % of base)

Top file improvements (bytes):
       -1030 : 8104.dasm (-12.60 % of base)
        -941 : 15637.dasm (-4.68 % of base)
        -815 : 1459.dasm (-4.04 % of base)
        -423 : 1455.dasm (-1.88 % of base)
        -378 : 1492.dasm (-7.07 % of base)
        -322 : 24338.dasm (-3.75 % of base)
        -318 : 1545.dasm (-1.36 % of base)
        -281 : 32896.dasm (-10.76 % of base)
        -274 : 29821.dasm (-24.98 % of base)
        -273 : 33441.dasm (-10.16 % of base)
        -263 : 1187.dasm (-5.84 % of base)
        -257 : 11779.dasm (-9.95 % of base)
        -191 : 9184.dasm (-4.63 % of base)
        -175 : 30534.dasm (-11.39 % of base)
        -170 : 24820.dasm (-2.87 % of base)
        -160 : 33607.dasm (-1.69 % of base)
        -144 : 34228.dasm (-5.63 % of base)
        -142 : 1444.dasm (-1.35 % of base)
        -135 : 15484.dasm (-12.31 % of base)
        -134 : 9018.dasm (-0.94 % of base)

82 total files with Code Size differences (40 improved, 42 regressed), 20 unchanged.

Top method regressions (bytes):
        3005 (22.30 % of base) : 1129.dasm - DemoBenchmarks.RagdollTubeBenchmark:AddArm(float,System.Numerics.Vector3,BepuPhysics.RigidPose,BepuPhysics.BodyHandle,byref,int,int,BepuPhysics.RigidPose,BepuPhysics.CollidableProperty`1[DemoBenchmarks.RagdollTubeBenchmark+SubgroupCollisionFilter],BepuPhysics.Constraints.SpringSettings,BepuPhysics.Simulation):DemoBenchmarks.RagdollTubeBenchmark+RagdollArmHandles (FullOpts)
        2104 (43.61 % of base) : 15380.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockProgressiveACRefined(byref,byref):this (FullOpts)
        1777 (6.94 % of base) : 14483.dasm - FSharp.Compiler.CompilerDiagnostics:OutputExceptionR@597(System.Text.StringBuilder,ubyte,System.Text.StringBuilder,System.Exception) (FullOpts)
        1716 (46.99 % of base) : 1202.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+SelfOverlapHandler[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]](byref,byref,byref):this (FullOpts)
        1380 (49.64 % of base) : 14235.dasm - FSharp.Compiler.TypedTreePickle:p_lazy_impl[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,FSharp.Compiler.TypedTreePickle+WriterState) (FullOpts)
        1209 (32.03 % of base) : 15551.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockBaseline(SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.JpegComponent,byref,byref,byref):this (FullOpts)
        1126 (18.96 % of base) : 15378.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:ParseProgressiveDataNonInterleaved():this (FullOpts)
        1055 (12.18 % of base) : 5256.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
        1054 (20.25 % of base) : 5146.dasm - FSharp.Compiler.LexFilter+LexFilterImpl:rulesForBothSoftWhiteAndHardWhite(FSharp.Compiler.LexFilter+TokenTup):ubyte:this (FullOpts)
        1005 (20.89 % of base) : 1239.dasm - BepuPhysics.Trees.Tree:GetOverlaps[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+IntertreeOverlapHandler[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]](byref,byref):this (FullOpts)
         942 (6.60 % of base) : 33578.dasm - System.Management.Automation.Runspaces.InitialSessionState:get_BuiltInAliases():System.Management.Automation.Runspaces.SessionStateAliasEntry[] (FullOpts)
         941 (15.01 % of base) : 5864.dasm - FSharp.Compiler.LexFilter:scanAhead@1017(FSharp.Compiler.LexFilter+LexFilterImpl,ubyte,Internal.Utilities.Text.Lexing.Position,Microsoft.FSharp.Core.FSharpRef`1[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.LexFilter+TokenTup,ubyte]]],int):ubyte (FullOpts)
         882 (4.80 % of base) : 10100.dasm - FSharp.Compiler.ConstraintSolver+SolveMemberConstraint@1402-8:Invoke(Microsoft.FSharp.Core.Unit):FSharp.Compiler.ErrorLogger+OperationResult`1[FSharp.Compiler.ConstraintSolver+TraitConstraintSolution]:this (FullOpts)
         881 (32.50 % of base) : 15379.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockProgressiveAC(byref,byref):this (FullOpts)
         864 (26.35 % of base) : 11319.dasm - FSharp.Compiler.CheckExpressions+TcAndBuildFixedExpr@10217-2:Invoke(System.Tuple`2[FSharp.Compiler.TypedTree+Val,FSharp.Compiler.TypedTree+Expr]):FSharp.Compiler.TypedTree+Expr:this (FullOpts)
         775 (24.74 % of base) : 22037.dasm - Microsoft.CodeAnalysis.PEModule:GetTargetAttributeSignatureIndex(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.CustomAttributeHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):int (FullOpts)
         772 (11.10 % of base) : 17327.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
         749 (8.31 % of base) : 3355.dasm - FSharp.Compiler.FxResolver:.ctor(ubyte,System.String,ubyte,ubyte,FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[System.String]):this (FullOpts)
         747 (15.25 % of base) : 6940.dasm - FSharp.Compiler.AbstractIL.IL+ILInstr:Equals(System.Object,System.Collections.IEqualityComparer):ubyte:this (FullOpts)
         705 (3.87 % of base) : 15638.dasm - SixLabors.ImageSharp.Processing.Processors.Quantization.WuQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:Top(byref,int,int,System.ReadOnlySpan`1[SixLabors.ImageSharp.Processing.Processors.Quantization.WuQuantizer`1+Moment[SixLabors.ImageSharp.PixelFormats.Rgba32]]):SixLabors.ImageSharp.Processing.Processors.Quantization.WuQuantizer`1+Moment[SixLabors.ImageSharp.PixelFormats.Rgba32] (FullOpts)

Top method improvements (bytes):
       -1030 (-12.60 % of base) : 8104.dasm - FSharp.Compiler.Lexer:singleQuoteString(FSharp.Compiler.IO.ByteBuffer,FSharp.Compiler.Lexhelp+LexerStringFinisher,FSharp.Compiler.Text.Range,FSharp.Compiler.ParseHelpers+LexerStringKind,FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
        -941 (-4.68 % of base) : 15637.dasm - SixLabors.ImageSharp.Processing.Processors.Quantization.WuQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:Bottom(byref,int,System.ReadOnlySpan`1[SixLabors.ImageSharp.Processing.Processors.Quantization.WuQuantizer`1+Moment[SixLabors.ImageSharp.PixelFormats.Rgba32]]):SixLabors.ImageSharp.Processing.Processors.Quantization.WuQuantizer`1+Moment[SixLabors.ImageSharp.PixelFormats.Rgba32] (FullOpts)
        -815 (-4.04 % of base) : 1459.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
        -423 (-1.88 % of base) : 1455.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TriangleCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
        -378 (-7.07 % of base) : 1492.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+IntertreeOverlapHandler[DemoBenchmarks.ShapePileBenchmark+DemoNarrowPhaseCallbacks]](byref,byref,byref,byref):this (FullOpts)
        -322 (-3.75 % of base) : 24338.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
        -318 (-1.36 % of base) : 1545.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TrianglePairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
        -281 (-10.76 % of base) : 32896.dasm - Microsoft.Cci.TypeNameSerializer:GetSerializedTypeName(Microsoft.Cci.ITypeReference,Microsoft.CodeAnalysis.Emit.EmitContext,byref):System.String (FullOpts)
        -274 (-24.98 % of base) : 29821.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:CheckLocalRefEscape(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundLocal,uint,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
        -273 (-10.16 % of base) : 33441.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -263 (-5.84 % of base) : 1187.dasm - BepuPhysics.Trees.Tree:FindPartitionBinned(byref,int,int,byref,byref,byref,byref,byref):this (FullOpts)
        -257 (-9.95 % of base) : 11779.dasm - FSharp.Compiler.MethodOverrides+DispatchSlotChecking:CheckOverridesAreAllUsedOnce(FSharp.Compiler.TypedTreeOps+DisplayEnv,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.InfoReader+InfoReader,ubyte,FSharp.Compiler.TypedTree+TType,Microsoft.FSharp.Collections.FSharpMap`2[System.String,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodOverrides+RequiredSlot]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodOverrides+OverrideInfo],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodOverrides+OverrideInfo]) (FullOpts)
        -191 (-4.63 % of base) : 9184.dasm - FSharp.Compiler.CheckExpressions:buildApp(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+ApplicableExpr,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.Text.Range):System.Tuple`2[FSharp.Compiler.CheckExpressions+ApplicableExpr,FSharp.Compiler.TypedTree+TType] (FullOpts)
        -175 (-11.39 % of base) : 30534.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitStaticCallExpression(Microsoft.CodeAnalysis.CSharp.BoundCall,int):this (FullOpts)
        -170 (-2.87 % of base) : 24820.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (FullOpts)
        -160 (-1.69 % of base) : 33607.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
        -144 (-5.63 % of base) : 34228.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:ProcessBuiltin(System.Management.Automation.Runspaces.PSSnapInTypeAndFormatErrors,Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBase,Microsoft.PowerShell.Commands.Internal.Format.PSPropertyExpressionFactory,System.Collections.Generic.List`1[Microsoft.PowerShell.Commands.Internal.Format.XmlLoaderLoggerEntry],byref):ubyte (FullOpts)
        -142 (-1.35 % of base) : 1444.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxTriangleTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
        -135 (-12.31 % of base) : 15484.dasm - SixLabors.ImageSharp.Benchmarks.Codecs.DecodeFilteredPng:ReadImages():this (FullOpts)
        -134 (-0.94 % of base) : 9018.dasm - FSharp.Compiler.CheckExpressions:TcPat(FSharp.Compiler.NameResolution+WarnOnUpperFlag,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckExpressions+PartialValReprInfo],FSharp.Compiler.TypedTree+ValInline,FSharp.Compiler.CheckExpressions+ExplicitTyparInfo,FSharp.Compiler.CheckExpressions+ArgAndRetAttribs,ubyte,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],ubyte,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[System.String,FSharp.Compiler.CheckExpressions+PrelimValScheme1],Microsoft.FSharp.Collections.FSharpSet`1[System.String],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Syntax.SynPat):System.Tuple`2[Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.CheckExpressions+TcPatPhase2Input,FSharp.Compiler.PatternMatchCompilation+Pattern],System.Tuple`3[FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[System.String,FSharp.Compiler.CheckExpressions+PrelimValScheme1],Microsoft.FSharp.Collections.FSharpSet`1[System.String]]] (FullOpts)

Top method regressions (percentages):
         156 (55.91 % of base) : 2669.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
         192 (52.17 % of base) : 5476.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
        1380 (49.64 % of base) : 14235.dasm - FSharp.Compiler.TypedTreePickle:p_lazy_impl[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,FSharp.Compiler.TypedTreePickle+WriterState) (FullOpts)
          28 (48.28 % of base) : 16334.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.ValueTuple`2[System.__Canon,System.__Canon]]:Fill(System.ReadOnlySpan`1[System.__Canon],System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]],System.Func`2[System.__Canon,System.ValueTuple`2[System.__Canon,System.__Canon]]) (FullOpts)
        1716 (46.99 % of base) : 1202.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+SelfOverlapHandler[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]](byref,byref,byref):this (FullOpts)
         390 (44.42 % of base) : 33006.dasm - Microsoft.Cci.MetadataWriter:PopulateManifestResourceTableRows(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.BlobBuilder):this (FullOpts)
        2104 (43.61 % of base) : 15380.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockProgressiveACRefined(byref,byref):this (FullOpts)
         125 (43.55 % of base) : 637.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
          21 (40.38 % of base) : 22443.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
         123 (39.68 % of base) : 25422.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:NameUsedForPositional(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap):System.Nullable`1[int] (FullOpts)
         146 (38.83 % of base) : 541.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
         663 (38.61 % of base) : 15592.dasm - SixLabors.ImageSharp.Formats.Bmp.BmpDecoderCore:ReadRgb24[SixLabors.ImageSharp.PixelFormats.Rgba32](SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgba32],int,int,ubyte):this (FullOpts)
         249 (36.94 % of base) : 32499.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (FullOpts)
         457 (33.63 % of base) : 15701.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)
         881 (32.50 % of base) : 15379.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockProgressiveAC(byref,byref):this (FullOpts)
        1209 (32.03 % of base) : 15551.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockBaseline(SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.JpegComponent,byref,byref,byref):this (FullOpts)
          89 (30.58 % of base) : 21338.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanMultiLineComment(byref):ubyte:this (FullOpts)
         561 (30.05 % of base) : 16135.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.ErrorDither:SixLabors.ImageSharp.Processing.Processors.Dithering.IDither.ApplyPaletteDither[SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor`1+DitherProcessor[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.PixelFormats.Rgba32](byref,SixLabors.ImageSharp.ImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle):this (FullOpts)
          58 (29.15 % of base) : 2178.dasm - System.String:Concat(System.String,System.String):System.String (FullOpts)
          58 (29.15 % of base) : 491.dasm - System.String:Concat(System.String,System.String):System.String (FullOpts)

Top method improvements (percentages):
         -56 (-27.45 % of base) : 18827.dasm - System.TimeZoneInfo:GetLocalTimeZoneFromWin32Data(byref,ubyte):System.TimeZoneInfo (FullOpts)
        -274 (-24.98 % of base) : 29821.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:CheckLocalRefEscape(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundLocal,uint,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
         -72 (-21.49 % of base) : 21308.dasm - Microsoft.CodeAnalysis.RealParser:AccumulateDecimalDigitsIntoBigInteger(Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString,uint,uint):System.Numerics.BigInteger (FullOpts)
         -39 (-18.22 % of base) : 30417.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:Microsoft.Cci.ITypeMemberReference.GetContainingType(Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.ITypeReference:this (FullOpts)
         -72 (-17.73 % of base) : 18440.dasm - System.Number:TryInt64ToHexStr[ushort](long,ushort,int,System.Span`1[ushort],byref):ubyte (FullOpts)
         -46 (-17.69 % of base) : 34316.dasm - System.Management.Automation.MshLog:CreateLogProvider(System.String):System.Collections.ObjectModel.Collection`1[System.Management.Automation.LogProvider] (FullOpts)
         -11 (-16.92 % of base) : 22457.dasm - System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
         -35 (-16.75 % of base) : 2702.dasm - System.Reflection.Emit.DynamicILGenerator:GetCallableMethod(System.Reflection.RuntimeModule,System.Reflection.Emit.DynamicMethod):this (FullOpts)
         -35 (-16.75 % of base) : 822.dasm - System.Reflection.Emit.DynamicILGenerator:GetCallableMethod(System.Reflection.RuntimeModule,System.Reflection.Emit.DynamicMethod):this (FullOpts)
          -8 (-14.81 % of base) : 25010.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,int):ubyte:this (FullOpts)
         -21 (-14.69 % of base) : 20018.dasm - Roslyn.Utilities.StringTable:AddSharedEntry(int,System.String):this (FullOpts)
         -17 (-14.41 % of base) : 2898.dasm - System.IO.Path:GetDirectoryName(System.String):System.String (FullOpts)
         -17 (-14.41 % of base) : 14861.dasm - System.IO.Path:GetDirectoryName(System.String):System.String (FullOpts)
         -35 (-13.94 % of base) : 20509.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseTypeCore>g__canBeNullableType|202_0(byref):ubyte:this (FullOpts)
         -20 (-13.89 % of base) : 26849.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
         -21 (-13.82 % of base) : 20072.dasm - Roslyn.Utilities.TextKeyedCache`1[System.__Canon]:AddSharedEntry(int,Roslyn.Utilities.TextKeyedCache`1+SharedEntryValue[System.__Canon]):this (FullOpts)
         -50 (-13.09 % of base) : 19179.dasm - System.Net.Http.Headers.NameValueHeaderValue:ToString(System.Net.Http.Headers.UnvalidatedObjectCollection`1[System.Net.Http.Headers.NameValueHeaderValue],ushort,ubyte,System.Text.StringBuilder) (FullOpts)
       -1030 (-12.60 % of base) : 8104.dasm - FSharp.Compiler.Lexer:singleQuoteString(FSharp.Compiler.IO.ByteBuffer,FSharp.Compiler.Lexhelp+LexerStringFinisher,FSharp.Compiler.Text.Range,FSharp.Compiler.ParseHelpers+LexerStringKind,FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
        -135 (-12.31 % of base) : 15484.dasm - SixLabors.ImageSharp.Benchmarks.Codecs.DecodeFilteredPng:ReadImages():this (FullOpts)
         -29 (-12.13 % of base) : 31884.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:InitializeFixedStatementLocal(Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration,Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)