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.Span
1[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.ReadOnlySpan
1[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.ValueTuple
3[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.ReadOnlySpan
1[ubyte],System.Span1[ushort],System.Func
2[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.ReadOnlySpan
1[int],System.Span1[System.__Canon],System.Func
2[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.Span
1[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.ValueTuple
3[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.Span
1[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.ReadOnlySpan
1[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.Memory
1[ubyte]]:Fill(System.ReadOnlySpan1[System.__Canon],System.Span
1[System.Memory1[ubyte]],System.Func
2[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.ImmutableDictionary
2+HashBucket[System.Canon,System.Canon]]:SetItem(int,System.Collections.Immutable.ImmutableDictionary2+HashBucket[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer
1[System.Collections.Immutable.ImmutableDictionary2+HashBucket[System.__Canon,System.__Canon]],byref,byref):System.Collections.Immutable.SortedInt32KeyNode
1[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.ReadOnlySpan
1[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.ReadOnlySpan
1[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.ReadOnlySpan
1[System.Canon],System.Span1[System.__Canon],System.Func
2[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.ReadOnlySpan
1[System.Canon],System.Span1[System.__Canon],System.Func
2[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.ReadOnlySpan
1[int],System.Span1[System.__Canon],System.Func
2[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.ReadOnlySpan
1[System.Canon],System.Span1[System.__Canon],System.Func
2[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.Span
1[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.ReadOnlySpan
1[System.Canon],System.Span1[System.__Canon],System.Func
2[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.ReadOnlySpan
1[System.Canon],System.Span1[System.__Canon],System.Func
2[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.ValueTuple
2[System.Canon,System.Canon]]:Fill(System.ReadOnlySpan1[System.__Canon],System.Span
1[System.ValueTuple2[System.__Canon,System.__Canon]],System.Func
2[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)